Why it happens
Several currencies are in play. With Shopify Markets a buyer can pay in their own currency, the presentment currency. Your store has a base currency, the one Shopify reports in. Your Meta ad account has its currency, and your GA4 property has a reporting currency. A purchase event carries a value and a currency code. If the code says one thing and the value is in another currency, the platform converts a number that was never in that currency.
The sender picks the currency. A browser pixel often reads what the shopper saw, so it sends the presentment currency. A server connection may send the store currency. When both report, one platform can hold events in two currencies for the same order. Meta then shows the purchase value in your ad account currency, and GA4 in your reporting currency, each converted by its own rate.
Rates and dates differ. Shopify converts at the rate it applied when the buyer paid. Platforms convert at their own rates, and not necessarily on the same day. Even with correct codes, a total across several currencies will not match your Shopify total to the cent. A gap that grows with the share of foreign orders points at conversion. A gap in one market only points at the currency code sent for it.
Check it yourself
- 1Note your store's base currency and the currencies you sell in. In Shopify admin > Settings > Markets (the Markets screen, where each market shows its currency), list them.
- 2In Shopify admin > Orders, filter by Sales channel, keep the online store, and open one recent order per currency. Note the total in the buyer's currency and in your store currency.
- 3In Shopify admin > Analytics > Reports, open a sales report for the last 7 full days and read total sales in your store currency.
- 4In Meta Events Manager > Data sources > your pixel > Test events, make a test purchase in a foreign currency. Open the Purchase event and read the currency and value parameters it received.
- 5In Meta Events Manager > Data sources > your pixel > Overview, read the Purchase count and, where the event details show it, the value received, for the same days. Compare it with Shopify's total in the currency of your ad account.
- 6In GA4 > Admin > Property details, read the reporting currency. In GA4 > Explore, make a Free form exploration with the dimension Transaction ID and the metric purchase revenue, and compare a foreign-currency order with its Shopify amount.
- 7If a market shows values that look like the local price with the wrong code, find which tool sends the purchase for that market: the Facebook and Instagram sales channel, the Google and YouTube sales channel, a theme snippet or an app.
For what each platform needs with a purchase, see how a paid order reaches Meta, GA4 and Google Ads.
FAQ
Which currency should Meta and GA4 use?
Each purchase event should carry the currency its value is in. Both platforms can convert to your account or property currency. The mistake to avoid is a value in one currency labeled with another.
Why does GA4 revenue not match Shopify total sales to the cent?
Different conversion rates, different dates for the rate, and the way the value is defined. GA4 revenue can leave out tax or shipping depending on what is sent. Compare order by order in Explore before you look at totals.
Does Shopify Markets change my tracking?
It changes the currency the shopper sees, and which prices tax includes. Tracking tools that read the displayed price will report that price. Check one order per market.
Do refunds follow the same currency?
A refund event also needs a currency with its value. If the purchase was sent in one currency and the refund in another, the reports will not net out.