Gross Margin Is Not Contribution Margin - And the Difference Is Costing You
Most ecommerce brands use gross margin as their profit signal for Google Ads bidding. It's the number finance reports. It's the number everyone understands. And it's the wrong number - because it ignores the costs that determine whether an order actually makes money.
The Confusion That's Costing Thousands
Here's how the problem starts. Finance sends over a gross margin report. You see 60% gross margin on your best-selling category. You build a POAS model using that 60% as the profit signal. Smart Bidding optimises accordingly.
But that 60% doesn't include the £4.50 in picking and packing costs. It doesn't include the £5.80 in delivery. It doesn't include 2.9% payment processing. It doesn't include the 15% return rate that wipes out every fifth sale entirely.
When you subtract all of that, the real contribution margin is closer to 28%. You've been bidding as though each order is worth more than double what it actually contributes. And Smart Bidding has been spending accordingly.
What Gross Margin Actually Measures
Gross margin is simple: revenue minus cost of goods sold. It tells you the markup on the product itself. For a £50 item with £20 in COGS, gross margin is £30 - or 60%.
Gross margin is useful for procurement conversations. It tells you whether you're buying well. But it tells you nothing about whether selling that product - through a specific channel, at a specific acquisition cost - actually makes money.
The problem is that Google Ads doesn't care about your procurement efficiency. It cares about what you can afford to spend to acquire an order. And that's determined by contribution margin, not gross margin.
What Contribution Margin Reveals
Contribution margin starts where gross margin stops. It subtracts every variable cost attached to fulfilling and processing an order:
- Picking and packing - warehouse labour per order, typically £2-6
- Shipping - carrier costs, which vary by weight, size, and destination
- Payment processing - Stripe, PayPal, Klarna - all take 1.5-4.5%
- Platform fees - Shopify's transaction fee, app costs per order
- Expected returns - if 20% of orders come back, 20% of your margin disappears
- Packaging - branded boxes, tissue paper, inserts all cost money
When you subtract all of these from gross margin, you get the actual profit available to cover ad spend and fixed overheads. This is the number Smart Bidding needs.
What This Means for Your Bidding
If you're feeding gross margin into your POAS model, you're telling Google that each order has more profit headroom than it actually does. The consequences compound:
The cascading effect:
1. Gross margin says you have £30 of profit per order
2. Contribution margin says you have £14 of profit per order
3. Smart Bidding targets a 400% POAS based on the £30 figure
4. It bids up to £7.50 per conversion (£30 ÷ 4)
5. But the real break-even CPA is £14, meaning your max bid should be £3.50
6. Every order acquired between £3.50 and £7.50 CPA loses money
This is why accounts can show healthy ROAS and even positive POAS on a gross margin basis, while the P&L shows flat or declining profitability. The profit signal is wrong, so every bidding decision built on it is wrong too.
Worked Example: Fashion Brand at £40k/month Spend
A fashion brand spending £40k/month on Google Ads. Average order value £65. Gross margin 58%.
Gross margin calculation:
Revenue: £65.00
COGS: £27.30
Gross margin: £37.70 (58%)
Contribution margin calculation:
Revenue: £65.00
COGS: −£27.30
Pick & pack: −£3.80
Shipping: −£5.20
Payment processing (2.9%): −£1.89
Shopify transaction fee: −£0.65
Returns provision (28% rate): −£5.14
Packaging: −£1.20
Contribution margin: £19.82 (30.5%)
The difference is £17.88 per order. At 2,000 orders per month, that's £35,760 in phantom margin the bidding model assumes exists but doesn't. Over a year, it's £429,120 in mis-allocated spend decisions.
How to Fix It
The fix isn't complicated. It's uncomfortable, because it means acknowledging that your margins are lower than the number you've been reporting. But accuracy beats comfort.
- Map every variable cost per order - COGS, fulfilment, shipping, payment processing, platform fees, packaging, returns provision. If it varies with each order, it belongs in the calculation.
- Calculate contribution margin at SKU level - not category level. A heavy product with a 40% return rate has a completely different contribution margin to a lightweight product with 5% returns.
- Feed contribution margin into your bidding model - whether you're using custom labels, Merchant Centre profit signals, or manual POAS targets. The profit signal must reflect reality.
- Update quarterly - carrier rates change, platform fees change, return rates shift seasonally. A static margin model drifts from reality within months.
The immediate effect is usually lower bids and lower volume. The second-order effect is better profit per order, healthier cash flow, and a bidding model you can actually trust.
Next Steps
If you're spending £10k+ per month on Google Ads and using gross margin in your bidding model, you're likely overbidding on a significant portion of your catalogue. We can help you map contribution margin at SKU level and rebuild your bidding signals around reality.