How to Keep Lost Chargebacks From Inflating Your Shopify Ad and GA4 Revenue

|Dan Giura
How to Keep Lost Chargebacks From Inflating Your Shopify Ad and GA4 Revenue

TL;DR

Shopify files a chargeback as a dispute on the order, kept apart from the order's refunds [7]. When the cardholder wins, the disputed amount goes back to them [1], and Shopify's sales reports leave chargebacks out [5]. No refund record means no refund event, so on a store running WeltPixel Conversion Tracking, GA4 keeps the purchase, and Google Ads, Meta and the other destinations keep theirs. The correction that works comes early: accept the chargeback and adjust Google Ads by order ID, because a chargeback you fight and lose can be decided after Google Ads stops taking adjustments [2][9]. Refunding is for an inquiry you agree with, before the bank takes the funds [1][4].

Key Takeaways

  • Shopify keeps disputes in their own list on the order, next to refunds [7], and "Chargebacks aren't included in the sales reports" [5].
  • The app listens for new orders, paid orders and refunds. A lost chargeback is none of those, so nothing is sent or reversed.
  • On Plus, a refund for an inquiry you agree with reaches GA4 as a refund event, and a full refund means "the cardholder can't initiate a chargeback" [4].
  • Google Ads adjustments reach automated bidding only within 7 days of the conversion being recorded, and Google accepts them for 54 days [9].
  • Google's API documentation says adjustments "don't work with WBRAIDs" [10].
  • Don't refund an order after you lose its chargeback: the cardholder already has the money [1].
  • Filter Orders by "Chargeback and inquiry status", keep the lost ones, and report them as their own line next to blended ROAS.

What does Shopify record when you lose a chargeback?

The money moves first. When a cardholder's bank opens a chargeback, "the bank takes the disputed amount from you right away", plus a chargeback fee [1], and on Shopify Payments the amount comes out of your next available payout [1]. Shopify's process page sums up the losing outcome as "Customer wins: You keep nothing", and adds that "there's no appeal process and the decision is final" [2].

Shopify's Admin API gives every order two separate lists: refunds, "A list of refunds that have been applied to the order", and disputes, "A list of payment disputes associated with the order, such as chargebacks or payment inquiries" [7]. A dispute has its own statuses, including won and lost, where lost means "The cardholder's bank reached a final decision in the buyer's favor" [8]. "If the cardholder wins the chargeback, then the disputed amount is returned to the cardholder" [1], money the bank already took from you when the chargeback opened.

Where a lost chargeback shows up in your admin, and where it doesn't:

Where you look What a lost chargeback leaves there
The order page A chargeback banner and a chargeback details section; Shopify lists the statuses as open, submitted, won, lost, resolved [3]
Orders list Findable with Add filter > Chargeback and inquiry status [3]
The order's payment status Nothing: Shopify's list of payment statuses has no chargeback status [6]
Sales reports Nothing: "Chargebacks aren't included in the sales reports" [5]
Shopify Payments payouts The deducted amount [1]

Shopify never says in one sentence that a lost chargeback creates no refund. Its documents add up to that, and you can confirm it on any order with the check at the end of this article.

Every ledger downstream keeps the sale

WeltPixel Conversion Tracking listens for three Shopify order events: a new order, a paid order and a refund. A lost chargeback is none of them, and the app doesn't request access to Shopify Payments disputes, so nothing reaches it when the bank rules.

GA4 keeps the purchase. On Plus, the app sends GA4 a refund event whenever Shopify records a refund, which is how server-side GA4 refund tracking works, but there's no refund here to trigger it.

Google Ads, Meta, TikTok and the rest keep the purchase the app sent, Google Ads at the order's full value. The app sends refunds to GA4 only, and sends no reversals anywhere else.

Shopify's sales report still counts the sale, too, since chargebacks sit outside it [5]. You've probably compared GA4's revenue with Shopify's after a rough month and felt better when the two came out close. A lost chargeback is the case where close means nothing, because every system agrees on a number that includes money you no longer have. The discrepancy hub for Meta, Google Ads and GA4 purchase counts won't catch it, because there's no gap to find.

