
February 6, 2019
Multi-Currency Ecommerce Tracking in Google Analytics with GTM
So you’re planning to implement (or are already implementing) Ecommerce tracking in Google Analytics via Google Tag Manager. Some things went smoother, some not so much. In this case, an online store supports multiple currencies meaning that some purchases can be completed in euros, while the rest are in, say, pounds. Google Analytics reports display only one currency so how can you handle that? In this guide, I’ll explain how GA handles data of a business that operates in multiple currencies and how to send that data properly to Google Analytics with the help of Google Tag Manager.

Before we continue: Full guides
If you stumbled upon this blog post without actually being familiar with how to implement Ecommerce tracking in Google Analytics, here are two guides: one for the Standard Ecommerce and one for the Enhanced. Both go in-depth on how to implement these features and make sure that the data is captured properly.
Once you’re more familiar with this topic, continue reading.
Want to learn how to implement Enhanced Ecommerce via GTM? Take a course.
If you want to fully understand how Enhanced Ecommerce implementation via GTM works and how to properly configure it, I have created an Intermediate Google Tag Manager course that contains a module dedicated just to EE. I will take you through the entire process (from planning to preparing a task for a developer and, of course, GTM configuration).

How Google Analytics handles multiple currencies within the same view
Google Analytics E-commerce reports display sales in one currency that is set in View’s settings.
But if we speak only just about a single view, all sales within it are displayed in a single currency.
So what should you do if an online store accepts payments in multiple currencies (e.g. euros and pounds)? Or maybe there are multiple localized branches/e-shops of an e-commerce business that accept payments in local currencies? Don’t worry, there’s no need to do the currency conversion on your side. Google Analytics can handle that for you.
All you need to do is to send the currency code along with the request to Google Analytics. Then GA will catch it and convert to the currency that you have chosen in your GA View’s settings.
Multi-currency tracking in Google Analytics Standard Ecommerce
Speaking of how the currency code can be passed to GA, there are some differences between the Standard and Enhanced E-commerce. Standard supports one option while the Enhanced E-commerce does two.
Standard E-commerce tracking via GTM requires you to pass the currency with the field currencyCode. You can do that by editing the Universal Analytics Transaction tag and going to Enable overriding settings in this tag > More Settings > Fields to set and entering the following two things, currencyCode and the variable that contains the value of the actual currency that is used during the transaction.
Keep in mind that in the value column I’ve inserted a variable and it must return an actual currency used in the transaction. The most convenient way to get this variable to work is to ask a developer to push the currency code to the Data Layer and then reading it with the Data Layer Variable.
Here’s a sample dataLayer.push code containing the E-commerce transaction data + a currency.
<script> window.dataLayer = window.dataLayer || []; dataLayer.push({ 'currencyCode' : 'EUR', //here is the currency code that a developer has to add to the push 'transactionId': '1234', 'transactionAffiliation': 'Acme Clothing', 'transactionTotal': 38.26, 'transactionTax': 1.29, 'transactionShipping': 5, 'transactionProducts': [{ 'sku': 'DD44', 'name': 'T-Shirt', 'category': 'Apparel', 'price': 11.99, 'quantity': 1 },{ 'sku': 'AA1243544', 'name': 'Hat', 'category': 'Apparel', 'price': 9.99, 'quantity': 2 }] }); </script>
Notice that I have asked a developer to add an additional parameter currencyCode that contains the currency of the transaction. Keep in mind that the name of this parameter (a.k.a. the key) can be anything you want. Just make sure that you enter the same name in the Data Layer Variable a bit later.
The local currency must be specified in the ISO 4217 standard. Read the Currency Codes Reference document for a complete list of supported conversion currencies.
After the currency is pushed to the Data Layer, it’s time to fetch its value with the Data Layer Variable. In your GTM UI, go to Variables > User-defined Variables > New > Data Layer Variable and enter the name of the key that is used in the Data Layer for the Currency Code. In my case, it’s currencyCode.
Now insert that variable in the Universal Analytics Transaction tag’s Fields to Set section. You’ll need to override Google Analytics Settings Variable (if you’re using one). It’s important to note that GTM’s autocomplete will not prefill the currencyCode setting, so don’t worry about that. Just make sure you enter it exactly as I did (camel-case).
.
That’s it! Save the tag, refresh Preview mode and test whether the currency was passed properly, make a purchase with a currency that is different compared to your GA View settings.
There are multiple ways how to test this multi-currency setup but here I’ll mention two:
#1. Enable the GA Debugger Chrome Extension, open the Developer’s Console in your browser and do a purchase. The information of that purchase will be printed to the console and you should be looking for the parameter currencyCode, a.k.a. &cu.
#2. Another place where you should check this sale in Google Analytics E-commerce reports. Unfortunately, sales data is not displayed in the Real-time reports, thus you’ll need to wait for it to appear in the standard reports. This might take up to several hours (depending on the traffic you get). Just don’t forget to choose today’s date in the date picker (by default GA reports exclude today’s data).
One of the easiest ways to validate your data is to locate the Transaction ID of that purchase where you specified currency and check what is the revenue of that transaction. Is it the initial (pre-conversion) value? Or is it the one that is converted?
Local currency tracking in Google Analytics Enhanced Ecommerce
As I have mentioned somewhere above, there are two ways how to pass the Currency Code in the Enhanced E-commerce feature.
Option #1. The first one is exactly the same as it was done with the Standard Ecommerce, use Fields to Set feature and set the currency Data Layer variable as the currencyCode field.
Just ask a developer to push the currency code to the Data Layer, for example, like here (but it can be literally anywhere within that dataLayer.push:
window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: 'transaction', currencyCode: 'EUR', ecommerce: { purchase: { actionField: { id: '123456', revenue: '13.00' }, products: [{ id: '6789', price: '13.00', quantity: 1 }] } } });
Then create the Data Layer Variable for that currencyCode key and insert it as currencyCode field in the Fields to Set section.

The 2nd option is to ask a developer to add the currencyCode directly to the ecommerce object, like in the code example below:
window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: 'transaction', ecommerce: { currencyCode: 'EUR', purchase: { actionField: { id: '123456', revenue: '13.00' }, products: [{ id: '6789', price: '13.00', quantity: 1 }] } } });
That way, you won’t need to set the currency as an additional field in the Universal Analytics tag, GTM will do that automatically as long as your GA tag (that sends the Enhanced E-commerce payload) has enabled Enhanced E-commerce Features:
Multi-currency tracking in Google Analytics: Final Words
Huh, we’re already at the end of this guide. For some reason, I initially expected it to be longer and I feel like I’ve lost a bit of self-confidence (because, you know, if a blog post is shorter than 2000 words, it’s an amateur’s work 🙂 right?).
Anyway, back to the main topic. If your online store operates in several currencies, you’ll need to do some additional (although minor) configurations in the data you pass to Google Analytics via GTM (but the same principles apply even if GTM is not in the stack).
Here are the key takeaways from multi-currency tracking:
- Google Analytics displays sales in a single currency that is configured on the GA View level. If your business operates in multiple currencies, you can pass monetary values in original currencies and Google Analytics will take care of the currency conversion. However, you need to pass the currency code too.
- When a developer passes the E-commerce data to the Data Layer (regardless of whether we’re talking about the Standard or Enhanced E-commerce), ask him/her to additionally push the currency code (here’s the list of supported currencies). A developer should not convert the original amount of money that is sent GA. Google Analytics will take care of that.
- If you’re working with the Standard E-commerce, you need to create a Data Layer variable for the Currency Code and set it as an additional field currencyCode in the Universal Analytics Transaction Tag.
- If you’re working with the Enhanced Ecommerce, currencyCode field will also do the job. Alternatively, if a developer adds the currencyCode key to the ecommerce object within the Data Layer, GTM can fetch its value automatically. In the latter case, Fields to Set configuration is not needed.
Oh, and one more thing. When you change the currency in the GA View, it will not affect the past data and will only apply to the future E-commerce data. So keep that in mind.
As always, the comments are at your service. Feel free to ask a question about the multi-currency tracking if you have one.

