SKU Margin & Contribution Modelling

This use case explains how to model SKU level margin and contribution for eCommerce and direct to consumer brands in Model Reef.

You will:

  • Group products into SKUs or product families with clear economics.

  • Define selling price, discounts and unit cost per SKU.

  • Include fulfilment, shipping, payment fees and returns in contribution.

  • Roll SKU level results into channel, country and brand views.

Model Reef is not an order management or warehouse system. The focus is on planning level SKU economics that flow into P&L, cash and valuation.

When to use this pattern

Use this pattern when:

  • You sell multiple SKUs or bundles online or through direct channels.

  • You want to understand margin per SKU, per basket and per channel.

  • You need to test price changes, cost changes or mix shifts on margin.

  • You want to tie SKU economics directly into a full three statement model.

It is usually combined with:

  • Paid Ads CAC Forecasting

  • Inventory Purchases and Reorders

  • Multi Channel Revenue Forecasting

Architecture overview

You will build four layers:

1

SKU and product family structure

  • SKUs or families defined in the Data Library.

  • Price, cost and unit attributes per SKU.

2

Unit economics drivers

  • Selling price and discounts.

  • Unit cost, fulfilment, shipping and payment fees.

  • Returns and refund assumptions.

3

Volume drivers

  • Units sold per SKU by channel and period.

4

Outputs

  • Contribution margin per SKU and channel.

  • Aggregated margin by brand, channel and country.

  • Integration with full P&L and cashflow.

Step 1: Define SKUs and product families

Decide whether you will model at:

  • Individual SKU level (for example size and colour variants).

  • Product family level (for example product line or collection).

  • Bundle level (kits, subscription bundles).

In the Data Library, create entries such as:

  • SKU - Hoodie Classic.

  • SKU - Hoodie Premium.

  • SKU - T Shirt Basic.

  • Or product families such as Product Family - Hoodies if you want less granularity.

Include attributes as metadata or tags, for example:

  • Category (tops, bottoms, accessories).

  • Brand or collection.

  • Primary channel or region.

These entries will be reused across pricing, cost and volume drivers.

Step 2: Create selling price and discount drivers

For each SKU or product family, create drivers for:

  • List Price per Unit.

  • Average Discount Percentage.

  • Net Realised Price per Unit.

Net price can be computed as:

  • Net Price = List Price × (1 minus Discount Percentage).

Store these drivers as periodic series so you can:

  • Model promotional periods with deeper discounts.

  • Model annual price changes or repositioning.

You may also split price and discounts by channel if relevant, for example:

  • Net Price - Hoodie Classic - Direct Web.

  • Net Price - Hoodie Classic - Marketplace.

Step 3: Create unit cost and fulfilment drivers

Use BOM and Unit Cost Modelling if you manufacture your own products, or define unit cost directly if you purchase finished goods from suppliers.

For each SKU or product family, define drivers for:

  • Product Cost per Unit (ex factory or landed cost).

  • Fulfilment Cost per Order or per unit.

  • Shipping Cost per Order or per unit.

  • Payment Fees Percentage (for card, PayPal, BNPL, etc.).

  • Platform Fees for marketplaces.

In many cases it is helpful to separate:

  • Costs that scale with orders (pick, pack, ship, packaging).

  • Costs that scale with revenue (payment fees, platform commissions).

You can then create derived drivers such as:

  • Variable Cost per Unit = Product Cost per Unit plus Variable Fulfilment and Shipping per Unit plus Payment Fees per Unit.

Step 4: Model returns, refunds and failed payments

Returns are a major driver of economics for many D2C brands. For each SKU or product family, set drivers for:

  • Return Rate Percentage.

  • Refund Rate Percentage (some returns may not be refunded in full).

  • Resale Percentage for returned stock that can be resold.

Implement this using variables or drivers:

  • Effective units kept by customers:

    • Net Units Kept = Units Sold × (1 minus Return Rate).

  • Lost revenue due to refunds:

    • Refunds = Units Sold × Net Price × Refund Rate.

  • Recoverable cost of returned goods if they can be resold or refurbished.

These assumptions help you move from top line revenue to net contribution after returns.

Step 5: Define volume drivers per SKU and channel

Next, define units sold per SKU and channel. Options include:

  • Direct volume drivers per SKU and channel, for example:

    • Units Sold - Hoodie Classic - Direct Web.

    • Units Sold - Hoodie Classic - Marketplace.

  • Conversions from traffic and conversion drivers, in combination with Paid Ads CAC Forecasting and traffic from organic or other sources.

You can model volumes as:

  • Time series based on growth assumptions and seasonality.

  • Output of a funnel where traffic × conversion rate × basket composition produce unit volumes.

Store these as drivers or variables in the relevant channel branches so they feed both revenue and inventory planning.

Step 6: Build SKU level revenue, COGS and contribution variables

For each SKU and channel, create:

  • Revenue - SKU - Channel variables of type Revenue.

  • COGS - SKU - Channel variables of type COGS.

  • Optional Opex variables for SKU specific marketing or promotions.

Example formulas:

  • Revenue - Hoodie Classic - Direct Web = Units Sold - Hoodie Classic - Direct Web × Net Price per Unit - Hoodie Classic.

  • COGS - Hoodie Classic - Direct Web = Units Sold - Hoodie Classic - Direct Web × Product Cost per Unit - Hoodie Classic.

  • Add variables for variable fulfilment, shipping and payment fees if you want them visible as separate lines, or include them in COGS.

Define a Contribution Margin - SKU - Channel variable via custom formula as:

  • Contribution = Revenue minus COGS minus variable fulfilment, shipping and payment fees.

You can keep contribution as a derived metric (chart or report formula) rather than a separate variable if you prefer.

Step 7: Aggregate contribution by channel, brand and country

Use branch structure and categories to roll up SKU level results:

  • Branches per channel (for example Direct Web, Marketplace, Wholesale).

  • Sub branches per region or country if needed.

Create variables or report lines for:

  • Total contribution per channel.

  • Contribution per product family or brand.

  • Contribution per market.

Use dashboards to show:

  • Contribution per SKU, per channel and per order.

  • Contribution per customer or per cohort (when linked to CAC and retention models).

  • Mix shifts between high and low contribution SKUs or channels.

This allows you to see which SKUs and channels drive value and which are diluting margin.

Check your work

  • SKUs or product families reflect how the brand actually groups and reports products.

  • Selling price, discount and cost assumptions are grounded in real data.

  • Contribution patterns by SKU and channel look plausible compared to historical analysis.

  • Net revenue and COGS in the model reconcile broadly to recent financial statements when volumes and prices are calibrated.

Troubleshooting

chevron-rightSKU list is too long to managehashtag

Group low volume SKUs into product families or representative SKUs and only model top SKUs individually.

chevron-rightMargins look higher or lower than expectedhashtag

Check that all relevant variable costs have been captured, including fulfilment, shipping, payment fees and returns.

chevron-rightChannel results are difficult to interprethashtag

Ensure branch structure mirrors how the business thinks about channels and that SKUs are consistently mapped to channels.

Last updated