
Β© 2025 Onward. All rights reserved.
Designed by BX Studio

Contribution margin by channel is the revenue a channel's orders actually produced, minus the variable costs of fulfilling those orders, minus what you spent on that channel's ads. The formula is the same for Meta, Google, and Amazon. What changes is where the revenue comes from, which costs apply, and how much you can trust the platform's attribution. Getting those inputs right is what turns a ROAS report into a profit report.
Contribution margin by channel measures how much profit each advertising channel contributes after variable costs and ad spend, before fixed costs such as salaries and rent. It answers a simple question: if you spent one more dollar here, would the business keep any of it?
That question is why teams running margin-focused paid media use channel contribution margin as the budget signal instead of platform ROAS. ROAS tells you revenue per ad dollar. Contribution margin tells you what is left after the product ships and the fees are paid.

For any channel, over a defined period:
If you need a refresher on which costs belong in each line, start with the contribution margin formula. The sections below focus on what is different for each channel.
For Meta, calculate contribution margin from the backend orders Meta actually drove, not from the revenue Meta Ads Manager reports. Meta's attribution can include view-through conversions and can count the same order that Google also claims, so platform revenue usually runs higher than what your store recorded.
In practice, match orders to Meta using UTMs and order IDs in your ecommerce platform, then pull each order's real costs: product cost by SKU, shipping, payment processing, and any later return. Meta also tends to skew toward new customers, so it helps to split new and returning buyers. A Meta campaign with thin first-order margin can still be worth funding if those customers come back, but that is a lifetime value decision, and it should be made on purpose.
Hypothetical example: Meta reports $150,000 in revenue on $40,000 of spend. Backend orders matched to Meta total $120,000. After $42,000 in COGS, $9,000 in shipping, $3,600 in payment fees, and $8,000 in returns, Meta's contribution margin is $17,400.
Google's calculation works like Meta's because Google Ads also sends shoppers to your site, but the biggest adjustment is branded search. People who type your brand name were often going to buy anyway, so branded campaigns can make Google look far more profitable than its incremental contribution.
Report Google in at least two buckets: branded search and everything else (non-brand search, Shopping, Performance Max). Performance Max can also serve branded queries, so check its search terms before assuming it is pure prospecting.
Hypothetical example: Google drives $110,000 in backend revenue on $30,000 of spend. After $38,500 in COGS, $8,000 in shipping, $3,300 in payment fees, and $6,000 in returns, contribution margin is $24,200. But if $45,000 of that revenue came from branded search, the non-brand campaigns are carrying much less of the profit than the total suggests.
Amazon needs a different cost stack because the sale happens on Amazon's marketplace, not your store. Instead of payment processing and your own shipping, you pay Amazon a referral fee on each sale and, if you use Fulfillment by Amazon, per-unit fulfillment fees plus storage. Referral fee rates vary by product category, and Amazon updates its fee schedule periodically, so pull current rates from Seller Central rather than using a rule of thumb.
Attribution is the other challenge. Amazon Ads reports ad-attributed sales, but sponsored ads also lift organic rank, and some attributed shoppers would have found the product anyway. Use settlement reports for actual fees and returns, and compare ad-attributed sales to total sales over time to see how much demand the ads are really adding.
Hypothetical example: Amazon Ads reports $100,000 in sales on $25,000 of spend. Assuming a 15% referral fee ($15,000), $12,000 in FBA fees, $1,500 in storage, $35,000 in COGS, and $4,000 in returns, Amazon's contribution margin is $7,500.
Using backend revenue for Meta and Google and ad-attributed sales for Amazon, the hypothetical channels rank this way on ROAS: Amazon at 4.0, Google at 3.7, and Meta at 3.0. On contribution margin, the order flips: Google produces $24,200, Meta $17,400, and Amazon $7,500. The marketplace fees that never show up in a ROAS report absorb most of Amazon's advantage.
That reversal is the whole case for this work. As covered in contribution margin vs. ROAS, a budget plan built on ROAS alone would move money toward the channel that keeps the least.
Onward connects ad platforms, ecommerce, marketplace, and cost data in a marketing data warehouse, applies SKU-level costs and channel-specific fees, and reports contribution margin by channel, campaign, and creative. The media team then uses those numbers to move budget.
That setup can go deep. Songfinch, for example, reached 99%+ backend reconciliation against Stripe and contribution-margin visibility down to the ad set, as shown in the Songfinch single source of truth case study.

For 500 LEVEL, a DTC licensed sports apparel brand, optimizing paid acquisition to profit rather than platform ROAS supported 156% year-over-year revenue growth and new customers rising from about 6,900 to 19,000. The details are in how 500 LEVEL grew revenue 156%.
Calculating contribution margin by channel is not complicated math. The hard part is the inputs: backend orders instead of platform revenue, SKU-level costs instead of averages, and the right fee stack for each channel. Once those are in place, Meta, Google, and Amazon can be compared on the same terms, and budget can follow profit.
If you want to see what your channels look like on contribution margin, schedule a free audit with Onward.