5 COMMENTS
hi thank you for your effort , actually this topic is the most asked and annoying setting in the GA and till now no one can explain what happened in a straightforward way , regarding your article i got lost actually may be cause i can't find the setting you mention or i use another setting, you have repeated paragraphs that's what i've felt may u wanted to rephrase what u said !,but i still can;t get it work i got "not sent" result when i try to filter my report for currency, i use this code :
-------------------------------
trackingData.currencyCode = {{currency}}';
dataLayer.push(trackingData);
-------------------------------
Hi, Julius,
Thank you for the post.
This may save time to some of the people - Google Analytics didn't do automatic currency conversion then I named Data Layer Variable 'currencyCode'.
After I gave it different name (e.g. 'transactionCurrency') it got working.
Best.
Hi, I'm using adsense so I can't use your method with GTM.
My Google Adsense account currency is ILS. However when I change under the "View" settings of my G-Analytics property to ILS it won't display the currency in ILS in the reports of Analytics, it shows it in USD.
Do you know how to solve it?
obvious.. This is most awesome method for multi-currency setup in Google analytics. but i used to set-up ecomm tracking manually track products and revenue. can i use multi-currency setup without Gtm. if i do with gtm then how can make variable for currency code with gtm.
Hi all...I'm having a problem with measurement protocol parameter "cu" because it's not be passed anymore through GTM when using UA standard e-commerce (non enhanced). Passing currencyCode as field to set in the tag as explained here, seems not working anymore. Is there anyone that found a solution?