Our Ecosystem
← Blog·CMO

How to Align Ecommerce Campaign Management With Contribution Margin

David Manela··11 min read
A worker at a grading bench on a packing line, directing produce into one of two crates.

The hard part is never the sorting. It’s choosing what to sort for.

Platform bidding optimizes toward whatever number you send it. Send revenue, and it will buy you revenue: the biggest baskets, the deepest discounts, the free shipping orders that arrive and then go back. The campaign is not misbehaving. It is doing exactly what it was told.

Aligning campaign management with contribution margin means changing the number. Calculate margin at the order level after cost of goods, payment fees, shipping, fulfilment and expected returns. Send that figure to Google and Meta as the conversion value. Then reconcile it monthly against the actual P&L. The rest of this page is how, what each platform requires, and the three ways the switch goes wrong.

Why ROAS and contribution margin disagree

ROAS divides revenue by ad spend. Contribution margin is what survives from that revenue once the variable costs of delivering the order are paid. The two agree only when margin is uniform across the catalogue, which it almost never is.

A 4x ROAS on a discounted bundle with free shipping and a 30% return rate can lose money on every order. A 2x ROAS on a high margin accessory with no returns can fund the business. Bid to revenue and the system will chase the first one, because it looks bigger.

ROAS is a channel metric. Contribution margin is a business one. Scaling is the moment the gap between them stops being academic.

Step 1. Get a margin number per order

Most ecommerce teams have a blended margin at the brand level and nothing at the order level. That is the real blocker, and it sits in finance and operations rather than in the ad account. At minimum, subtract from order revenue:

  • Cost of goods for every line item, including inbound freight and duty
  • Payment processing fees and marketplace or platform commissions
  • Outbound shipping and pick, pack and fulfilment cost, net of what the customer paid
  • Discounts and codes actually applied, not list price
  • Expected returns and refunds, by product and by channel, because return rates are not uniform

Returns are the one most teams skip, and the one that most often reverses the ranking. A product with a 25% return rate and a 40% gross margin contributes less than a product with a 30% gross margin and almost no returns.

Step 2. Send profit into Google Ads

Value-based bidding sets each bid from the predicted value of a conversion rather than the odds of getting one. Replace the transaction value in the conversion tag with the margin figure and Target ROAS starts optimizing toward profit.

What Google requires: at least 15 conversions in the last 30 days for Target ROAS, conversion delays under seven days, and two or more unique conversion values so the system has something to discriminate between. Before switching, Google's help documentation recommends three weeks or one to two conversion cycles of sending the new values, and a separate best practice page says four weeks or three cycles. Judge the outcome over at least 50 conversions with meaningful, varied values.

Conversion value rules sit on top, adjusting value by audience, location or device, and they feed Smart Bidding in real time rather than only changing reports. Two caveats worth knowing. Google's own page on the feature contradicts itself about Travel campaign compatibility, so confirm before relying on either statement. And Smart Bidding already reads geography, device and first-party audience signals, so a rule that simply restates a pattern already visible in your data adds little.

Two 2026 changes to keep in view. On 22 October 2026 percentage multipliers for new customer value became generally available, from 1.1x to 5x, so a $100 first purchase can be counted as $120 at 1.2x. Google has not stated whether these apply inside the auction, to reported value, or both, which matters if you are trying to reconcile platform numbers to finance. And since 17 August 2026, budget-limited Target CPA and Target ROAS campaigns that were beating their targets have been pulled back toward them, an argument covered in detail by PPC Land, which reads the change as turning the target into a floor.

Step 3. Send profit into Meta

Meta has a named feature for this: value optimization for profit, which optimizes delivery toward the profit of a conversion rather than its revenue. There are four ways to send the number.

  1. In real time, in the net_revenue field on the Purchase event, through the Conversions API or the Pixel
  2. Through a Google Tag Manager variable holding the profit value, passed into the Conversions API Purchase event
  3. Per product, in the estimated_margin field of the product catalogue, which requires Advantage+ catalogue ads. Meta then sums product profit per purchase and the Purchase payload does not change
  4. Through a Conversions API partner, if yours supports it. Confirm rather than assume

What Meta requires: at least three distinct positive profit values, at least 100 conversions over one week, and a website conversion location. It recommends at least 30 daily conversions per campaign where possible. Purchase value and profit must share the same currency code, and values may be scaled by a constant as long as relative profit between products is preserved. At the ad set level, select Profit as the conversion value with the performance goal set to maximize value of conversions on the Purchase event. Reporting then gives you a Profit column and a profit ROAS.

One instruction is easy to miss and expensive to get wrong: do not hold the Purchase event back while you wait for a profit value to be calculated. If profit cannot be produced in real time, send the event without it.

Step 4. Expect the first few weeks to look worse

When the target changes from revenue to profit, the system stops buying large low margin orders. Reported revenue falls. Reported ROAS falls with it. Volume may fall too. None of that is a malfunction, and all of it will be raised in the first review.

Settle this before the switch, not after. Agree with finance in writing which number the campaign is judged on, over what window, and what result would cause you to revert. Then hold the test for a full learning period rather than intervening in week two, which destroys the comparison you were trying to make.

Step 5. Reconcile to the P&L every month

Platform profit is an estimate built from the cost data you supplied. The P&L is what happened. Once a month, compare the margin the platforms reported against the margin finance recorded, and investigate the gap rather than explaining it away. The usual culprits are stale cost of goods, return rates applied as a blended average, and shipping subsidies that never made it into the feed.

