Updated on 29 September, 2023

How To Add Google Ads Conversion Tracking to Shopify With Optional Enhanced Conversions

Easily add Google Ads conversion tracking to Shopify in less than 15 minutes.

Supported Functions

  • Automatically supports multi currencies.
  • Automatically converts European prices with commas to dots.
  • Optional choice for disabling tax and shipping in your checkout value.
  • Includes the new Google Ads enhanced conversion option


  • Access to Google Ads > Conversions
  • Access to Shopify > Settings

Step 1: Open Shopify Checkout Settings

Open a new tab in your browser and log in to your Shopify Admin Panel

Navigate to Settings (Gear Icon) and choose Checkout

Shopify Checkout

Step 2: Setup & Copy Your Google Ads Conversion Code

In a second browser tab, login to Google Ads and click on the tools and settings menu in the top right corner and select Conversions under the Measurement column.

Google Ads Conversion

Click on the big blue plus sign (New Conversion Action).

Now select website as your tracking template.

It will now ask you to scan your website URL. Enter your URL and click on scan.

Scroll to the bottom and choose to install the conversion action manually.

Then do the following :

  • Conversion name
    • enter any name
  • Category
    • Purchase / Sale
  • Value
    • Use different values for each conversion
  • Attribution model
    • Choose Position-Based (recommended for growth based businesses)
  • The rest can be as default

I have written a great article on how to choose your attribution model.

Click on Create and continue

Create your website conversion action

Now you can click on Save And Continue

Google Ads Continue Conversion Action

Click on See Event Tag

Google Ads See Event Tag

Copy your Event Snippet and save it in a temporary file, for later use.

Google Ads Copy Event Snippet

Click on Done

Google Ads Conversion Action Done

Click on the recently added conversion action

Google Ads Conversion Action

Enabling Enhanced Conversions is optional and not required. Some accounts may not see this option yet. So you can continue the steps below, excluding those related to enhanced conversions. (Skip to Step 3)

Now go to Tools and Settings > conversions > settings or click here: https://ads.google.com/aw/conversions/customersettings

By enabling enhanced conversions you allow Google to improve its accuracy to track conversions. This seems to be required due to Apple’s IOS14 no tracking prompt.

After you have checked the box and clicked on save, you will get a terms and conditions prompt, read it and confirm.

Turn on Google Ads Enhanced Conversions

Now choose Google Tag and click on Tag Details.

Turn on Google Tag and View Tag Details

Now check the box next to Specify CSS selectors or JavaScript variables

  • Change CSS selector to Global Javascript variable
  • Enter the following values for Email
    • enhanced_conversion_data.email

Repeat the steps for Phone number and Name and Address

  • Phone
    • enhanced_conversion_data.phone_number
  • First name
    • enhanced_conversion_data.first_name
  • Last name
    • enhanced_conversion_data.last_name
  • Street address
    • enhanced_conversion_data.home_address.street
  • City
    • enhanced_conversion_data.home_address.city
  • State
    • enhanced_conversion_data.home_address.region
  • Country
    • enhanced_conversion_data.home_address.country
  • Postal code
    • enhanced_conversion_data.home_address.postal_code
Google Ads Javascript Conversion Tracking Variables

You might ask, why the javascript values? Well on your thank you page, the javascript selector for all the values is added as a javascript variable when using the conversion tracking code below (From V1.5). This will only work if you use the code below.

Step 3: Editing and Pasting Your Google Ads Conversion Tracking

Go back to Shopify and scroll down until you see Order Processing (from step 1), at the bottom of this section you will have a field where you can paste code that is labeled Additional Scripts.

If you have two fields such as post purchase and order status, then add the code to the order status field.

Shopify Additional Scripts

Copy the send_to value (image below) and replace fa_send_to value with your value in the code template below.

  1. replace the value for fa_send_to
    • replace the value AW-123456789/abcdefghijlklmnopq with your event snippet send_to value
  2. Choose yes or no for fa_include_tax_and_shipping
    • choose yes if you want to include tax and shipping in the checkout value or no to not include tax and shipping values.

Sometimes on rare occasions, when you set fa_include_tax_and_shipping to no, it would still include the shipping. I’m not sure why this sometimes happens, but it might have to do with the account country. So if you notice shipping is included, set the value to yes, and it will remove shipping.

Code Template (change the fa_send_to value with your code snippet send_to value)

<!-- FEEDARMY START Global site tag (gtag.js) - Google Ads V2.2 -->
<!-- For the latest and updated code or tutorial: https://feedarmy.com/kb/adding-adwords-conversion-tracking-to-shopify/ -->
{% assign fa_send_to = 'AW-123456789/abcdefghijlklmnopq' %}

