NewWeather Demand Modelling is live. Forecast demand before it arrivesWeather Demand Modelling is live
Compare / Margin analytics vs revenue analytics: why optimising the top line quietly loses money
Category comparison

Margin analytics vs revenue analytics: why optimising the top line quietly loses money

Most ecommerce analytics tools optimise revenue and ROAS because that is the easiest number to pull from ad platforms. Margin-true analytics optimises CM3, the contribution margin that actually reaches the P&L. Here is what breaks when you confuse the two, with the formulas and worked examples.

There are two philosophies of ecommerce analytics, and most operators have never been told which one their stack belongs to. The first optimises the top line: gross attributed revenue, platform-reported ROAS, conversions claimed inside Meta and Google. The second optimises the bottom line: contribution margin after COGS, returns, discounts, fulfilment, fees and marketing. These produce different rankings, different budget decisions, and different answers to the only question that matters, which is whether an order made money. Revenue and ROAS analytics dominate because the data is cheap to plumb. Every ad platform hands you attributed revenue through an API, the number inflates well in a dashboard, and it requires nothing about your cost structure. But ROAS is gross-revenue-over-spend, computed on a figure that ignores COGS, returns, discounts, the pick-pack-ship, and the payment and platform fees. On a demonstrative D2C cost structure (45% of the order paid for the product, 15% of revenue lost to returns, 10% given away in discounts, plus fulfilment and fees), the dashboard can read 4x while the P&L shows the order lost money. This is a neutral, category-level comparison: revenue/ROAS analytics versus margin-true analytics. It explains why the default exists, what it leaves out, what breaks when you act on it, and what changes when every view is built on contribution margin first. Blufire is the margin-true option, but the categories are real regardless of vendor, and the formulas below are the same ones a CFO would use.

Who each is for

Blufire

Blufire is an Australian analytics platform for ecommerce and service businesses ($5M-$1B turnover), positioned as analytics built on profit, not revenue. Every view is built on true contribution margin (revenue minus COGS, shipping, returns, fees), and the platform computes the number then hands the operator the highest-value move with the dollar impact attached. It is not an ad-ops platform: no managed ads, creative or landing pages.

Revenue / ROAS tools

Revenue/ROAS analytics is a category, not a single vendor: the mainstream default in which the core metric is gross attributed revenue and platform-reported ROAS, sourced cheaply from ad-platform conversion APIs and Shopify last-touch. It optimises the top line because that is the easiest number to plumb. The category includes most dashboard and BI tools that report what the platforms report without recomputing on contribution margin.

Side by side

DimensionBlufireRevenue / ROAS tools
Core metricContribution margin (CM1 = Net Sales - COGS; CM2 = CM1 - fulfilment; CM3 = CM2 - marketing), the profit-true number that hits the P&LGross attributed revenue and ROAS (attributed revenue / ad spend), the top-line number platforms report by default
What gets optimisedCM3 per order, per SKU, per cohort, per channel; the move that adds the most contribution dollarsRevenue and ROAS targets; the campaign or SKU with the highest reported return, regardless of margin
Attribution stancePlatform-reported figures are framed as reported, not real; double-counting is surfaced and deduped to order-level truth, then contribution margin is attributed, never gross revenue from Shopify last-touchPlatform-reported conversions and last-touch credit treated as truth, summed across platforms, double-counting baked in
Data sources trustedOrder-level financial truth (net sales, COGS, returns, fees) plus blended business-level signals (MER, blended CAC), with incrementality and MMM as the causal layerAd-platform conversion APIs and Shopify last-touch acquisition channel, taken at face value
Revenue basisNet revenue after returns, refunds and discounts, so break-even ROAS is computed on the real numberGross revenue before returns and discounts, which inflates apparent ROAS because it is computed on the top-line figure rather than net revenue
Decision qualityRanks the order, SKU and channel that fund the business; flags the highest-value move with the dollar impact attachedCan rank the highest-ROAS order that contributes zero margin above the lower-ROAS order that funds payroll
Failure modeRequires real cost data (COGS, fees, fulfilment) to be wired in; richer to set upScales sub-break-even campaigns, crowds out profitable SKUs, and looks healthy in the dashboard while margin leaks into the P&L
Overhead capturedMER and blended CAC capture agency fees, content production and tool subscriptions that never appear in a channel dashboardPer-channel only; blended overhead is invisible, so channels can beat break-even ROAS while the business sits below it

Honest read

Where Blufire is stronger

  • Every view is built on TRUE contribution margin (revenue minus COGS, shipping, returns, fees), so the headline number is already P&L-true rather than a gross dashboard figure
  • Computes the number, then hands the operator the single highest-value move with the dollar impact attached, instead of presenting a metric and leaving interpretation to the user
  • Golden rule: never presents channel, CAC or attribution sourced from Shopify last-touch as truth; platform-reported figures are framed as reported, and double-counting is surfaced rather than summed
  • Margin-true by default: optimises CM3, the number that survives to the bottom line, where mainstream tools optimise the top line because it is the easiest to plumb
  • CFO-grade lexicon applied to operator decisions: CM1/CM2/CM3, MER, break-even ROAS, blended and new-customer CAC, LTV:CAC, CAC payback, iROAS, MMM
  • Quantifies dollar spend, dollar-credited contribution margin, CAC and LTV:CAC and lets the operator decide; no prescriptive reallocate or over-weight verdicts
  • Computes net revenue after returns, refunds and discounts before deriving break-even ROAS, so the threshold reflects the real cost structure

