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.
On this page
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
| Product | Price | Product, shipping, fees | Return cost (rate) | Ad cost | Contribution | Margin |
|---|---|---|---|---|---|---|
| A | $100 | $42 | $1.59 (15%) | $30 | $26.41 | 26% |
| B | $40 | $17.50 | $2.67 (25%) | $15 | $4.83 | 12% |
| C | $60 | $24 | $2 (20%) | $26 | $8 | 13% |
| 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.

Calculating it, step by step
- Pick a settled month, at least three weeks old, so most returns are in.
- Get price and cost per product from Shopify: net sales per unit and cost per item.
- Add shipping and fees per order for each product, from carrier invoices; heavier or fragile products cost more.
- 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.
- Allocate ad spend to products using the methods below.
- Calculate contribution per kept order and in total for each 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.