{% comment %}DO NOT EDIT BELOW{% endcomment %}
{% if fa_google_coding %}{% assign fa_google_coding = true %}{%- else -%}{% assign fa_google_coding = false %}{%- endif -%}
{% assign fa_google_ids = fa_send_to | split: "/"  %}

{% if fa_google_coding == false %}
<script async src="https://www.googletagmanager.com/gtag/js?id={{fa_google_ids[0]}}"></script>
{%- endif -%}
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', '{{fa_google_ids[0]}}', {'allow_enhanced_conversions':true});
  var checkout = window.Shopify.checkout;
{% if first_time_accessed %}
  gtag('event', 'conversion', {
      'send_to': '{{ fa_send_to }}',
      'value': checkout.total_price_set.presentment_money.amount,
      'currency': checkout.total_price_set.presentment_money.currency_code,
      'transaction_id': '{{ order_id }}',
  var enhanced_conversion_data = {
    {% unless billing_address.first_name == blank %}"first_name": "{{ billing_address.first_name }}",{% endunless %}
    {% unless billing_address.last_name == blank %}"last_name": "{{ billing_address.last_name }}",{% endunless %}
    {% unless checkout.email == blank %}"email": "{{ checkout.email }}",{% endunless %}
    {% unless billing_address.phone == blank %}"phone_number": "{{ billing_address.phone }}",{% endunless %}
    "home_address": {
      {% unless billing_address.street == blank %}"street": "{{ billing_address.street }}",{% endunless %}
      {% unless billing_address.city == blank %}"city": "{{ billing_address.city }}",{% endunless %}
      {% unless billing_address.province_code == blank %}"region": "{{ billing_address.province_code }}",{% endunless %}
      {% unless billing_address.zip == blank %}"postal_code": "{{ billing_address.zip }}",{% endunless %}
      {% unless billing_address.country_code == blank %}"country": "{{ billing_address.country_code }}"{% endunless %}
{% endif %}
<!-- FEEDARMY END Global site tag (gtag.js) - Google Ads V2.2 -->

Verifying and Testing


You can verify if the code is working if you go to Google Ads > Tools and Settings > Conversions > here check if the status is verified.


First open up Tag Assistant when the new window opens up make a test payment to check if the conversion tracking is correctly installed. When you are on the final thank you page check the data within Tag Assistant.

first_time_accessed is for the page, not for the customer. Subsequent orders will run a first_time_access again for the same person if it is a new browser session.

Trouble Shooting Enhanced Conversions

Make sure you have waited at least 3 to 7 days. Google requires time to compile the data.


You may encounter issues with regard to coverage. This can happen when customers pay through a third-party payment processor (PayPal), which may require that they enter customer data on a different domain instead of directly on your website like they do when they do not use a third-party payment processor. 

Google Ads Enhanced Conversion By Tags

Match status:

If you are having issues with the match status, not all users fill out all the fields in your checkout. What you could do is remove the attributes in your Google Ads conversion list to only track emails or only track mandatory fields in your checkout.

By removing non-mandatory fields, you will avoid submitting empty fields to Google.

Google Ads Enhanced Conversions Match Status Issues

Enable Remarketing

Track your existing website visitors by installing remarketing for Shopify. A returning visitor is twice as likely to convert as a first-time visitor. Use this data for display remarketing ads and audience targeting.

Enable Micro Conversions

If you like to track more minor conversion actions ie, micro-conversions such as add to cart, view cart, add a delivery address. Then install Google Analytics Goals.

Support My Work!

My conversion tracking code is constantly updated and provided free for anyone to use. As I don’t ask for anything in return, I would be grateful if you consider leaving a review: https://www.trustpilot.com/review/feedarmy.com

Change Log

  • 8th September 2023 – updated the steps for enhanced conversion tracking
  • V2.2 – 11 July 2023 – updated code to validate every value
  • V2.1 – 24 June 2023 – updated checkout price to use presentment_money
  • V1.8 – 10 August 2022 – Added enhanced conversion checks for email and phone number
  • V1.7 – 07 June 2022 – Fixed incorrect total value when changing shipping and tax settings
  • V1.6 – 28 April 2022 – Fixed the country code not adding the value correctly as highlighted by Jon Yildiz
  • V1.5 – 27 July 2021 – Added Enhanced Conversions using Javascript and removed CSS
  • V1.4 – 21 July 2021 – Added Enhanced Conversions using CSS
  • Due to server migration, older changes are not listed

Need Help?
Do you have a question or need specialist support? Get in touch!

Notify of
Oldest Most Voted
Inline Feedbacks
View all comments
23 days ago

hey my freinds, now shopify use “customer events” to manage tracking code now,can you tell how to convert you code which added on Additional Scripts section to “customer eventssection? Many Thanks…

24 days ago

Super helpful, although on google ads its still listing my conversion as “inactive”. I see the snippet code on the view source page so cannot for the life of me figure out what is wrong. It looks like it’s capturing every action up to clicking “pay now”.

2 months ago

I configured the enhanced conversion (Using Google Tag) as per the provided reference. However, as per the Google Tag Configuration, It takes up to 45 days to validate the data. Is there any way the validations can be confirmed earlier? The purchase conversion is verified and it’s recording conversion properly.

Josh Bud
Josh Bud
2 months ago


I think the guide might be out of date by now as there are 2 additional code sections under Checkout section in Shopify now? In your guide just one field / section.

Please advise.

Seems I got it working by adding to the Post-Purchase page. Shopify is officially adding code to Order Status field instead.

Last edited 2 months ago by Josh Bud
Josh Bud
Josh Bud
Reply to  Emmanuel Flossie
2 months ago

Thanks – good to know 🙂

2 months ago

What if I desire the prices to be sent to GA in shop currency instead of presentment currency?
From what I can see, Shopify does not expose the prices in Shop currency, only presentment currency. Is there a way around this? (Additionally, would not want GA doing the FX conversion for reasons such as they do not know the FX rate used for the transaction, etc.)

2 months ago

Hi Emmanuel!

In the last code versione V2.2 , where can I edit fa_include_tax_and_shipping? I’m using V1.8, where I’ve {% assign fa_include_tax_and_shipping = ‘no’ %} text code but don’t found it in code template V2.2. Am I missing something? Thank you!

3 months ago

Great Guide, I feel like a lot has changed since you wrote this.

  1. Shopify now offer a Pixels Section under Customer Events in the shopify settings, would this not provide more accurate data for someone not on Shopify advanced ( meaning they have no access to the checkout.liquid)
  2. Under Settings > Enhanced Conversions, there is no longer the option to input the values that you have provided here, it’s just a drop down box and if you select Google Tag, there are no further options except to Save.
3 months ago

This is awesome! Thankyou.

One question, when setting up my Google Ads tag and enhanced conversions, it automatically linked the tag creation to my existing gtag on site. Is this normal and is there anything extra I need to do?

Will it still work? I followed everything you did.

3 months ago

Great article Emmanuel. I have a few questions…

I recently noticed that I was missing a lot of conversions inside my Google ads account. This was after the migration to GA4. However, after doing more research and tests, I noticed that some users bounce back from my post-purchase page after they buy and because of this, I wasn’t able to track the conversions.

I’ve been using enhanced conversions through GTM and then added the tracking scripts from my order status page to the post-purchase page.

However, after reading the Shopify official document about this, it seems that liquid code isn’t accepted on the post-purchase page, which from what I understand is the base on which is build the enhanced conversions tracking code…

Also, detailed address attributes like street, city, and region were not listed among the provided fields for the post-purchase page.

Would this mean that we can’t send enhanced conversion data in order to effectively track conversions that bounce from the post-purchase page?

3 months ago


I have set this up as descibed.
However the google ads pages have been updated.

The questions i have are as follows
-If i was not able to put in my enhanced conversion tracking information for variable, email, address etc, would your code still work as its meant to?
-Do we still add our google tag code to our shopify code between the <head></head>?

4 months ago

I have added the conversion code to the Shopify checkout section.
After that I got 2 sales.

Conversion status in Google Ads dashboard changed from “Inactive” to “No recent conversions”.
Last seen – “today”. Conversion value – 0. When I check Google Ads dashboard, there are 0 conversions.

What could be the reason? Maybe it’s because my website currency is in GBP, yet my conversion value in Google Ads is in EUR?
Thank you.

4 months ago

how can I add this conversion to GA4?

5 months ago

Now that Shopify allows users to make purchases in their native currencies, how will this convert the transaction value to the currency of the Google Ads account?

Please see below what Digital Darts says on the topic:

Firstly, it uses the currency and currency code from the user at checkout. The currency someone checks out with is called the “customer currency” or “presentment currency“. Shopify makes this available through JavaScript at checkout. This saves us a load of pain in having to format the ever growing number of currencies accepted in Shopify.
Many currencies like the Euro use a comma for the decimal point. The Norwegian Krone has a comma for decimals then separates three digits with a full stop. Google requires the purchase value to be free of commas and to have the decimal point a full stop. Shopify handles this for all currencies with Shopify.checkout.total_price_set.presentment_money.amount so let’s not recreate the wheel.
Google will accurately convert the currency to match the billing currency on your ad account. Google documentation says, “…if the Google Ads account driving a click that converts has a different billing currency, the conversion value will be converted to that account’s currency using the average daily foreign exchange rate.”

6 months ago

For info, for several websites, the conversions tag doesn’t seem to be triggered anymore. The tag is not found on the thank-you page when I do a test.

9 months ago

Shouldn’t {{ checkout.currency.iso_code }} be used instead of {{ currency }}? I believe {{ currency }} outputs the symbol of the currency, but google wants the ISO code…

Reply to  Emmanuel Flossie
9 months ago

I think you misunderstood my original question. I was asking if the code should read as follows:

gtag(‘event’, ‘conversion’, {
‘send_to’: ‘{{ fa_send_to }}’,
‘value’: {{ fa_checkout_price }},
‘currency’: ‘{{ checkout.currency.iso_code }}’,
‘transaction_id’: ‘{{ order_number }}’

But after doing some testing myself, I see that {{ currency }} is correct (checkout.currency.iso_code does not output anything on the thank-you page), and even chatGPT got this one wrong (this will age well!). All resources I found indicate that checkout.currency.iso_code should be used, but as I said previously after testing it you are indeed correct.

Last edited 9 months ago by Jon
10 months ago

Hi. Thanks for the post. I don’t have an “additional scripts” form in my checkout -> order processing. Did this change recently when they added the post purchase form to checkouts?

10 months ago

Hi – have you got an update for this for G4 tracking? Many thanks, George

11 months ago

Hi, for UK market we get Issues detected with your enhanced conversion setup, I believe this is because they do not use a “State”, if we leave State blank in the Enhanced Conversions setup page we still get errors, is there another enhanced_conversion_data. that should be used?

Jonathan Reed
Jonathan Reed
11 months ago

awesome! It works. I have a question, I have two accounts, how to merge and paste their enhanced conversion codes? Or do I need to paste the code twice?

1 year ago

Hey, Emmanuel . Please help, I have left my comments in this question https://stackoverflow.com/questions/73611320/ga4-purchase-event-duplicate/74266851#74266851
We have doubling of events when debugging in Tag Manager – view_item, add_to_cart, begin_checkout, purchase. Everything doubles. Seems that in TagManager all these events are pushed to dataLayer. How can we turn off this doubling of conversions in Ads as we don’t need it.
There is no shopping app in Shopify, but Ads and Merchant Center are connected to Shopify. Appreciate your help.
Thank you

Reply to  Emmanuel Flossie
11 months ago

Hi Emmanuel! Thank you for your answer . I found this trekkie when inspecting the code so I suppose it is it who doubles my events. They are pushed with dataLayer with the conversion labels exactly the same as my Google Ads tag ‘AW-…’ Moreover the names of events are the same as reserved GA4 ecommerce events – view_item, add_to_cart , etc. But there is no GA4 configuration in GTM set up twice.
Also I found comment on December 3, 2020 at 5:51 am in this article https://business.czarto.com/2020/09/29/shopify-google-ads-conversions/. I think it is Google Shopping app who creates them automatically and sends to Ads.

Odera Joseph
1 year ago

What the FFFF! It works. Love this!!!

1 year ago

I setup everything as you mentioned.
Google conversions says “Recording enhanced conversions” in the diagnostics tap.
But I can’t see any of the test purchase data with Tag Assistant!


1 year ago

Did it work for you?

1 year ago

Hi Emanuel! Thanks for your great blog!

Can we just use javascript variables from the Shopify object?



Thanks =)

Jon Yildiz
Jon Yildiz
1 year ago

Two things: The “country” variable you’re passing from the billing_address object passes the full name of the country, but Google expects the ISO country code, which is billing_address.country_code

Also, can I ask why we’re making changes to the code but then using the code to pass javascript variables? What’s wrong with choosing “website code” as the implementation method and just passing those in the “order page additional tracking” edit?

1 year ago

Hi, before install this Google Ads Enhanced Conversion Code, should I need to delete the original Google Ads Conversion code which be installed before? Is the Enhanced conversion code can replace the conversion code?

1 year ago

Hello Emmanuel

I dont have the option of enhanced option to check you know why ?

1 year ago

Is there a way to delete the tracking caused by the app in the first place?
as in I replaced the tracking with my own tracking and the feed from the app is no longer needed.

Gooner Fermat
Gooner Fermat
1 year ago


I set up following your guide and there are some problems:
1. There are 2 google site tag in my site (duplicated, I also add remarketing tag from your guide)
2. When I made a test payment and check via Tag Assistant:
– There is no enhanced code. It seemed not work
– There is a “purchase” event that I believe from Remarketing setup
– In “Conversion” event, the label did not come from our account
– There are more 6 google site tags in final checkout page (total 8 google site tags), it seemed duplication

Can you help resolve this problem ?

2 years ago

How to added enhanced conversion tracking for shopify rechargeapp?

Would love your thoughts, please comment.x