Waiting for payment doesn't help either. A chargeback comes after the money was captured, so the "When the order is paid" setting covered in tracking cash on delivery orders without inflating conversions has already fired by then.

Shopify's dispute clock against Google's adjustment window

Shopify's clock runs in weeks. You have "usually 7-21 days, to build your response", and after you submit, the bank's review "can take up to 75 days" [2].

Google's runs shorter. Google asks you to "upload conversion adjustments at least 24 hours after the original conversion", then: "When retracting or restating conversion values, you have up to 7 days after they're first recorded for autobidding readability. Outside of the autobidding readability, overall, conversion adjustments can be made within 54 days" [9].

The 7 days count from when the conversion was first recorded, so the bidding window is gone unless the chargeback opens and ends within a week of the sale. The 54 days are tighter than they look. Run the arithmetic on an illustrative chargeback that opens the day after the purchase: you submit evidence on day 15, the review takes 40 days (well inside Shopify's 75), and the verdict lands on day 55, past Google's 54 days. Any later start or longer review only widens the gap.

So "retract it when you lose" can arrive too late, and you won't know in advance whether it will.

Where can you still correct each report?

At the accept button. The order page offers "Accept chargeback" [3]. Accepting means "The disputed amount is returned to the customer, and you aren't refunded for the chargeback fee" [4]. It's the earliest moment the sale is certainly gone, so it's the moment to retract or restate the Google Ads conversion by the order ID the app uploaded, using the mechanics in handling refunds in ad platform reporting. If you accept within a week of the conversion, the change reaches bidding; until day 54 it still corrects reporting [9]. One gap: "Conversion adjustments work with GCLIDs and GBRAIDs, but don't work with WBRAIDs" [10]. When a wbraid is the only Google click ID on a conversion the app uploads, that conversion can't be adjusted. Checking whether your ad click IDs survive the trip to your orders shows which IDs your orders carry.

At the inquiry, if you agree with it. Some disputes start as an inquiry, before the bank takes any money [1]. If you agree with the inquiry's reason, Shopify's resolve page lists "Issuing a refund to end an inquiry" [4]. As a general rule its admin page is warier: "If the chargeback is only an inquiry and the funds haven't been taken by the credit card company yet, then a refund is possible but not recommended" [3]. A refund you do issue is an ordinary Shopify refund (the dispute status charge_refunded means "The merchant refunded the inquiry amount" [8]), so on Plus the app sends GA4 a refund event like any other. A full refund also means "the cardholder can't initiate a chargeback", while "If you issue a partial refund, then a full chargeback can still occur" [4]. Google Ads and Meta then need the same handling as any refund, from the refunds article above.

After you accept or lose. Google Ads may have stopped taking adjustments by then. For GA4, a developer can send a refund event through the Measurement Protocol, though it can't be dated back to the sale: "Events can be backdated up to 72 hours" [11]. For Meta, the event reference lists no refund event [12].

Why not refund the order after you lose?

Because the cardholder already has the money [1]. Shopify's line "After the chargeback is resolved, you can refund the order" sits in its steps for a customer who withdraws the dispute [4]. On a lost chargeback, a refund pays the same customer a second time. GA4 would get its refund event.

Keep lost chargebacks as their own line

Shopify's sales reports leave chargebacks out, and point to the payments finance reports for payment and refund transactions [5]. Shopify's ShopifyQL chargebacks schema has a chargeback_amount, "The value of disputed charges across all chargeback reasons", with order_id and order_payment_status among its dimensions [13]. The schema lists no won-or-lost dimension, so treat that figure as disputed value, which can include chargebacks you went on to win.

For the lost ones, check order by order:

  1. In Shopify admin, go to Orders, choose Add filter > Chargeback and inquiry status, and narrow the list to your chargebacks [3].
  2. Open each order and check the chargeback's status; the details section holds the reason code and the issuer's documents [3]. Keep the ones marked lost.
  3. On the same order, look for a refund. If there isn't one, no refund event went to GA4, and the purchase is still counted at full value everywhere the app sent it.
  4. Add up the lost amounts for the period and report them as a line next to your blended ROAS. Reporting one blended ROAS across Shopify, Meta and Google Ads builds its revenue from Shopify's sales report, whose sales reversals cover returns, cancellations and edits but not chargebacks [5].

FAQ

Does a lost Shopify chargeback show up as a refund on the order?

Not in Shopify's documented model. Disputes sit in their own list on the order, apart from refunds [7], and when the cardholder wins, the disputed amount goes back to them [1]. Open the order and check its refunds to confirm.

Does WeltPixel Conversion Tracking detect chargebacks?

No. The app listens for new orders, paid orders and refunds, and none of those fires on a chargeback, so it sends nothing and reverses nothing. Its refund events go to GA4 only, on Plus.

How long do I have to adjust a Google Ads conversion after a chargeback?

Google applies adjustments to automated bidding for up to 7 days after the conversion is first recorded, and accepts them for reporting within 54 days [9]. Google recommends uploading at least 24 hours after the original conversion [9].

Can I remove a charged-back purchase from Meta?

Meta's event reference lists no refund event [12]. Keep the loss in your own reporting next to Meta's numbers.

See which refunds reach GA4

WeltPixel Conversion Tracking sends GA4 a refund event whenever Shopify records a refund, and uploads Google Ads conversions keyed on the Shopify order ID you'd adjust, both on Plus ($39/month, no order limit) [14]. The free plan covers GA4 only, up to 100 storefront orders a month. Decide at the accept button, while Google Ads still takes the correction.

Sources

  1. Shopify Help Center, "Chargebacks and inquiries", help.shopify.com/en/manual/payments/chargebacks, accessed October 14, 2026
  2. Shopify Help Center, "Chargeback process", help.shopify.com/en/manual/payments/chargebacks/chargeback-process, accessed October 14, 2026
  3. Shopify Help Center, "Chargebacks in the Shopify admin", help.shopify.com/en/manual/payments/chargebacks/chargebacks-in-admin, accessed October 14, 2026
  4. Shopify Help Center, "Resolve a chargeback", help.shopify.com/en/manual/payments/chargebacks/resolve-chargeback, accessed October 14, 2026
  5. Shopify Help Center, "Sales reports" (Sales versus payments), help.shopify.com/en/manual/reports-and-analytics/shopify-reports/report-types/default-reports/sales-report, accessed October 14, 2026
  6. Shopify Help Center, "Order status" (payment statuses), help.shopify.com/en/manual/fulfillment/managing-orders/order-status, accessed October 14, 2026
  7. Shopify Developer documentation, GraphQL Admin API "Order" object, shopify.dev/docs/api/admin-graphql/latest/objects/Order, accessed October 14, 2026
  8. Shopify Developer documentation, REST Admin API "Dispute" resource, shopify.dev/docs/api/admin-rest/latest/resources/dispute, accessed October 14, 2026
  9. Google Ads Help, "How to adjust your conversions", support.google.com/google-ads/answer/7686280, accessed October 14, 2026
  10. Google Ads API documentation, "Import conversion adjustments", last updated October 6, 2026, developers.google.com/google-ads/api/docs/conversions/upload-adjustments, accessed October 14, 2026
  11. Google Analytics developer documentation, Measurement Protocol reference, last updated October 9, 2026, developers.google.com/analytics/devguides/collection/protocol/ga4/reference, accessed October 14, 2026
  12. Meta for Developers, Meta Pixel reference (standard events), developers.facebook.com/docs/meta-pixel/reference, accessed October 14, 2026
  13. Shopify Developer documentation, ShopifyQL "chargebacks" schema, shopify.dev/docs/api/shopifyql/latest/schemas/finance_and_payments/chargebacks, accessed October 14, 2026
  14. WeltPixel Conversion Tracking, Shopify App Store listing (free plan; Plus $39/month), apps.shopify.com/weltpixel-conversion-tracking, accessed October 14, 2026

Ready to upgrade your tracking?

Server-side tracking for Magento and Shopify — accurate data, better attribution, full privacy compliance.