MerchantFlowMerchantFlow Docs
FAQ

Bundle Management FAQ

Frequently asked questions about product bundles in MerchantFlow including revenue allocation methods, profitability tracking, and component product analytics.

Bundle Management FAQ

Bundle management in MerchantFlow lets you track product bundles, gift sets, and kits by allocating bundle revenue to individual component products. This FAQ covers common questions about creating bundles, choosing allocation methods, calculating profitability, and managing component products.

General Questions

What types of bundles can I create?

MerchantFlow supports any type of product bundle where one SKU contains multiple component products:

  • Gift sets (multiple full-size products)
  • Starter kits (introduction packages)
  • Subscription boxes (curated monthly boxes)
  • Value packs (discounted multi-item packages)
  • Product combinations (complementary items)
  • Sample sets (multiple product variants)

Key requirement: The bundle must be sold as a single SKU in your store (Shopify or WooCommerce).

Do I need to track bundles?

You should track bundles if:

  • The bundle contains different products (not just multiples of the same item)
  • You want to understand which components drive bundle sales
  • You need accurate profitability for individual products
  • You want to see component product performance

You do not need to track bundles if:

  • The "bundle" is just multiple units of the same product (e.g., "3-Pack of Soap")
  • All components are identical
  • You do not need component-level analytics

How does revenue allocation work?

Revenue allocation distributes bundle sales revenue across component products.

Example: Holiday Gift Set sells for $100, contains:

  • Face Cream (COGS $20)
  • Serum (COGS $15)
  • Moisturizer (COGS $5)

With Proportional by COGS allocation:

  • Face Cream gets: ($20/$40) x $100 = $50
  • Serum gets: ($15/$40) x $100 = $37.50
  • Moisturizer gets: ($5/$40) x $100 = $12.50

That split is what POST /api/bundles/allocate returns for the sale. It is calculated on request and not saved, so the components' own analytics do not change -- see How do I see a product's bundle-attributed revenue? below.

Revenue Allocation Methods

Which allocation method should I use?

Proportional by COGS (Recommended):

  • Best for most bundles
  • Use when components have different costs
  • Fair value-based distribution
  • Requirement: all components must have COGS configured

Fixed Percentage:

  • Best for marketing-driven bundles
  • Use when you want specific revenue targets per product
  • Example: give 50% to flagship product regardless of cost
  • Requirement: the percentages across all components must sum to 100%

Manual Allocation:

  • Best for special cases with strategic pricing
  • Use when dollar amounts make more sense than percentages
  • Disadvantage: must update if bundle price changes

What happens if I do not have COGS for components?

A component with no COGS entry is treated as having a zero cost. Under Proportional by COGS that means it receives 0% of the bundle revenue, and the components that do have costs absorb all of it. If no component has a cost at all, every allocation comes out at 0%. Solutions:

  1. Add COGS (recommended) at Profit > COGS
  2. Use Fixed Percentage -- manually set percentages for each component
  3. Use Manual Allocation -- set dollar amounts for each component

Which cost is used for each component?

MerchantFlow looks up the component SKU's cost as of the sale date, so historical bundle sales use the cost that was effective at the time. The unit cost is the product cost plus its handling cost.

If a component's cost is recorded in a currency other than your workspace currency, MerchantFlow converts it at the sale-day exchange rate. If that rate cannot be resolved, allocation for the bundle is blocked rather than silently treating the component as free -- that would redistribute revenue and understate total COGS.

Can I change the allocation method after creating a bundle?

Yes, through PATCH /api/bundles/[id]. Nothing needs reprocessing: allocations are computed on demand rather than stored, so every call made after the change -- including for a sale from last year -- uses the new method. No product metric moves as a result, because the split is not written onto the component products in the first place.

How are bundle discounts handled?

Allocation always works from the actual revenue of the sale, not the list price. Under Proportional by COGS and Fixed Percentage, a discounted bundle simply produces smaller allocations for every component, so the discount is spread across them automatically.

Manual Allocation is the exception. Because it assigns fixed dollar amounts per component, those amounts do not shrink when the bundle sells at a discount. If you use manual allocation, update the amounts whenever the bundle price changes.

