Skip to content
Profit and ROAS

Contribution Margin by Product: Find Which Products Pay for Their Ads

Store-level margin hides products that lose money once returns and ad spend are counted. How to calculate contribution margin per product and what to do with it.

Updated 5 min readBy Tera Ads editorial teamFacts checked

On this page
  1. Why store-level margin isn't enough
  2. A worked example
  3. Calculating it, step by step
  4. Allocating ad spend to products
  5. What to do with the results
  6. Watch total contribution, not just margin
  7. When a loss-maker is worth keeping
  8. Presenting it to your team
  9. Common mistakes
  10. Frequently asked questions

Contribution margin by product is what each product earns per kept order after its product cost, shipping and fees, its own return rate and the ad spend it takes to sell it. Store-level margin averages winners and losers together, so a best seller with high returns and expensive ads can quietly lose money while another product carries the business. Calculate it per product for a settled month, rank by total contribution, and shift ad budget and attention accordingly.

Key takeaways

  • Products differ in margin, shipping weight, return rate and ad cost, so their real profit differs far more than their gross margin suggests.
  • Contribution per kept order = price − product cost − shipping and fees − expected return cost − ad cost per kept order.
  • Allocate ad spend to products from product-level campaigns where possible, or by each campaign's product mix in Shopify orders.
  • Rank by total contribution, not just margin percentage; a lower-margin product that sells in volume can earn more.
  • A product that loses money after ads may still be worth keeping if it brings customers who repeat.

Why store-level margin isn't enough

Gross margin per product is easy to see in Shopify once cost per item is entered. It ignores the costs that differ most between products: how often each product is sent back, how heavy it is to ship, and how much ad spend it takes to sell. A product with a 70% gross margin can lose money if its ads are expensive and a third of its orders come back.

A worked example

Contribution margin per kept order for four products. All costs are per kept order; return cost assumes about $9 per return for A and $8 for the others. Illustrative numbers.
ProductPriceProduct, shipping, feesReturn cost (rate)Ad costContributionMargin
A$100$42$1.59 (15%)$30$26.4126%
B$40$17.50$2.67 (25%)$15$4.8312%
C$60$24$2 (20%)$26$813%
D$50$24.75$4.31 (35%)$22.50−$1.56−3%

Product D's product cost is only $19, a 62% gross margin, yet it loses $1.56 on every kept order once its high return rate and ad cost are counted.

Contribution per kept order for four products
Contribution per kept order for four products

Calculating it, step by step

  1. Pick a settled month, at least three weeks old, so most returns are in.
  2. Get price and cost per product from Shopify: net sales per unit and cost per item.
  3. Add shipping and fees per order for each product, from carrier invoices; heavier or fragile products cost more.
  4. Calculate returns by product. From Shopify refunds or your returns app, divide each product's returned orders by all its shipped orders. For multi-product orders, assign the order to its highest-value item. In cash-on-delivery markets such as India, add refused parcels (RTO) from your shipping platform.
  5. Allocate ad spend to products using the methods below.
  6. Calculate contribution per kept order and in total for each product.
Five steps to contribution margin by product
Five steps to contribution margin by product

Allocating ad spend to products

This is the hardest part, and there are three ways to do it, from best to roughest:

  • Product-level campaigns. If a campaign or ad set promotes one product, its spend belongs to that product.
  • Campaign product mix. For catalogue, Shopping and Performance Max campaigns, take the orders each campaign brought in Shopify, by UTM, and split its spend by each product's share of those orders' revenue.
  • Revenue share. As a fallback, split total ad spend by each product's share of total revenue. It's rough, because it assumes every product is equally expensive to sell.

Google's Shopping reports and Meta's catalogue reports can show spend or results by product for some campaign types; use them where available and check them against Shopify orders. RTO by campaign shows the same join for campaigns, orders and shipments.

What to do with the results

Scale the strong products. Products with high contribution and room to grow deserve more ad budget and better placement on your site.

Fix before cutting. A product that loses money because of high returns may need a better description, size guide or photos, not removal. One that loses money because of ad cost may need new creative.

Stop advertising the losers. If a product loses money after ads and doesn't bring customers who repeat, stop paying to sell it and let it sell organically.

Use strong products as the entry point. Lead ads with products that earn well on the first order, and let the rest sell through bundles and repeat purchases; increasing average order value covers bundles.

Watch total contribution, not just margin

A product with a 12% margin selling 1,000 orders a month earns $4,830 in the example above, more than a 26% margin product selling 150 orders. Rank products by total contribution first, then look at margin to see where improvement is possible.

When a loss-maker is worth keeping

Some products lose money on the first order but bring customers who repeat on higher-margin products. Check repeat behaviour for customers whose first order was each product, using Shopify's cohort report filtered by first-order product or your own export; cohort analysis on Shopify explains how. If D's buyers come back and buy A, D may be a good acquisition product at the right ad cost.

Presenting it to your team

Keep the product view to one table that anyone can read: product, kept orders, contribution per order, total contribution and the main reason for any loss, such as returns, ad cost or margin. Sort by total contribution. Add one line under the table with the decision for each product this month: scale, fix, hold or stop advertising. Next month, check whether each decision moved the number it was meant to.

Common mistakes

Using gross margin only. Returns and ad cost differ most between products.

Splitting ad spend evenly. Some products are much more expensive to sell.

Using an unsettled month. Returns by product need time to come in.

Ignoring order mix. Multi-item orders need a consistent rule for which product gets them.

Cutting products without checking repeats. Some loss-makers bring valuable customers.

Tera Ads shows Shopify sales, Meta Ads and Google Ads spend and your store's profit after returns on one screen, with every campaign in one table and the money-wasters marked, which is where a per-product view starts. It is free for one business.

Frequently asked questions

What is contribution margin by product?

What each product earns per kept order after product cost, shipping and fees, returns and ad spend.

How do I allocate ad spend to products?

Use product-level campaigns where possible, split catalogue campaigns by the product mix of their Shopify orders, and fall back to revenue share.

Why do returns matter at product level?

Return rates differ between products, and a high rate can turn a good gross margin into a loss.

Should I stop selling a product with negative contribution?

Stop advertising it unless its buyers repeat on profitable products. First try fixing returns, descriptions or creative.

How often should I review product margins?

Monthly, on the last settled month, and after any price, cost or campaign change.

See what your ads really earn.

Connect your store and ad accounts. Free for one business, no card needed.

Create free account