Google Ads
A wrong conversion value almost never comes from a single obvious bug — it's usually one of a handful of definitional mismatches: what counts as "value" in the first place, which currency it's reported in, whether duplicate conversions are doubling it, or whether a GA4 import and the native tag disagree about how to calculate the same order. Each produces a different-shaped error, which is the fastest way to tell them apart.
The conversion value Google Ads reports comes from whatever number the implementation decides to pass as the purchase event's value parameter at the moment it fires. There's no single Shopify-mandated definition of that number — it can be cart subtotal, order total including tax and shipping, or total minus a discount code, depending entirely on how the theme, the Google & YouTube app, or a manual GTM setup populates it. The value is only "wrong" relative to whatever you expected it to represent — which is exactly why it's worth confirming what your own setup actually sends before assuming a bug.
Illustrative example — a single $95 order, where the native Google tag sends the full checkout total and a GA4-imported conversion action sends subtotal only:
| Cart subtotal | $95.00 |
| Discount code (–10%) | –$9.50 |
| Sales tax | +$7.20 |
| Shipping | +$6.80 |
| Total charged at checkout | $99.50 |
| Value sent by native Google tag (checkout total) | $99.50 |
| Value sent via GA4 import (subtotal after discount only) | $85.50 |
Neither number is necessarily wrong on its own — both are internally consistent with how each path defines value. The problem is having both live as conversion actions simultaneously, reporting two different revenue figures for the identical order and leaving whichever one you're looking at unrepresentative of the other.
If the store sells in a currency different from the Google Ads account's billing currency, and the conversion action isn't explicitly configured to declare the currency it's receiving, Google Ads can treat the incoming number as face value in the wrong currency rather than converting it — which either multiplies or divides every reported figure by whatever the exchange rate happens to be. Multi-currency Shopify stores are especially exposed here, since the value passed can come from either the shop's default currency or the customer's presentment currency depending on how the event is built, and those aren't always the same number.
Attribix sends order value from Shopify to Google Ads using a single, consistent definition per order and shows it next to what Google Ads actually recorded, so a subtotal-vs-total or currency mismatch is visible as a specific per-order gap instead of a mysterious dip in reported revenue. See how it connects on the Google Ads conversion tracking for Shopify page.
A subtly different failure mode: each individual order's value is calculated correctly, but the order is counted twice because two conversion actions or two tag implementations both fired for it. The per-order figure looks right when you spot-check one order; the total looks wrong because it's doubled across every order that hit the same duplication. Worth checking count and value together rather than value alone — see duplicate Google Ads conversions on Shopify for the mechanics behind that specific pattern.
Transaction ID's main job is deduplication, but it also controls whether a later correction reaches the original conversion. A refund or cancellation reported back to Google Ads as a conversion adjustment references the transaction ID to find which recorded conversion to reduce. If the ID on the adjustment doesn't match the ID on the original event — a common gap when refunds are handled through a different system or app than the original purchase tracking — the value never gets corrected, and the original, pre-refund figure stays in Google Ads' reporting indefinitely.
Comparing definitions and settings covers most of this. When the gap persists after checking them, or spans multiple conversion actions and imports, that's worth a closer look from someone in the account.