Where Revenue / ROAS tools still fit

  • Revenue and ROAS are cheap and fast to plumb: every ad platform exposes attributed revenue through an API with no cost data required
  • ROAS is a useful in-platform optimisation signal that the ad auction itself responds to, so it has a legitimate role inside campaign management
  • Platform-reported conversions arrive in near real time, faster than reconciled order-level financial truth
  • Revenue/ROAS dashboards are familiar to most marketing teams and require no COGS, fee or fulfilment data to stand up
  • For high-margin categories (70%+ gross margin), the gap between gross ROAS and contribution is smaller, so a revenue lens misleads less
  • Platform incrementality and lift tools (Meta, Google) and open-source MMM (Robyn, Meridian) extend the revenue-side stack toward causal measurement

Which should you choose

Choose Blufire if

  • You run a $5M-$1B ecommerce or service business where a few points of margin is a material P&L number
  • Your gross margin is below ~55%, so a celebrated ROAS can sit below break-even and lose money
  • You need the number a commercial team should actually be measured on (CM3), not a vanity dashboard figure
  • You want double-counting across Meta and Google surfaced and deduped, not summed into overstated demand
  • You want the highest-value move with a dollar impact attached, not a metric you have to interpret yourself
  • You need a CFO-grade view that captures agency fees, content and tooling in blended MER and CAC, not just per-channel ROAS

Choose Revenue / ROAS tools if

  • You only need an in-platform optimisation signal to feed the ad auction, and the P&L view lives elsewhere
  • You sell very high-margin digital products where the gross-to-contribution gap is small
  • You have no COGS, fee or fulfilment data wired in and cannot supply it
  • You need managed ad operations, creative or landing pages (Blufire is explicitly not an ad-ops platform)
  • You want real-time conversion pings for day-to-day campaign babysitting rather than reconciled financial truth

Questions

No. ROAS is a legitimate in-platform optimisation signal: the ad auction responds to it, and it is fine for steering bids day to day. The problem is using it as a profit metric. ROAS is attributed revenue over ad spend, computed on gross revenue before COGS, returns, discounts, fulfilment and fees, so it tells you nothing about whether an order made money. Use ROAS to optimise inside the platform; use contribution margin to decide whether to scale.
Break-even ROAS is the point where ad spend exactly recovers gross profit: break-even ROAS = 1 / gross margin %. At 55% margin it is 1.82x; at 40% it is 2.5x; at 25% (typical fashion or electronics) it is 4.0x; at 70% (digital) it is 1.43x. Any campaign below its break-even ROAS destroys value no matter what the dashboard shows. It is a floor you must clear, not a goal to celebrate: a '3x ROAS' at 25% margin is below break-even and loses money.
Because each platform measures something different. Meta counts click-through plus 1-day view-through plus modelled conversions; Shopify counts only completed checkouts. A 20-35% gap between Meta-reported purchases and Shopify orders is normal on the default 7-day click + 1-day view window, and the same sale is frequently claimed by both Meta and Google. Attribution window choice alone swings the number: moving Meta from 7-day click + 1-day view to 1-day click cuts reported conversions by about 40% with no change in actual sales. The reported number is an artefact of the measurement lens, not a fact.
A layered stack. Dedupe to order-level financial truth from your store for what actually sold, then use MER (total revenue / total marketing spend) and blended CAC at the business level to capture overhead the channel dashboards miss. For causality, use incrementality testing (iROAS, the revenue that would not have occurred absent the activity, measured against a counterfactual baseline) and marketing mix modeling (Meta's Robyn, Google's Meridian), which are privacy-safe and channel-agnostic. Google itself has deprecated rules-based attribution models (first-click, linear, time-decay, position-based), leaving only last-click and data-driven, a signal that simple last-touch is no longer the trusted default.
POAS (profit on ad spend) is gross profit or contribution margin generated divided by ad spend. It is a noted synonym for contribution-margin-based ad efficiency, the profitability upgrade to ROAS, not a separate framework. Blufire uses contribution margin (CM1/CM2/CM3) as the primary frame; POAS is just the per-ad-spend expression of the same profit-true idea.
In-platform bid optimisation: ROAS. Whether to scale a campaign: is it above break-even ROAS computed on net revenue? Whether an order, SKU or cohort made money: CM3. Whether the whole marketing engine is efficient: MER and blended CAC against break-even. Whether a channel is causally working: incrementality / iROAS and MMM. Whether a customer is worth acquiring: LTV:CAC and CAC payback (CAC / monthly contribution margin per customer). The mistake is using ROAS for all of them.
It computes CM1/CM2/CM3 first, then ranks decisions by contribution dollars instead of reported revenue. The order that looked best on ROAS may add zero to the bottom line; the SKU with the highest revenue may be crowding out a more profitable one; a campaign celebrated at 3x may be below break-even at your margin. Margin-true analytics surfaces that, attaches the dollar impact, and lets the operator decide, rather than optimising a top-line number that never reaches the P&L.