MerchantFlowMerchantFlow Docs
Dashboard

Product Bundle Tracking and Allocation

Create product bundles in MerchantFlow to track revenue allocation and profitability across gift sets, starter kits, and subscription boxes.

Product Bundle Tracking and Allocation

Product bundles in MerchantFlow let you track gift sets, starter kits, subscription boxes, and other multi-product packages with automatic revenue and cost allocation. By distributing bundle revenue across component products, MerchantFlow gives you accurate profitability metrics for every item in your catalog -- even when products are sold together.

What Are Product Bundles?

A bundle is a product sold as a single item but containing multiple component products. Without bundle tracking, analytics show high revenue for the bundle SKU and zero revenue for the individual components inside it, leading to inaccurate product performance metrics.

Common bundle types include:

  • Gift sets -- holiday bundles with multiple items
  • Starter kits -- introductory product packages for new customers
  • Subscription boxes -- monthly curated collections
  • Value packs -- multi-item discount packages
  • Product combinations -- complementary products sold together

Why Track Bundles?

Without Bundle TrackingWith Bundle Tracking
High revenue on bundle SKU, zero on componentsRevenue allocated to each component
Inaccurate product performance metricsTrue performance of individual products
Cannot identify which products drive bundle salesAccurate profitability by product
Distorted product rankingsClear view of which components drive value

That is what the allocation engine is built to deliver. Read Current Limitations below before you plan around it -- today the split is only returned by the API on request, and the dashboard's own product and P&L views still credit the whole sale to the bundle SKU.

How to Access Bundle Management

Bundles live at /dashboard/bundles. There is no navigation entry for it - you reach it by typing or bookmarking the URL. The page is titled Product Bundles and is available on every plan with no feature flag.

The table lists every configured bundle with these columns:

ColumnContents
NameThe bundle's name
SKUThe bundle product's SKU
ComponentsThe number of component items
Allocation Methodproportional, fixed, or manual
StatusActive or Inactive
ActionsEdit and Delete

The page does not use the global timeframe selector.

Current Limitations You Should Know About

Before you plan around bundles, be aware of what the interface can and cannot do today:

  • You cannot create or edit a bundle from the dashboard. The Create Bundle button and each row's Edit link point at pages that do not exist and return a 404. Bundles are created and updated through the API (POST /api/bundles, PATCH /api/bundles/[id]).
  • Delete works from the table, with a confirmation modal.
  • The Status column is display-only. There is no toggle to activate or deactivate a bundle from the table.
  • Component allocation is an API result, not a stored figure. POST /api/bundles/allocate returns the split for a given bundle SKU and sale amount, but no allocated revenue or cost is written onto the component products. Product analytics and the P&L still credit the whole sale to the bundle SKU, and there is no per-product "revenue sources" breakdown showing direct versus bundle-allocated revenue.
  • Bundle-level performance does exist, in one place: open Profit → Markets and drill into a country to see a Most profitable bundles table with Bundle, Units, Orders, Revenue, Profit and Margin columns. It reads the bundle link stamped on order line items, not the allocation split.

If you need bundles configured, contact [email protected].

How a Bundle Is Defined

A bundle record consists of:

  • A name and a SKU matching a bundle product that already exists in your Shopify or WooCommerce store
  • A list of components, each with a SKU and a quantity, plus a fixed percentage or manual amount depending on the method
  • An allocation method: proportional, fixed, or manual
  • An active flag

Bundles cannot contain other bundles. Nesting is rejected on both create and update.

Understanding Allocation Methods

Revenue is distributed based on each component's cost of goods sold:

Component cost   = (unit cost + handling cost) x quantity
Total bundle cost = sum of all component costs
Percentage        = Component cost / Total bundle cost x 100
Allocated revenue = Bundle revenue x Percentage / 100
Allocated cost    = Component cost

Component costs come from your COGS entries; a component with no COGS entry contributes a cost of zero. If a component's cost is recorded in a different currency and the exchange rate for the sale date cannot be resolved, the allocation fails outright rather than silently treating the cost as zero.

Example: Holiday Gift Set sells for $100:

  • Face Cream: COGS $20, Qty 1 = $20 cost -> ($20 / $41) x $100 = $48.78 revenue
  • Vitamin C Serum: COGS $15, Qty 1 = $15 cost -> ($15 / $41) x $100 = $36.59 revenue
  • Travel Moisturizer: COGS $3, Qty 2 = $6 cost -> ($6 / $41) x $100 = $14.63 revenue

Best for: Bundles where components have different costs and you want fair allocation based on product value. Requires all components to have COGS defined.

Fixed Percentage

Each component gets a fixed percentage of bundle revenue that you define.

Example: Holiday Gift Set sells for $100:

  • Face Cream: 50% = $50
  • Vitamin C Serum: 30% = $30
  • Travel Moisturizer: 20% = $20

Percentages must sum to 100% (within a rounding tolerance). This is checked when the bundle is created but not re-checked when it is updated, so an edit can leave percentages that no longer add up. Component costs still come from COGS.

