Skip to content

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 , 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?

  1. 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.
  2. Divide order value by contribution per order to get your break-even ROAS. The calculators above do both steps.
  3. 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.
  4. 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).

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

Browse the full glossary

Your platforms guess.
We run the math.

Upload a GA4 export and see what each channel caused, next to last-click, in 1–2 minutes. The read is yours to keep.

Free, in your browser: your file is not uploaded. The full read is €99, refundable within 30 days. Prices exclude VAT.
Or book a 30-min call.