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 Tracking | With Bundle Tracking |
|---|---|
| High revenue on bundle SKU, zero on components | Revenue allocated to each component |
| Inaccurate product performance metrics | True performance of individual products |
| Cannot identify which products drive bundle sales | Accurate profitability by product |
| Distorted product rankings | Clear 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:
| Column | Contents |
|---|---|
| Name | The bundle's name |
| SKU | The bundle product's SKU |
| Components | The number of component items |
| Allocation Method | proportional, fixed, or manual |
| Status | Active or Inactive |
| Actions | Edit 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/allocatereturns 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, ormanual - An active flag
Bundles cannot contain other bundles. Nesting is rejected on both create and update.
Understanding Allocation Methods
Proportional by COGS (Recommended)
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 costComponent 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 CostThe 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 feesCommon Bundle Use Cases
| Use Case | Recommended Allocation | Reason |
|---|---|---|
| Gift sets | Proportional by COGS | Fair distribution based on product value |
| Starter kits | Fixed Percentage | Emphasize flagship products strategically |
| Subscription boxes | Separate bundle per month | Contents change monthly |
| Value packs (identical items) | Usually not needed | Single-product packs do not require allocation |
| Promotional bundles | Proportional by COGS or Fixed | Track which products drive bundle appeal |
Best Practices for Bundle Management
- 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.
- Use clear naming -- name bundles descriptively (e.g., "Holiday Gift Set 2026") rather than generically
- Match your store -- bundle products should exist in Shopify/WooCommerce with a unique SKU
- Review allocation quarterly -- verify component costs, bundle prices, and percentage splits remain accurate
- Monitor performance monthly -- track which bundles sell best and whether margins are healthy
- Document allocation logic -- add notes explaining why you chose each method
- 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.
Related Guides
- COGS Management -- define component costs
- Product Details -- view product-level bundle impact
- P&L Overview -- track bundle profitability
- Expenses -- understand how bundle costs flow into operating results
- Bundle FAQ -- common bundle setup and reporting questions
Last updated: August 29, 2026
Last updated on
Supplier Portal - Restricted Supplier Access
Give a supplier limited access to MerchantFlow so they can see units sold, unit costs, and what is billable to them, without exposing your revenue, margins, or customer data.
E-Commerce Expense Tracking
Track OPEX, CAPEX, and recurring costs in MerchantFlow. Spread costs across their real period, amortise capital purchases, and export data for tax prep.