Bundle Profitability

How is bundle profitability calculated?

Allocation returns the bundle's total cost as the sum of every component's cost at the sale date:

Bundle Cost   = Sum(Component Unit Cost x Qty)
Bundle Profit = Bundle Revenue - Bundle Cost
Bundle Margin % = (Bundle Profit / Bundle Revenue) x 100

Example: Holiday Set sells for $100:

  • Component costs: $30 + $20 + $10 = $60
  • Profit: $100 - $60 = $40
  • Margin: 40%

Note that this is the figure the allocation endpoint returns to whoever called it. It is not written anywhere, so ad spend, fees and other P&L costs continue to be charged against the bundle SKU's own orders rather than against the components.

How do I model a bundle before I launch it?

Use the Bundle Margin calculator at Dashboard > Tools. It lets you enter component prices, COGS, and quantities alongside a bundle price, shipping, and payment-fee percentage, and shows the resulting margin -- useful for pricing a bundle before you create it.

Why is my bundle showing negative margin?

Possible causes:

  1. Bundle priced below total component costs
  2. Component COGS values are too high or incorrect
  3. A component's cost is missing, so cost is understated in one place and overstated in another
  4. Allocation method does not reflect actual costs

Action: Review pricing, audit COGS values against supplier invoices, and check ROAS for bundle campaigns.

How do I review my bundles?

Open /dashboard/bundles directly -- there is no navigation entry for it. The table lists each bundle's name, SKU, component count, allocation method, and active/inactive status. For profitability, open Profit → Markets and drill into a country: the Most profitable bundles table there ranks your bundles by profit, with units, orders, revenue and margin.

Component Products

Can the same product be in multiple bundles?

Yes. A product can be a component in as many bundles as you want -- nothing in the data model prevents it. Each bundle allocates independently, using its own method, whenever its allocation is requested.

How do I see a product's bundle-attributed revenue?

You cannot today. Bundle allocation is returned by POST /api/bundles/allocate on request and is never written onto the component products, so a component's figures on Products > Performance and in the P&L show only its own direct sales. The bundle sale stays credited to the bundle SKU.

Will bundle tracking affect my historical data?

No. Creating a bundle or changing its allocation method reprocesses nothing and rewrites no revenue, because the allocation was never stored. Your historical product and P&L figures are unchanged.

Creating a bundle does change one thing going forward: from that point on, orders containing the bundle SKU are linked to the bundle as they sync, which is what feeds the Most profitable bundles table in the market drilldown. Already-synced orders need a support-run backfill to pick up the link.

Technical Questions

Does bundle tracking work with all e-commerce platforms?

Yes, as long as the platform is supported by MerchantFlow (Shopify or WooCommerce) and the bundle product has a unique SKU.

Can I export bundle performance data?

Not from the Bundles table, and not from the Most profitable bundles table in the market drilldown either -- neither has an export button. Pull the numbers through GET /api/bundles and GET /api/markets/[country]/variants, which returns the same bundle rows the drilldown renders.

How often does bundle data update?

The bundle link on order line items is stamped as orders sync, so the Most profitable bundles table moves with your sync cycle. Component allocation is not on a schedule at all -- POST /api/bundles/allocate computes it fresh each time it is called.

Frequently Asked Questions

Can I have bundles within bundles?

Not currently supported. MerchantFlow validates components when a bundle is created or updated and rejects the change if any component is itself a bundle. Create a flat bundle structure with all individual component products listed directly.

How many bundles can I create?

No limit on the number of bundles. For most stores (fewer than 100 bundles), there is no performance impact.

What happens when I delete a bundle?

Deleting is permanent -- the bundle row is removed, not archived, and the confirmation modal says so. Every order line item that pointed at it has its bundle link cleared, so the bundle disappears from the Most profitable bundles table. No revenue or cost figure changes, because none was ever attributed to the components.

Alternative: set isActive: false through PATCH /api/bundles/[id] instead. The bundle stops being linked to newly synced orders but keeps its existing links, so its history stays visible. There is no deactivate control in the dashboard.


Last updated: August 29, 2026

Last updated on

On this page