analyzify logo

How to Track Refunds in GA4 for Shopify and Get Accurate Revenue

GA4 does not track refunds by default, leaving your revenue overstated. Discover how to capture Shopify refunds in GA4 for accurate reporting.

Published atPublished: 20.08.2025
Updated atUpdated: 28.10.2026

If you run Shopify with GA4, there is a strong chance your revenue reports are overstated. Refunds usually happen in the backend rather than on your storefront, so GA4 never sees them. The result is inflated revenue and misleading ROAS numbers.

GA4 Refund Tracking for Shopify

5 Key Takeaways:

  • GA4 does not capture refunds automatically because they occur outside the website flow.
  • Missing refunds lead to overstated revenue and incorrect ROAS.
  • GA4 and Shopify treat refund dates differently, creating mismatched reports.
  • Exchanges are not recorded as refunds in analytics, so the data is incomplete.
  • Analyzify ensures refunds from Shopify are properly reflected in GA4 through server-side tracking.

For some merchants, this issue is minor. For others, it changes everything. High-return industries such as fashion, subscription models, and try-before-you-buy offers feel the gap most. Without accurate refund tracking, their GA4 data can be misleading enough to drive the wrong marketing and budgeting decisions.

Built for Shopify · Refund Tracking · Accurate ROAS
Analyzify logo

High return rates? GA4 can’t show you the damage

Analyzify captures Shopify refunds and delivers them into GA4 with server-side tracking - so your numbers finally match reality.
Get Accurate GA4 Reports

Why GA4 Misses Refunds By Default

Refunds are created in the Shopify admin or in return portals, not in the online storefront where GA4’s browser tags run. Since these actions happen behind the scenes, the client-side tracking setup has no event to detect.

  • Refunds take place in the Shopify backend, not the customer-facing site.
  • Browser-based tags only capture events during checkout or browsing.

This is the first reason refunds are missing: they do not occur in the same customer flow as orders.

Refund Tracking Process in Shopify

The second reason is that GA4 requires a dedicated server-side event to recognize a refund. Google provides the Measurement Protocol for this purpose.

  • Refund details must be sent through the protocol and linked to the original transaction.
  • Without this step, GA4 has no knowledge of the refund and revenue stays inflated.

When these gaps are left unaddressed, GA4 reports show gross sales but not net revenue. Marketing teams then base their ROAS and budget decisions on figures that do not reflect what actually remained after returns.

Bonus: Learn Why GA4 Revenue Doesn’t Match Shopify!

GA4 Refunds vs Exchanges: What Gets Tracked

Not every return results in a refund, and this difference matters when you look at your reports. An exchange often keeps revenue intact, while a refund reduces it. GA4 only accounts for actual refunds, so understanding what counts is essential.

Refund and Exchange Differences

  • A refund is money returned to the customer and should reduce reported revenue.
  • An exchange is treated as a new purchase or order edit, not as a refund event.

Because of this, GA4 will not show exchanges in its refund metrics. As a result, the number of refunds in GA4 may look lower than the total number of returns recorded in Shopify. This is not an error but how the systems are designed, exchanges continue to count as sales, while refunds reduce revenue.

How a Refund Reaches GA4

GA4 counts a refund by receiving a refund event that carries the same transaction_id as the original purchase event. Because refunds are created in the Shopify admin, not on your storefront, this event has to be sent from a server through GA4’s Measurement Protocol.

When refund tracking is on, Analyzify does this for you:

  1. Picks up the refund from Shopify. Analyzify checks Shopify for refunds from the last three days, not counting the current day. A refund you process today is picked up from tomorrow onwards.
  2. Builds the refund event. It uses the same transaction ID as the original purchase.
  3. Calculates the value. The value is the sum of the refunded items (price × quantity). Shipping and tax are not included.
  4. Sends it to GA4 through the Measurement Protocol.

Refund tracking is included in every Analyzify plan. It’s optional and off by default, so you decide when refunds should start changing your GA4 revenue.

Example: A Partial Refund, From Shopify to GA4

This is an illustrative order. The store’s currency is USD, and the customer paid in USD.

The original order, #1058

Line Amount
Linen shirt 1 × $60.00
Socks 2 × $15.00
Items $90.00
Shipping $8.00
Tax $7.20
Order total $105.20

