A channel reporting 500% ROAS can still make an ecommerce business poorer. Ecommerce ROAS attribution becomes commercially useful only when every credited order is joined to returns, cancellations, margin and the touch sequence preceding purchase. The cost is uncomfortable: paid media often receives less credit, while no model supplies the single causal truth executives expect.
Treat the order ledger as financial truth, the path ledger as observed behaviour and controlled budget changes as evidence of incrementality. Collapsing those jobs into one dashboard creates confident fiction.
Ecommerce ROAS attribution starts with the order ledger
Advertising platforms optimise the values they can observe. They do not automatically know whether an order was cancelled, heavily discounted, unprofitable or placed by an existing customer who intended to return.
Give each completed order eleven commercial fields: (1) order ID; (2) order time; (3) customer ID; (4) gross item value excluding VAT; (5) discount value; (6) tax; (7) shipping income; (8) fulfilment and payment cost; (9) refund or cancellation value; (10) cost of goods; and (11) new-or-repeat status.
Keep the five touch fields—timestamp, source, campaign, landing page and customer or session identifier—in a separate path ledger. Joining on order and customer identifiers preserves multiple touches without duplicating revenue.
Order value also matures. An illustrative cohort might show £50,000 booked on day 7 versus £43,000 realised on day 45, despite the underlying clicks remaining unchanged.
Use a firm maturity rule: if more than 10% of cohort value changes after day 14, delay budget judgements until day 30 and restate earlier cohorts. Daily bidding can continue, but finance should not approve expansion from provisional revenue.
A separate commercial test for reported Google Ads return covers the broader calculation when the cost or revenue denominator is unreliable.
We claim any account with more than 10% post-purchase value adjustments will make at least one different channel decision using net rather than gross value; two complete adjustment cycles producing identical rankings and budget calls would prove us wrong.
The honest limit here is that clean order data cannot show whether a recorded touch caused the sale.
Net order value is the commercial anchor for every channel decision.
The six-layer ecommerce attribution stack
Revenue changes at order level, while touch data multiplies at session level. Joining everything prematurely duplicates sales whenever one purchase follows several visits.
A defensible stack has six layers:
- Commerce layer. Store orders, line items, customer status and financial adjustments. This layer owns recognised revenue and must remain independent of any advertising platform’s claim.
- Cost layer. Hold media spend, affiliate commission, voucher cost and channel fees at their original daily or transaction-level grain.
- Identity layer. Connect consented sessions to customers through logins, customer IDs and order details. Preserve unresolved journeys as unknown instead of inventing certainty.
- Path layer. Record eligible touches chronologically. Direct visits can close a journey, but they should not erase an earlier identifiable source.
- B2B-assist layer. Add quote IDs, calls, CRM opportunities, sales interventions and purchase orders. The process for connecting offline conversions to realised return belongs here, while final value still comes from the order ledger.
- Decision layer. Present acquisition, closing, retention and incrementality views separately. Every chart should name its revenue basis and attribution rule.
Where browser loss creates the gap, our explanation of why browser data needs server-side support covers that implementation boundary. Server-side collection does not replace the other five layers.
Apply two integrity gates. If unknown first eligible touch exceeds 15% of net revenue, stop channel expansion and repair the identity or checkout join. If quotes or sales interactions precede more than 10% of online order value within 60 days, add an assisted flag before allocating channel credit.
Purchase-path design should determine the taxonomy. In our website and platform case studies, Lanteria’s broad capability set was routed for multiple stakeholder audiences, AfriCap Hub required a catalogue, filtering and registration journey, and Savgen needed a technical multi-industry offer expressed coherently through its brand and site.
Those projects publish no performance figures. Their relevance is structural: materially different journeys create materially different valid touch sequences.
A useful attribution stack preserves sequence, commercial value and buyer type.
Four ecommerce ROAS attribution decisions, not one magic model
First-touch and last-touch are not rival religions. They answer different management questions.
Keep four decision views:
- The acquisition decision. Credit the first eligible non-direct touch to identify where a customer relationship began. Use this view for prospecting, category discovery and new-market investment.
- The closing decision. Credit the last eligible touch before purchase to assess checkout recovery, remarketing and demand capture. An illustrative £60,000 net-revenue pool might give paid search £18,000 under first-touch versus £36,000 under last-touch. The difference reflects the question being asked, not £18,000 of missing sales.
- The customer decision. Separate new-customer revenue from returning-customer revenue. If repeat buyers contribute more than 25% of paid-attributed net revenue, split acquisition and retention reporting before changing bids. An illustrative blended ROAS of 5.0x versus new-customer ROAS of 3.1x leads to a different growth decision.
- The budget decision. Use a controlled geographic holdout, timed budget step or eligible-audience split to test incremental contribution. When one channel consumes more than 20% of acquisition spend, run one controlled test before raising its budget by another 20%. Accounts needing cleaner campaign structure can pair that measurement work with specialist Google Ads strategy and management.
Hybrid journeys need a separate economic endpoint. When a path finishes with an enquiry rather than an order, apply a B2B paid-search cost-per-lead model until the eventual order can be joined.
Attribution models distribute observed credit; controlled changes estimate incremental value.
If the path from ad click to signed revenue still has gaps, Actualyse will trace each hand-off with you — book a call
What did not work, and what does not matter
The versions reaching us in audits usually contain one or more of four attractive fixes. Each improves presentation or data hygiene without resolving the commercial question.
- An immaculate UTM scheme. UTMs label known visits. They cannot apply refunds, identify product margin, resolve every cross-device purchase or prove that the labelled visit changed demand.
- The platform’s default data-driven model. It redistributes credit among observed interactions. It cannot observe the counterfactual sale that would have happened without advertising, and it remains commercially blind when supplied with gross values.
- A longer attribution window. Moving from a 7-day window to a 30-day window admits more touches and usually creates more claims on the same revenue. Extra observation is not extra incrementality.
- A larger connector and dashboard stack. Moving identical claims into another interface does not fix duplicated order IDs, incompatible time grains or missing customer status. More polished disagreement remains disagreement.
Maximising attributed purchases is equally weak as a commercial objective. Branded search, remarketing and voucher partners can collect additional credit near checkout without creating enough additional contribution to justify their cost.
Better plumbing cannot rescue a commercially wrong measurement question.
A UK B2B ecommerce example, rebuilt order by order
Take an illustrative UK industrial tooling supplier evaluating one monthly cohort. Its customers research technical products, revisit through email and organic search, and sometimes speak to sales before ordering online.
The thirteen labelled inputs are:
- Paid-search spend: £8,000
- Platform-reported conversion value: £48,000
- Commerce-ledger gross item value excluding VAT: £48,000
- Discounts: £2,000
- Refunds and cancellations: £5,000
- Cost of goods: £17,000
- Fulfilment and payment cost: £2,100
- Paid-search path weight: 55%
- Organic-search path weight: 20%
- Email path weight: 15%
- Partner and referral path weight: 10%
- Finance-owned contribution-return hurdle: 1.80x
- Sales-assisted subset of net revenue: £9,000
First establish recognised revenue:
£48,000 gross value − £2,000 discounts − £5,000 adjustments = £41,000 net revenue
The agreed reporting weights conserve that revenue:
55% paid search + 20% organic search + 15% email + 10% partner/referral = 100%
£41,000 × 55% = £22,550 paid-search credit
£41,000 × 20% = £8,200 organic-search credit
£41,000 × 15% = £6,150 email credit
£41,000 × 10% = £4,100 partner/referral credit
Now compare the media claim with the ledger view:
£48,000 platform value ÷ £8,000 spend = 6.00x platform-reported gross ROAS
£22,550 paid-search net credit ÷ £8,000 spend = 2.82x path-adjusted net ROAS
For transparent illustrative arithmetic, contribution is spread proportionally here. A production model should use the actual margin of each order line.
£41,000 net revenue − £17,000 goods − £2,100 fulfilment and payment = £21,900 contribution before acquisition
£21,900 × 55% = £12,045 paid-search contribution credit
£12,045 ÷ £8,000 spend = 1.51x paid-search contribution return
The platform’s 6.00x versus the path model’s 2.82x versus the contribution view’s 1.51x are three different claims. Only the final one can be compared with finance’s 1.80x hurdle, so the immediate decision is to hold spend and test incrementality.
Sales assistance remains an overlay, not a fifth revenue channel:
£41,000 channel credit + £9,000 assisted subset = £50,000 claimed value
That £50,000 result is wrong because it double-counts the assisted orders. The correct report keeps total revenue at £41,000 and labels £9,000 as sales-assisted.
A profitable-looking dashboard can conceal a failed contribution hurdle.
FAQ
Four implementation questions require separate decisions.
How should subscription orders be valued?
Keep first-order contribution and realised-cohort contribution as separate views. Do not budget against predicted lifetime value until at least two renewal cycles have matured; the named decision is cash recovery until then.
Should view-through impressions receive revenue credit?
Assign zero primary revenue credit unless a controlled test demonstrates incremental contribution. If view-through claims exceed 20% of net revenue, run a holdout before buying additional reach.
How should marketplace sales fit the model?
If marketplace sales exceed 15% of net revenue, create a separate marketplace channel containing platform fees, refunds and fulfilment costs. The named decision is contribution after marketplace fees, not website-session ROAS.
How much data is needed before changing a channel budget?
Wait for 20 matured orders and one complete refund window before making an uncapped channel change. Below 20 orders, cap the test at 10% of monthly acquisition spend and enforce the finance-owned contribution floor.
Twenty matured orders form a practical minimum for a channel-level budget call.
Summary
The five operating rules are:
- If more than 10% of value changes after day 14, delay budget judgement until day 30.
- If unknown first-touch revenue exceeds 15%, freeze channel scaling and repair path capture.
- If repeat buyers exceed 25% of paid-attributed revenue, separate acquisition from retention.
- Set a finance-owned contribution hurdle and scale only when the channel clears it.
- Use recorded paths for credit and controlled budget changes for causal claims.
Commercial truth outranks convenient channel credit.
Actualyse builds measurement and attribution setups that tie B2B ad spend to real revenue. Book a call to talk through where yours stands.

