How orders are attributed to a bundle
Bundlex connects an order to a discount using information added by the widget to the cart items. It then calculates Added revenue from those purchases. Renaming a discount does not break that connection.
How an order is linked
Items added through the widget carry a private _bundlex property identifying the discount and the item's role in the purchase. Bundlex reads that information when Shopify sends the order. The older _bx_discount_id property is still recognised on historical orders, but it is not the format used for new widget purchases.
The widget adds these properties before checkout. They are not created by matching the discount name, so changing the name or checkout label does not change attribution. Items without a recognised Bundlex identity are not included as Bundlex purchase lines.
How Added revenue is calculated
For each purchase group, Bundlex calculates two parts and adds them together:
- Main purchase: the price after all discounts for the main items and required bundle products, minus one original-price unit. This part only counts when a Bundlex discount applied and cannot be negative. Full-price units beyond a strict quantity cap are excluded.
- Optional items: the price after all discounts for add-ons, extras, and gift-selector picks added through the widget. These count even when sold at full price. A free item contributes $0.
The baseline is one of the purchase's required units: the most expensive original-price unit that was not free. It never comes from an optional add-on or a full-price overflow unit. On a subscription purchase, the original price is the selling-plan price before the Bundlex discount.
Examples
| Purchase | Added revenue |
|---|---|
| Two $10 items for $18 | $18 minus $10 = $8 |
| The same pair plus a $6 full-price add-on | $8 plus $6 = $14 |
| Buy two $10 items, get a third free | $20 minus one $10 baseline = $10; the free item adds $0 |
| Three required bundle items, normally $25, $40 and $40, sold together for $60 | $60 minus the $40 baseline = $20 |
| One $10 item at full price plus a free gift | $0; a free gift does not itself create paid revenue |
| A $6 add-on sold for $5.40 in add-ons-only mode alongside an eligible main product | $5.40 from the add-on |
BOGO calculations use the qualifying purchase together, including the paid units. They do not rely on attributing revenue only to the free line or on the free item being a different variant.
Other discounts and excluded orders
Merchant codes and other discounts reduce what is counted because the calculation subtracts every discount allocated to the included lines. If another discount replaces Bundlex's discount, the main-purchase part is zero. Eligible optional items added through the widget can still contribute what the shopper paid.
Orders containing only recognized optional add-ons, extras, or gift-selector picks do not earn Added revenue. When other products remain in the order, verified optional items can still contribute what the shopper paid; this check does not require that their original qualifying main product is still present. Cancelled orders, fully refunded orders, and subscription renewals are excluded from Added revenue. Partial refunds do not currently reduce the calculation. Test orders are excluded on live stores.
Shipping and tax are not part of this calculation. Total revenue is a different metric: it uses the whole order total for orders that went through Bundlex. See the metric definitions.
Check the orders behind your number
Open Analytics, choose a date range and optionally a discount, then scroll to the Added revenue breakdown. It shows the order, discount, amounts counted, baseline, discounts, Added revenue, the part from add-ons, and any excluded overflow. An order can have several rows if it contains several purchase groups.
Use Export CSV in this breakdown to download its rows. The export is limited to 10,000 rows; narrow the date range for a larger history. It exports the breakdown, not every chart and table on the Analytics page.
Older orders
The September 2026 calculation update recounted the preceding 60 days of orders. Older orders keep their previous calculation and show a legacy indicator in the breakdown, with missing detail where it was not stored. All-time totals can therefore include both calculation versions.
Historical orders without a usable Bundlex identity cannot reliably be linked by their old discount names. If a recent order looks wrong, send support its Shopify order number and discount name so we can check the actual items and discounts.
Was this article helpful?
Your feedback helps us improve our docs.