Contribution margin
Kreel computes a read-time contribution margin for each product, using unit costs you provide or Shopify already has. This page covers what’s included, where the costs come from, and the coverage rule that decides whether a margin figure is trustworthy enough to show.
What’s in the number
Section titled “What’s in the number”Contribution margin is:
Net merchandise revenue, excluding tax and shipping, minus current-cost COGS, plus refunded COGS, minus an optional blended fulfillment cost.
A few things to hold onto here:
- It’s always ex-tax and ex-shipping, independent of your brand’s Revenue Basis setting - margin isn’t a lens on top of Revenue Basis, it’s a separate, fixed basis.
- It’s current-cost, not cost-at-sale: Kreel uses today’s unit cost against every window, past and present, so editing a cost restates every historical margin figure immediately, the same way Revenue Basis does.
- Refunds net back in, using their refund window and the product’s current unit cost, so a refunded unit doesn’t still count its original COGS against margin.
- Sold units respect order edits, the same post-edit accounting used everywhere else - see the line-item edit rules in Revenue accounting.
Where unit costs come from
Section titled “Where unit costs come from”Kreel resolves one unit cost per product (or per variant, when set) using this precedence:
- A manual variant override
- A manual product override
- Shopify’s own
inventoryItem.unitCost - Uncovered - no cost found anywhere
Owners and admins manage overrides on the Product costs settings page. Manual overrides are entered in each store’s own native currency; margin figures on the dashboard are converted to your brand’s base currency. A missing cost is never assumed to be free - it’s excluded from the covered portion of the catalog instead (see coverage, below).
Coverage: when a margin number is shown at all
Section titled “Coverage: when a margin number is shown at all”Every product and the catalog-wide summary carry a cost coverage figure - what share of sold revenue (before refunds) comes from products with a known cost.
- At 80% revenue coverage or higher, Kreel reports a margin number, shown alongside its coverage percentage.
- Below 80%, Kreel reports the coverage percentage only - never a margin number computed from an incomplete catalog.
- Zero sales in the window reports as “No sales,” not a coverage percentage or a margin.
Even a reported margin can still be missing some costs underneath it - always read the margin next to its coverage percentage, not on its own.
Fulfillment cost
Section titled “Fulfillment cost”An optional flat fulfillment cost per order, set in your brand’s base currency alongside Revenue Basis in Settings, applies only to the catalog-wide blended contribution margin figure. Per-product margin rows never include a fulfillment allocation. Payment processing fees, actual carrier costs, and a full P&L are outside this basis entirely.
Margin MER
Section titled “Margin MER”Margin MER is blended contribution margin divided by paid ad spend - the same ROAS-style ratio as MER, but with a margin numerator instead of a revenue numerator. It’s null when there’s no ad spend to divide by, or when margin itself isn’t reported because cost coverage is too low.
Where you see it
Section titled “Where you see it”Contribution margin surfaces on the Performance → Products tab: COGS, Margin, Margin %, and Cost coverage columns per product, plus a catalog-wide Cost coverage / Contribution margin / Margin MER summary line above the table. It is not currently shown on any other dashboard page.
Ask your agent
Section titled “Ask your agent”Your connected AI agent can query product- and variant-grain margin, and the catalog-wide summary, through the product_margin, variant_margin, and margin_summary query DSL tables - see the query tool.
Each response names the margin basis and cost basis explicitly, so an agent’s analysis states the same assumptions this page does.
Need help?
Section titled “Need help?”Email support@kreel.ai.