blog/ecommerce-reporting-contribution-margin-not-roas

Company Logo

E-commerce reporting on contribution margin, not ROAS

Return on ad spend flatters campaigns and hides losses. The daily report — revenue, returns, COGS, shipping, payment fees, ad spend — that shows what each channel actually contributes, built automatically from the store, the ads and the ledger.

25 Feb 2026 · 2 min read · by HeiSyn

Return on ad spend is the number the ad platforms report, and it is the number that makes a losing campaign look like a winning one. It ignores returns, cost of goods, shipping, payment fees and discounts. A brand can scale a campaign with a great ROAS straight into a cash crisis. The number that matters is contribution after all of those, by channel, by day.

The ingredients

Gross revenue by order and source from the store. Returns and refunds, netted off when they happen. Cost of goods per SKU from the catalogue or the ERP. Shipping cost per order from the courier. Payment processing fees. Discounts applied. Ad spend by platform and campaign. Every one of these exists in a system with an API.

The calculation

Per order: revenue minus discounts minus refunds minus COGS minus shipping minus fees. Summed by source and by day, with ad spend for that source subtracted, gives contribution after marketing. Divide by orders for contribution per order; compare with acquisition cost for payback.

Automate it daily

A scheduled job pulls each source, joins on order ID and SKU, computes the contribution and posts the day's figures by channel to a dashboard and a morning message. Returns arriving later revise earlier days; the report shows the revision.

Decide with it

Campaigns with high ROAS and negative contribution are stopped or repriced. Products with high return rates are investigated. Channels with strong contribution get more budget. Discounts that do not lift contribution are ended. The daily number replaces the monthly argument about whether marketing is working.

Questions people ask next

Where do we get cost of goods per SKU?
From the inventory or accounting system if it exists, otherwise from a maintained sheet with landed cost per SKU that the report reads. An approximate COGS updated quarterly is far better than none; without it, ROAS is the only number and it lies.
How do we handle returns that arrive weeks later?
Net them against the original order's date in the report, so historical days are revised as returns arrive, and show a return rate by product and channel so the pattern is visible. A channel with strong sales and high returns is not a strong channel.
What margin target should we aim for per channel?
Enough contribution after marketing to cover fixed costs and profit at your volume — a number from your own accounts, not a benchmark. Channels above it get more budget; channels below it get fixed or cut. The daily report makes the comparison automatic.
e-commercereportingmargin

Want this built for your team?

A free scoping call: we map your motion, name the number that should move, and quote a fixed-scope build.

logo

HeiSyn is a GTM-first automation agency. We build and run the go-to-market systems behind growing businesses worldwide — B2B, B2C, D2C and B2B2C — outbound, speed-to-lead, CRM & RevOps, AI SDRs, lifecycle, reporting.

© 2026 HeiSyn. All rights reserved.