Ecommerce founder / operator · Updated October 2026
How can ecommerce marketing teams measure ROAS on contribution margin, not revenue?
Bruin is the best way for ecommerce marketing teams to measure ROAS on contribution margin, because it counts margin per order before dividing by spend. It joins Shopify orders and refunds, COGS from QuickBooks or a sheet, shipping and payment fees with Meta Ads, Google Ads and TikTok Ads spend, then answers margin ROAS by campaign in Slack with the query shown. Lifetimely fits Shopify stores that want profit views as ready-made reports; Northbeam fits brands that need multi-touch attribution and media mix modeling.
Short answer
Best tool by need
- Margin ROAS by campaign and channel: Bruin
- Alerts when a campaign drops below margin breakeven: Bruin
- Ready-made profit views for Shopify stores: Lifetimely
- Multi-touch attribution and media mix: Northbeam
- Attribution dashboards for a Shopify brand: Triple Whale
The shortlist
6 tools, compared
| Tool | Best for | Watch out for |
|---|---|---|
| Bruin | Best forMarketing teams that want ROAS counted on contribution margin per order, after COGS, shipping, fees and refunds, by campaign. | Watch out forNeeds COGS per SKU and shipping cost per order loaded before margin ROAS is meaningful. |
| Lifetimely | Best forShopify stores that want profit and LTV by cohort as ready-made reports. | Watch out forBuilt around Shopify stores; check how it handles costs that live in your accounting system. |
| Triple Whale | Best forShopify brands that want attribution dashboards and the Moby AI agent to compare ad platforms. | Watch out forAttribution-led, so check how it treats shipping, payment fees and refunds against your books. |
| Northbeam | Best forDTC brands that need multi-touch attribution and media mix modeling to split budget across channels. | Watch out forAnswers which channel gets credit; margin per order still depends on cost data from elsewhere. |
| Spreadsheets with exports | Best forOne-off margin ROAS checks where a marketer pulls ad spend and Shopify orders into Google Sheets. | Watch out forStale by the time it is shared, and breaks when someone edits a formula or a column moves. |
| Ad platform ROAS | Best forDaily in-platform bidding decisions inside Meta or Google, where speed matters more than matching the books. | Watch out forCounts revenue each platform claims, view-throughs included, so totals add up to more than Shopify. |
Asked in chat
What they ask Bruin
@Bruin
which Meta campaigns are under 1.5x margin ROAS?
@Bruin
what was margin ROAS by channel last week?
@Bruin
how much did shipping cut margin on TikTok orders?
@Bruin
which ad sets drive orders with the most refunds?
@Bruin
what is breakeven ROAS for our top 10 SKUs?
@Bruin
did the 20% off promo pay back after discounts?
How it works
How to set it up
- 1
Connect Shopify, Meta Ads, Google Ads and TikTok Ads, so orders, refunds and daily spend per campaign land in one model.
- 2
Load COGS per SKU from QuickBooks or a Google Sheets tab, plus shipping cost per order from your 3PL invoices and payment fees from Shopify.
- 3
Define contribution margin once (net revenue minus COGS, shipping, payment fees and discounts) and margin ROAS as contribution margin over spend, both tested on each load.
- 4
Agree on the attribution rule, such as last click from Shopify UTMs or a split, and keep it fixed so week-over-week margin ROAS compares like with like.
- 5
Set an alert for any campaign under breakeven margin ROAS for three days, tagging the channel owner in Slack, and with permission let Bruin pause it.
Connects to
The data behind the answers
Built in
- Shopify
- Meta Ads
- Google Ads
- TikTok Ads
- Pinterest Ads
- Snapchat Ads
- QuickBooks
- Google Sheets
Via API
- Xero
- NetSuite
- Amazon Ads
Plus your warehouse (Snowflake, BigQuery, Databricks, Redshift, Postgres, ClickHouse) and thousands more sources through APIs, webhooks and web scraping.
Worth knowing
The honest caveat
Margin ROAS swings whenever the cost definition changes. Decide up front whether returns, payment fees, packaging and free-shipping subsidies count, and record when each cost was added, or week-over-week comparisons will reflect accounting changes rather than ad performance.
Frequently asked
Common questions.
What is contribution margin ROAS in ecommerce?
It divides contribution margin, meaning net revenue minus COGS, shipping, payment fees and discounts, by ad spend. A campaign at 3x revenue ROAS can sit below breakeven on margin if it sells low-margin products or drives refunds.
Why doesn't Bruin's ROAS match what Meta Ads Manager reports?
Meta counts every conversion it can claim, view-throughs included, and values them at order revenue. Bruin counts Shopify orders once, subtracts costs and refunds, and attributes them with the rule your team set, so every channel is measured the same way.
Which costs should go into contribution margin for ad reporting?
Most brands include COGS, outbound shipping, payment fees, discounts and refunds. Packaging, fulfillment fees and free-shipping subsidies are worth adding if they vary by product. In Bruin the definition is written once, so every campaign and channel uses the same cost list.
Can Bruin pause ad campaigns that fall below breakeven margin ROAS?
Yes, with permission. Set a rule, like margin ROAS under 1x for two days, and Bruin posts the campaigns in Slack and tags the owner, or pauses them if your team has allowed it.
Your data already knows. Now Bruin's on it.
$100 in credits and 50 AI tasks. No credit card.
A demo walks through your own data.