From attributed revenue to profit: attribution and ROI
Profit is attributed revenue after returns, product cost, shipping, fees and ad spend. Break-even ROAS is order value divided by contribution per order, and the attribution model moves profit between channels without changing the total.
By Joris van Huët, Founder & CEOPublished 5 min read
Run the numbers for your store: the free marketing ROI calculator.
Attributed revenue is order value a model gave to a channel, and profit is what is left after returns, product cost, shipping, fees and the ad spend. GA4's purchase revenue is net of refunds only when refund events reach GA4, and the National Retail Federation and Happy Returns, a UPS company, estimate in their returns report, dated 15 October 2025, that 19.3% of online sales will be returned in 2025, so the gap can be large. For illustration: break-even ROAS is order value divided by contribution per order, so an order worth 100 euros that contributes 40.80 euros needs a ROAS of 2.45.
What does attributed revenue leave out?
Start with refunds. Google defines GA4's purchase revenue as the sum of revenue from purchases made on your website or app, minus any refunds given, and says you measure refunds by sending a refund event with the transaction ID. If your setup sends none, GA4's revenue, and every credit split built on it, is gross.
Shopify's order object shows why timing matters. Its created timestamp remains unchanged throughout an order's lifecycle, and refunds are applied to the order later, with a separate total refunded. A report that books revenue on the order date will miss a refund made next month until it is updated.
In the EU that lag has a legal minimum, stated on the Commission's Your Europe page: a buyer can cancel within 14 days without providing any justification, and for goods the 14 days run from the date of delivery. A month's profit is provisional until that window has closed, plus whatever longer return policy your store offers.
The size of the gap is your own to measure. The NRF figure above is an industry estimate published by a trade body and a UPS company, and it is not audited. Your return rate is in your Shopify orders.
What is break-even ROAS for my margin?
Every order pays for its goods, refunds, payment fees and shipping before it pays for ads. What is left is contribution per order, the most you can spend to win that order without losing money.
For illustration (invented numbers): one order
Order value 100.00
Gross margin 60%, refunds 12% of orders:
100 x 0.60 x (1 - 0.12) 52.80
Payment fees 3% of order value -3.00
Shipping and fulfilment -9.00
Contribution per order 40.80
Break-even ROAS = order value / contribution
= 100 / 40.80 = 2.45
For illustration: a channel reporting a ROAS below 2.45 here loses money on each order it is credited with, before you ask whether it caused the order. The break-even ROAS calculator runs this for your numbers, and the return rate calculator and contribution margin calculator cover the inputs.
Does the attribution model change my profit?
By channel, yes. In total, no. A model divides the same revenue in different ways, so the same spend can look profitable under one rule and wasteful under another.
For illustration (invented numbers): 100,000 euros of attributed revenue,
40% contribution margin, 45,000 euros of ad spend
Paid Search Paid Social Total
Spend 25,000 20,000 45,000
Last-click revenue 70,000 30,000 100,000
margin (40%) 28,000 12,000 40,000
profit after spend 3,000 -8,000 -5,000
Linear revenue 50,000 50,000 100,000
margin (40%) 20,000 20,000 40,000
profit after spend -5,000 0 -5,000
Last click says cut Paid Social. Linear says cut Paid Search. The total is the same under both, because the rule moved profit between channels and created none. Neither line says how many of the credited orders would have happened without the ad, and that is what a holdout test answers.
How do I work out profit by channel from my own data?
- From last month's Shopify orders, get order value, refunded amount, shipping cost, payment fees and product cost, and work out contribution per order. Use orders old enough that the return window has closed.
- Divide order value by contribution per order to get your break-even ROAS. The calculators above do both steps.
- From GA4's attribution models report, take revenue by channel under two models, for example paid and organic last click and data-driven. Then compare GA4's Refund amount with Shopify's refunds for the same dates. If GA4 shows none while Shopify shows some, reduce GA4's revenue by your refund rate before you use it.
- For each channel, profit is its revenue times your contribution margin, minus its spend.
Pass: a channel is above break-even under both models, so the call doesn't depend on the model. Fail: it is above under one and below under the other, so the model is making the call. Hold that channel out in one region before you act on it.
Sources, 30 September 2026: Analytics dimensions and metrics (Google Analytics Help, 2026); Measure ecommerce (Google for Developers, 2026); Order object (Shopify Admin GraphQL API, 2026); Returns and the right of withdrawal (Your Europe, European Union, 2026); NRF and Happy Returns returns report (National Retail Federation with Happy Returns, 15 October 2025).
Related answers
Frequently asked questions
How do I calculate profit from ad spend?
Take each order's value and subtract product cost, refunds, payment fees and shipping to get contribution per order. Then subtract ad spend. Break-even ROAS is order value divided by contribution per order. The free calculators on this site run the same arithmetic.Does GA4 revenue include refunds?
Only if refund events reach GA4. Google defines purchase revenue as purchases minus any refunds given, and says refunds are measured by sending a refund event with the transaction ID. Compare GA4's Refund amount with Shopify's refunds for the same dates to see which you have.Does changing the attribution model change my profit?
It changes profit by channel, not in total. A model divides the same revenue differently, so one channel looks profitable under last click and another under linear. A holdout test shows which channel's ads caused the orders.
Go deeper: Incrementality testing, explained.
Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.
Keep reading
Terms in this article
- AttributionAttribution identifies user actions that contribute to a desired outcome and assigns value to each. It reveals which marketing touchpoints drive conversions.
- Attribution ModelAn Attribution Model defines how credit for conversions is assigned to marketing touchpoints. It dictates how marketing channels receive credit for sales.
- Google AnalyticsGoogle Analytics is a web analytics service that tracks and reports website traffic.
- Holdout TestA holdout test is an experiment where a portion of the audience does not see a campaign. This measures the campaign's true incremental impact.
- IncrementalityIncrementality measures the true causal impact of a marketing campaign. It quantifies the additional conversions or revenue directly from that activity.
- Incrementality TestingIncrementality Testing measures the additional impact of a marketing campaign. It compares exposed and control groups to determine causal effect.
- Marketing ROIMarketing ROI (Return on Investment) measures the return from marketing spend. It evaluates the effectiveness of marketing campaigns.
- Multi-Touch AttributionMulti-Touch Attribution assigns credit to multiple marketing touchpoints across the customer journey. It provides a comprehensive view of channel impact on conversions.