To keep the example readable, assume the store sends the order number as the GA4 transaction ID (one of Analyzify’s three options), so the purchase reaches GA4 with transaction ID 1058. With the default setting, the transaction ID would be Shopify’s longer numeric order ID instead.

The refund. A week later, the customer returns one pair of socks, and you refund it in Shopify.

What Analyzify sends to GA4

Field Value
Event refund
transaction_id 1058 (the same ID as the purchase)
value 15.00 (1 × $15.00, items only)
currency USD (your shop currency)

Where to check it. In GA4, go to Reports → Monetization → Transactions and look up transaction ID 1058. Once the refund has been processed, purchase revenue for that transaction should be $15.00 lower than before. In GA4, purchase revenue is purchases minus refunds.

Allow time for this. The refund reaches GA4 a day or more after you process it in Shopify, and GA4 needs further time to show it in reports.

What if the whole order is refunded? The refund value is still the item total: $90.00 here. If the purchase you sent to GA4 included shipping and tax ($105.20), the transaction will still show $15.20 of revenue after a full refund. That’s expected, because shipping and tax aren’t part of the refund value. Check which order value your GA4 purchase uses (full, no tax, no shipping or net) before you compare totals.

A Checklist for Matching GA4 Refunds to Shopify

Use this when a refund in Shopify doesn’t seem to show up in GA4, or when totals don’t line up.

1. Same transaction ID

  • Find the order’s transaction ID in GA4 (Transactions report, or an Exploration with the Transaction ID dimension).
  • Analyzify lets you choose the format: Shopify order ID (the default), order name or order number. Refunds use the same format as purchases. Make sure you’re searching for the right one.
  • If the original purchase never reached GA4, there’s nothing for the refund to reduce.

2. Refund timing

  • Note when the refund was processed in Shopify. Analyzify picks it up from the next day, then GA4 needs time to process it.
  • Compare a date range that covers this delay, not a single day.

3. Currency

  • Refunds are sent in your shop currency. Purchases are sent in the customer’s currency by default. Analyzify doesn’t convert between them.
  • GA4 converts each event to your property’s currency using the previous day’s exchange rate. For an order paid in another currency, the refund and the purchase can be converted at different rates, so a full refund may not cancel the purchase exactly.

4. Value components

  • Refund value = refunded items (price × quantity). Shipping and tax are excluded.
  • Your GA4 purchase value can include tax and shipping, depending on your Analyzify order value setting. Expect a gap of shipping and tax on fully refunded orders.

5. Delivery vs. report result

These are two different checks:

  • Delivery: the refund event was sent to GA4.
  • Report result: GA4 lowered the purchase revenue of the matching transaction.

A refund can be delivered and still not change the report as you expect, for example if the transaction ID doesn’t match or the original purchase is missing. Always confirm the result on the transaction itself.

Why Refund Reports in GA4 Won’t Match Shopify Exactly

Even with refund tracking on, refunds in GA4 and Shopify won’t line up perfectly. The main reasons:

  • Different days. Shopify shows a refund on the day you processed it. In GA4, it shows up once the event has been sent and processed, which can be a day or more later.
  • Different value. Shopify’s refund can include shipping, tax or other adjustments. The value Analyzify sends to GA4 covers refunded items only.
  • Different currencies. Refunds are sent in shop currency, and purchases in the customer’s currency, with GA4 converting both.
  • Orders that aren’t in GA4. If a purchase was never sent to GA4, for example an excluded sales channel or a draft order with draft sending turned off, its refund has nothing to match.
  • Exchanges. As covered above, exchanges aren’t refunds, so GA4 refund counts can be lower than Shopify’s returns.

Why Refund Reports in GA4 Won’t Match Shopify Exactly

For the wider picture, see why GA4 revenue doesn’t match Shopify.

What You Can See in GA4 Once Refunds Flow In

Once refunds are sent correctly into GA4, you can begin validating them in standard reports. The platform provides a dedicated refunds metric, which allows you to see both the number of refunded items and the associated revenue adjustments.

The quickest place to check is Reports → Monetization → Transactions, which lists each transaction ID with its purchase revenue. In GA4, purchase revenue is purchases minus refunds, so a refunded transaction shows lower revenue.

Refund event in ga4