Best for: Marketing-driven bundles where you assign value based on product importance rather than cost.

Manual Allocation

You specify an exact dollar amount for each component.

Example: Holiday Gift Set sells for $100:

  • Face Cream: $55
  • Vitamin C Serum: $30
  • Travel Moisturizer: $15

Manual amounts are not validated against the bundle price - MerchantFlow will happily over- or under-allocate if the numbers do not add up, so check them yourself. Component costs still come from COGS.

Best for: Special bundles with strategic pricing. Manual allocations do not scale automatically if the bundle price changes.

How Allocation Is Applied

Allocation is calculated on demand by POST /api/bundles/allocate, for a given bundle SKU and sale amount. It is never stored. That has three consequences worth understanding:

  • Changing a bundle's allocation method or component list changes how every allocation is computed from that point on, including for past sales when they are recalculated. Nothing is "re-written" in place, because nothing was written in the first place.
  • Because nothing is written, no dashboard surface reads the split. Your product-level and P&L figures are unaffected by the allocation method you choose.
  • The allocation is only as good as your COGS coverage. See COGS Management.

The allocation response carries the bundle's total cost as the sum of its component costs, so bundle profit follows directly once component COGS are defined:

Bundle Cost   = Sum((Component unit cost + handling cost) x Qty)
Bundle Profit = Bundle Revenue - Bundle Cost

The Most profitable bundles table in the market drilldown works from order data instead, and does subtract ad spend and payment fees:

Bundle Profit = Bundle Revenue - COGS - Allocated ad spend - Payment fees

Common Bundle Use Cases

Use CaseRecommended AllocationReason
Gift setsProportional by COGSFair distribution based on product value
Starter kitsFixed PercentageEmphasize flagship products strategically
Subscription boxesSeparate bundle per monthContents change monthly
Value packs (identical items)Usually not neededSingle-product packs do not require allocation
Promotional bundlesProportional by COGS or FixedTrack which products drive bundle appeal

Best Practices for Bundle Management

  1. Define COGS first -- add COGS for all component products before creating bundles with proportional allocation. A component with no COGS entry is treated as costing zero and will receive no proportional revenue at all. See COGS Management.
  2. Use clear naming -- name bundles descriptively (e.g., "Holiday Gift Set 2026") rather than generically
  3. Match your store -- bundle products should exist in Shopify/WooCommerce with a unique SKU
  4. Review allocation quarterly -- verify component costs, bundle prices, and percentage splits remain accurate
  5. Monitor performance monthly -- track which bundles sell best and whether margins are healthy
  6. Document allocation logic -- add notes explaining why you chose each method
  7. Do not over-bundle -- only create bundle tracking for multi-product kits, not multi-packs of identical items

Troubleshooting Bundles

A Bundle Is Missing From the Markets Table

That table reads a bundle link stamped onto order line items at sync time. The link is only set when the bundle already exists and is Active at the moment the order syncs, so a bundle you created after its orders were synced starts out with nothing to show. Verify the bundle is Active and that its SKU matches the order line items exactly, then ask support to run the historical backfill (scripts/backfill-order-bundle-links.ts), which links every already-synced order whose SKU matches.

Proportional Allocation Returns Zero for a Component

That component has no COGS entry, so its cost is zero and its proportional share is zero. Add COGS for all bundle components at Profit > COGS.

Allocation Fails With a Currency Error

A component's COGS is recorded in a currency MerchantFlow could not convert for the sale date. Record the cost in your workspace currency, or retry once exchange rates are available.

Component Shows Negative Margin

The bundle may be priced too low relative to component COGS, or the allocation method may need adjustment. Consider switching to Fixed Percentage or Manual Allocation for strategic distribution.

Bundle Product Not Found

Verify the product exists in your Shopify or WooCommerce store and has synced to MerchantFlow. Each bundle SKU must be unique within your workspace.

Frequently Asked Questions

Can I create bundles that contain other bundles?

Multi-level bundles (bundles within bundles) are not currently supported. Use a flat structure that lists all individual component products directly.

What happens when I change a bundle's allocation method?

Allocations are computed on demand rather than stored, so from the moment you change the method every calculation - including for past orders - uses the new one. Nothing needs to be reprocessed, but be aware that historical figures will shift.

Can I create or edit bundles from the dashboard?

Not currently. The Create Bundle and Edit links on the Bundles page lead to pages that do not exist. Bundles are managed through the API, or by contacting support. Deleting from the table does work.

Do bundle allocations affect my P&L?

No. The allocation is returned by the API on request and is never persisted, so your P&L and product-level figures continue to credit the whole sale to the bundle SKU. Total revenue is unchanged either way.

How do I track bundle assembly costs like labor and packaging?

There is no dedicated assembly-cost field. Component costs do include a handling cost from each component's COGS entry, which is the closest hook available. Anything beyond that is best recorded as an expense.


Last updated: August 29, 2026

Last updated on

On this page