This reconciliation is what turns margin bidding from a tactic into a system. Without it, the campaign is optimizing confidently toward a number nobody has checked.

Three ways this goes wrong

Your margin is a flat percentage

Meta is blunt about this: profit must not be a fixed percentage of purchase value, because there should be real variation between the two. If every order carries the same margin rate, ranking by profit gives the identical ranking to revenue and nothing changes. Check the spread across your catalogue before building anything. If it is narrow, the money is in returns, shipping thresholds, discount policy and retention, not in the bidding layer.

The cost data goes stale

Stale margin data is worse than none, because it teaches the system a product mix that no longer exists. Google recommends daily uploads for offline and proxy values. Build the feed so cost of goods, freight and return rates refresh on the same cadence your merchandising changes, and alert on it when it stops.

Margin optimization quietly becomes retention avoidance

First-order margin is not lifetime value. A product with thin first-order margin can be the best acquisition product you have if the customers who buy it come back. Optimizing hard on first-order profit will systematically starve it. The fix is to feed predicted lifetime value rather than first-order margin once you can model it credibly, or at minimum to carve out acquisition campaigns and judge them on cohort payback instead.

What good looks like

Margin is calculated per order and refreshed daily. Google and Meta both receive it. Finance and marketing read the same contribution margin number from one source of truth. Spend scales only where that number holds, and someone owns the decision to stop when it does not.

That last part is the one that cannot be bought from a platform. Growth is not a marketing problem. It is a capital allocation system, and contribution margin is how the system keeps score.

A note on sources: platform requirements here are taken from Google Ads help documentation, Meta's Conversions API developer documentation on value optimization for profit, and PPC Land's reporting on 2025 and 2026 bidding changes, all checked in November 2026. Platform rules change often. Verify thresholds in your own account before building to them.

Tags:contribution marginecommercevalue-based biddingGoogle AdsMeta Adsprofit optimizationROASunit economics
D

David Manela

David Manela is the founder of Exactius and creator of the Growth Operating System — a framework for deploying capital-efficient, compounding growth inside scaling companies.

FAQ

Frequently asked

How do ecommerce brands scale profitably without killing margin?

By bidding to contribution margin instead of revenue. Platform bidding optimizes toward whatever value you send it, so a campaign fed revenue will buy the highest revenue orders rather than the most profitable ones. Calculate margin at the order level after cost of goods, payment fees, shipping, fulfilment and expected returns, send that figure as the conversion value in Google Ads and as profit in Meta, then reconcile monthly against the actual P&L. The constraint is real variation: if margin is a flat percentage of revenue across your catalogue, profit bidding gives the same answer as revenue bidding.

What is the difference between ROAS and contribution margin?

ROAS divides revenue by ad spend. Contribution margin is what remains from that revenue after the variable costs of delivering the order: cost of goods, payment processing, shipping, fulfilment, discounts and returns. The two disagree whenever margin varies across products. A 4x ROAS on a heavily discounted bundle with free shipping can lose money, while a 2x ROAS on a high margin item funds the business. ROAS is a channel metric. Contribution margin is a business one.

What does Google Ads need before I switch to margin-based conversion values?

Google states that Target ROAS needs at least 15 conversions in the last 30 days and conversion delays under seven days. Value bidding also needs two or more unique conversion values to have anything to optimize between. Before switching strategies, Google's help documentation recommends three weeks or one to two conversion cycles of sending the new values, while a separate best practice page says four weeks or three cycles. Evaluate the result over at least 50 conversions with meaningful, varied values.

What does Meta require for value optimization for profit?

Meta's documentation lists at least three distinct positive profit values, at least 100 conversions over one week, and a website conversion location, and recommends at least 30 daily conversions per campaign where possible. Profit is sent through the net_revenue field on the Purchase event via the Conversions API or Pixel, through a Google Tag Manager variable, or as per-product estimated_margin in a product catalogue, which requires Advantage+ catalogue ads. Purchase value and profit must use the same currency code.

What if my margin is roughly the same percentage on everything?

Then profit bidding will not help you, and Meta says so explicitly: profit must not be a fixed percentage of purchase value, because there should be real variation between the two. If every order carries the same margin rate, ranking orders by profit produces the same ranking as revenue, and the algorithm has nothing new to learn. In that situation the gains sit elsewhere: in returns, shipping thresholds, discount policy and retention, not in the bidding layer.

Will my ROAS get worse when I switch to margin-based bidding?

Usually yes, and that is the expected result rather than a failure. Revenue optimized campaigns buy revenue. When the target changes to profit, the system stops chasing large low margin orders, reported revenue falls, and reported ROAS falls with it. The number that should improve is profit, visible in Meta's profit ROAS column and in your own contribution margin reporting. Agree with finance in advance which number the campaign will be judged on, because the first month will look worse on the old one.

How often should margin data be refreshed in the ad platforms?

Daily, where the platform allows it. Google recommends daily uploads for offline and proxy values, and stale margin data is worse than no margin data because it teaches the system a product mix that no longer exists. Build the feed so cost of goods, shipping cost and return rates update on the same schedule your merchandising changes. If a value cannot be computed in real time, Meta's guidance is to send the Purchase event without it rather than delay the event.

Related Reading

Keep going

Ready to fix the system?

Your growth system is either compounding or degrading.

Book a diagnostic call. We'll identify where your growth system is breaking and what it's costing you.

Book a call← More articles