In practice, you can expect a few key views:

  • The Refunds metric appears in Explorations and standard reports, showing how many items or transactions were refunded.
  • The Refund Amount adjusts overall revenue, giving you a clearer view of net sales rather than inflated gross sales.
  • When combined with purchase events, you can calculate ratios such as percentage of orders refunded or refund rate by campaign.

how to track refund in ga4 properly

It is important to note that these metrics do not fully explain the financial picture on their own. GA4 focuses on behavioral and marketing analysis, while Shopify reflects the accounting reality.

How Analyzify Solves the Refund Gap

Analyzify sends Shopify refunds to GA4 server-side, using the same transaction ID as the original purchase, so GA4 can reduce the revenue of the right transaction.

  • Server-side delivery: refunds are sent from Shopify’s order data through GA4’s Measurement Protocol, with no browser or tag needed.
  • Matching transaction IDs: refunds use the same transaction ID format as your purchases (order ID, order name or order number).
  • Item-level value: the refund value is the refunded items’ price × quantity, without shipping or tax.
  • Opt-in: refund tracking is off by default. Turn it on when you want GA4 revenue to reflect refunds.

Shopify Refund Tracking in GA4 with Analyzify

Refunds can also be sent to Meta and TikTok. How each of those platforms uses refunds in its own reports and optimization is up to the platform, so this guide sticks to GA4. For setup, see the refund tracking help article.

If you want to go from net revenue to profit (adding costs like COGS and ad spend), see our guide to Shopify profit analytics.

Built for Shopify - Accurate Refund Tracking
Analyzify logo

Your GA4 reports show sales you already lost

Analyzify ensures refunds from Shopify are captured in GA4 through secure server-side tracking - so your revenue, ROAS, and reports reflect reality.
Fix Refund Tracking Today

If your GA4 revenue still looks too good to be true, it probably is.

Let Analyzify handle your refund tracking so your reports reflect the real story. Book a demo with our team and see how accurate refund data can improve every decision you make.

Frequently Asked Questions

Does GA4 track Shopify refunds automatically?

No. Refunds happen in the Shopify admin, where GA4’s browser tags don’t run. A refund event has to be sent server-side with the original transaction ID.

How long does it take for a refund to show up in GA4?

Usually a day or more. Analyzify picks up refunds from the day after they’re processed, and GA4 needs additional time to process the event before it appears in reports.

Does the refund value include shipping and tax?

No. Analyzify sends the value of the refunded items (price × quantity). Shipping and tax are not included.

Why does a fully refunded order still show revenue in GA4?

Usually because the purchase sent to GA4 included shipping and tax, while the refund only covers the items. The remaining amount is the shipping and tax.

Can refunds be tracked for orders paid in another currency?

Yes, but refunds are sent in your shop currency while purchases are sent in the customer’s currency, and GA4 converts both using its own exchange rates. The refund and the purchase may not cancel out exactly.

Where do I check a single refund in GA4?

Go to Reports → Monetization → Transactions and search for the order’s transaction ID. Its purchase revenue should drop by the refund value.

Latest Posts

The latest news, technologies, and resources from our team.
View all posts
Blog Post Icon
Shopify BFCM Tracking Checklist: Can You Trust Your Ad Results?
Published at30.09.2026
Published byİsmail Atasoy
Check Shopify purchase tracking, attribution and profit before BFCM. Find duplicate conversions and reporting gaps with our Black Friday tracking checklist.
Blog Post Icon
Shopify Customer Segments vs. Analyzify Segments: A Complete Comparison
Published at21.08.2026
Published bySerhat Bora
Rule-based conditions instead of ShopifyQL, group-by logic that builds many audiences at once, and direct platform sync. A side-by-side breakdown.
Blog Post Icon
How the Klaviyo Shopify Integration Actually Works
Published at13.08.2026
Published byİsmail Atasoy
See how Klaviyo tracks Shopify events, where native tracking falls short, and how server-side tracking can improve event and checkout coverage.
Blog Post Icon
Google Tag Gateway vs Server-Side GTM for Shopify: Which Do You Need?
Published at13.08.2026
Published byİsmail Atasoy
Learn the difference between Google Tag Gateway and server-side GTM for Shopify, what each one does, and which setup fits your tracking needs.
Sign up for our newsletter
Be the first to know about releases and industry news and insights.
We care about your data in our privacy policy.
Take the first step towards reliable trackingJoin 3,000+ merchants who trust their tracking with Analyzify.