| The Complete Guide: Every Conversion Type, Setup, Troubleshooting & Best Practices |
|---|
| What You Will Learn | Details |
|---|---|
| All Conversion Types | Website, Calls, App, Imported — all fully covered |
| GTM Setup (Step-by-Step) | Google Tag, Conversion Linker, Tracking Tags |
| Enhanced Conversions | Hashed first-party data, email & phone matching |
| Dynamic Values | ROAS-ready variable setups for e-commerce |
| Consent Mode | EU/UK compliance with Google Consent Mode v2 |
| Troubleshooting | 15+ common issues with root causes and fixes |
1. What Is Google Ads Conversion Tracking — And Why It Matters
Google Ads conversion tracking is a measurement system that records what happens after a user interacts with one of your ads — whether they clicked a Search ad, watched a Video ad, or saw a Display banner. When that user subsequently takes a meaningful action on your website, app, or by phone, Google records it as a conversion.
Without conversion tracking, Google's Smart Bidding algorithms have no signal to optimise toward. Your campaigns run blind: you might be spending most of your budget on keywords or creatives that generate zero business outcomes.
Micro vs. Macro Conversions
Conversion actions fall into two categories:
- Macro conversions are your primary business goals: purchases, signed contracts, booked appointments.
- Micro conversions are precursor actions that indicate intent: newsletter signups, whitepaper downloads, video plays past 50%, add-to-cart events.
Both matter. Macro conversions feed Smart Bidding directly. Micro conversions help you understand the customer journey, identify drop-off points, and build remarketing audiences.
2. Why Use Google Tag Manager for Google Ads Tracking?
You have two options for deploying Google Ads tracking code: hardcode it directly into your site, or manage it through Google Tag Manager (GTM). For the vast majority of businesses, GTM is the right choice.
| Factor | GTM vs. Hardcoded Tags |
|---|---|
| Speed of changes | GTM: deploy new tags in minutes without developer involvement |
| Error risk | GTM: preview and debug before going live; hardcoded has no sandbox |
| Version control | GTM: full version history and rollback; hardcoded requires code deploys |
| Consent Mode | GTM: built-in Consent Mode v2 integrations via templates |
| Multiple tags | GTM: one snippet manages all tags; hardcoded multiplies site debt |
| Enhanced conversions | GTM: dedicated user-provided data variable; easier to maintain |
GTM also enables non-developers — marketers, analysts, and agencies — to deploy and iterate on tracking independently, which dramatically reduces the time-to-insight for campaign optimisation.
3. Prerequisites Before You Begin
Before setting up any conversion tags, confirm the following prerequisites are in place:
- A live Google Tag Manager container is installed on every page of your website.
- You have Edit or Publish permissions on the GTM container.
- Your website or development team can push dataLayer events for custom conversion actions (form submissions, purchases, etc.).
- For Enhanced Conversions: your site captures user-provided data (email, phone) and can push it to the dataLayer.
- For Call Tracking: you have a verified phone number in Google Ads.
- For App Conversions: you have Firebase or an equivalent SDK in your app.
| Pro Tip Before adding any new tags, audit your existing GTM container. Look for duplicate Google Tags (multiple AW- IDs), misfiring triggers, or outdated conversion linker setups. Duplicate Google Tags are the single most common cause of inflated conversion counts and campaign degradation. |
|---|
4. Step 1 — Set Up the Google Tag (Foundation Tag)
The Google Tag (formerly the Global Site Tag, gtag.js) is the mandatory base tag that must load on every page before any conversion tracking can work. Think of it as the SDK that all other Google Ads tags depend on.
4.1 Create the Google Tag in GTM
- In your GTM Workspace, click New Tag.
- Under Tag Configuration, select Google Tag.
- Enter your Google Ads Tag ID, which begins with AW- (e.g., AW-123456789). You find this in Google Ads under Tools > Setup > Tag setup.
- Set the trigger to Initialization — All Pages. This fires before all other tags, ensuring it loads first.
- Name the tag clearly: Google Tag | Google Ads | AW-XXXXXXXXX.
- Save the tag.
| Important: One Google Tag Per Account You should only have ONE Google Tag per Google Ads account ID in your GTM container. Having multiple instances of the same AW- ID causes double-counting, corrupts Smart Bidding signals, and can break Performance Max campaigns. If you also use GA4 and Google Ads together, you can use a single Google Tag with multiple destinations. |
|---|
4.2 What the Google Tag Does
- Loads the Google Ads tracking library (gtag.js) on every page.
- Sets first-party cookies on your domain that persist attribution data across sessions.
- Handles Conversion Linker functionality (cross-domain and cross-device attribution) — this is now built into the Google Tag, so a separate Conversion Linker tag is no longer required in most configurations.
- Acts as the host for Enhanced Conversions and Consent Mode signals.
4.3 Disable Automatic User-Provided Data Collection
Google Ads recently introduced automatic detection of user-provided data (email, phone, name) from form fields. This sounds convenient but creates compliance and data-quality risks. Best practice is to manage this yourself:
- In GTM, go to Admin > Google Tags.
- Search for your AW- ID and open the Google Tag settings.
- Under Allow user-provided data capabilities, uncheck Automatically detect user-provided data.
- Save. You will manually control what data is sent via the Enhanced Conversions setup covered in Section 8.
5. Step 2 — Conversion Linker Tag
The Conversion Linker tag sets first-party cookies on your website to support conversion attribution. It reads the GCLID (Google Click ID) parameter from the URL when a user clicks an ad and stores it in a cookie so it can be read later when a conversion fires.
5.1 Is the Conversion Linker Still Required?
As of the updated Google Tag implementation (2024 onwards), the Conversion Linker functionality is built into the Google Tag itself for same-domain setups. However, you should still create a dedicated Conversion Linker tag in these scenarios:
- Cross-domain tracking: users navigate from one domain (e.g., yourshop.com) to a checkout on another domain (e.g., checkout.paymentprovider.com).
- Legacy GTM containers that were set up before the Google Tag included this functionality.
- You are explicitly required to include it by your tracking plan or agency SOPs.
5.2 Create the Conversion Linker Tag
- In GTM, create a New Tag.
- Under Tag Configuration, select Conversion Linker.
- Leave the default settings unless you are configuring cross-domain tracking (see below).
- Set the trigger to All Pages.
- Name it: Conversion Linker | All Pages.
- Save.
5.3 Cross-Domain Linker Configuration
If your conversion path spans multiple domains, you must configure the Conversion Linker for cross-domain support:
- In the Conversion Linker tag, expand Advanced Settings.
- Enable the Enable cross-domain linking option.
- Enter all domains in your conversion path (e.g., yoursite.com, checkout.yoursite.com, partner-checkout.com).
- Also update your Google Tag to include the same domain list under Cross-domain measurement settings.
| Why Cross-Domain Breaks Conversions Without cross-domain linking, the GCLID cookie is scoped to the original domain and cannot be read on the checkout domain. The result is that all purchases on the checkout domain will appear as direct traffic with no ad attribution — massively undercounting your paid conversion value. |
|---|
6. All Google Ads Conversion Types — Detailed Setup
Google Ads supports multiple conversion categories. Each requires a different trigger setup in GTM and different configuration in the Google Ads interface. This section covers all types comprehensively.
6.1 Website Conversion: Form Submission (Lead Generation)
This is the most common conversion type for service businesses, B2B companies, and any site with a contact form. The trigger fires when a user successfully submits a form.
Step A: Create the Conversion in Google Ads
- In Google Ads, navigate to Goals > Conversions > Summary > + New Conversion Action.
- Select Website as the conversion source.
- Choose the conversion category (e.g., Submit lead form, Contact, or Request quote).
- Set the conversion name (e.g., contact_form_submit).
- Set Value to a fixed amount reflecting the average worth of a lead, or set it to 0 if unknown.
- For Count, select One — a user submitting the same form twice in a session is still one lead.
- Set Click-through conversion window (typically 30 days for lead gen).
- Under Tag setup, select Use Google Tag Manager and copy the Conversion ID and Conversion Label.
Step B: Create the Trigger in GTM
The trigger depends on how your form confirms submission. There are three common scenarios:
- Thank-you page load: User is redirected to /thank-you after submission. Create a Page View trigger where Page Path equals /thank-you.
- Same-page success message: The form submits via AJAX and shows a success message without a page reload. Requires a dataLayer push from a developer or a GTM Form Submission trigger with validation.
- dataLayer custom event: Developer pushes an event (e.g., form_submit_success) to the dataLayer on successful submission. This is the most reliable approach.
For the dataLayer custom event approach, create a Custom Event trigger in GTM matching the event name exactly as it appears in the dataLayer:
| // Example dataLayer push (implemented by developer) window.dataLayer = window.dataLayer || []; dataLayer.push({ 'event': 'form_submit_success', 'form_id': 'contact-form', 'form_name': 'Contact Us', }); |
Step C: Create the Google Ads Conversion Tag in GTM
- In GTM, create a New Tag.
- Select Google Ads Conversion Tracking as the tag type.
- Enter the Conversion ID and Conversion Label from Google Ads.
- Leave the Conversion Value field blank for a fixed value (it is set in Google Ads), or use a dataLayer variable for dynamic values.
- Add a Transaction ID variable (recommended) to prevent duplicate conversions.
- Set the trigger to the form submission trigger created in Step B.
- Name it: GAds | Conversion | Contact Form Submit.
- Save.
6.2 Website Conversion: Purchase / Transaction (E-commerce)
For e-commerce stores, the purchase conversion is the most critical measurement. It requires dynamic values (order total, transaction ID, currency) pulled from the dataLayer.
dataLayer Setup for Purchase
Your development team should push the following to the dataLayer on the order confirmation page:
| dataLayer.push({ 'event': 'purchase', 'transactionId': 'ORDER-12345', 'transactionRevenue': 149.99, 'transactionCurrency': 'USD', 'transactionTax': 12.00, 'transactionShipping': 5.99, 'transactionProducts': [{ 'name': 'Blue Wireless Headphones', 'sku': 'SKU-001', 'category': 'Electronics', 'price': 149.99, 'quantity': 1 }] }); |
GTM Variables for Purchase Data
Create the following dataLayer variables in GTM:
| Variable Name | dataLayer Key Name |
|---|---|
| DLV – Transaction ID | transactionId |
| DLV – Transaction Revenue | transactionRevenue |
| DLV – Transaction Currency | transactionCurrency |
Google Ads Conversion Tag for Purchase
In the Google Ads Conversion Tracking tag:
- Conversion Value: set to the {{DLV – Transaction Revenue}} variable.
- Transaction ID: set to the {{DLV – Transaction ID}} variable. This is critical — it prevents the same order from being counted twice if a user refreshes the confirmation page.
- Currency Code: set to the {{DLV – Transaction Currency}} variable (or hardcode USD/GBP/EUR if single-currency).
- Count: set to Every (each purchase is a distinct conversion).
- Trigger: Custom Event trigger matching the purchase event name.
6.3 Website Conversion: Page View (Content Engagement)
A page view conversion fires when a user reaches a specific URL, typically a thank-you page, a pricing page, or a high-intent content page. This is the simplest conversion to implement.
- Create a Conversion in Google Ads with category Page View or other appropriate category.
- In GTM, create a Page View trigger (All Page Views or a specific URL match, e.g., Page URL contains /thank-you).
- Attach this trigger to a Google Ads Conversion Tracking tag.
Use this sparingly — if you set page view conversions on high-traffic pages, Smart Bidding will optimise toward traffic rather than intent, which can dilute campaign efficiency.
6.4 Website Conversion: Scroll Depth and Video Engagement
Micro-conversions like scrolling 75% down a page or watching 50% of an embedded video signal content engagement and help qualify remarketing audiences.
Scroll Depth Trigger
- In GTM, create a new Scroll Depth trigger.
- Choose Vertical Scroll Depths and set thresholds (e.g., 50%, 75%).
- Enable the trigger only on specific pages using page conditions (e.g., Page Path contains /blog/).
- Attach to a Google Ads Conversion Tracking tag with a low fixed value or zero.
YouTube Video Trigger
- In GTM, create a YouTube Video trigger.
- Select the video progress thresholds (e.g., 50%, complete).
- For this to work, the YouTube embed on your page must have the enablejsapi=1 parameter.
- Attach to a Google Ads Conversion Tracking tag.
7. Call Conversion Tracking — All Three Methods
Phone calls are a critical conversion type for local businesses, healthcare providers, legal services, financial advisors, and any business that closes deals over the phone. Google Ads and GTM support three distinct call tracking methods.
7.1 Calls from Ads (Call Extensions / Call Assets)
When a user calls your business directly from a call extension or call-only ad shown in Google Search, Google automatically records the call as a conversion if it meets your minimum duration threshold. No GTM setup is required.
Setup in Google Ads:
- In Google Ads, navigate to Goals > Conversions > + New Conversion Action.
- Select Phone calls as the conversion source.
- Choose Calls from ads using call extensions.
- Set a minimum call duration (e.g., 60 seconds) — calls shorter than this threshold will not be counted as conversions.
- Set the conversion name, value, and count preferences.
- Google assigns a forwarding number to your ad. When users call that number, Google records the conversion automatically.
This conversion type requires no GTM involvement. The tracking is entirely on Google's infrastructure.
7.2 Calls from Your Website (Website Call Tracking)
This method uses a dynamically swapped phone number on your website. When a visitor arrives via a Google Ad, Google's JavaScript replaces your displayed phone number with a unique forwarding number. When the user calls that number, Google logs it as a conversion.
How It Works:
- The Google Tag (already firing on all pages) includes the call tracking JavaScript.
- When a user arrives from a Google Ad (GCLID is present), the script replaces the phone number on the page with a unique Google forwarding number.
- The user calls the forwarding number; Google captures the call and attributes it back to the ad click.
Setup in Google Ads:
- Navigate to Goals > Conversions > + New Conversion Action.
- Select Phone calls > Calls to a phone number on your website.
- Set the minimum call duration and other conversion parameters.
- Google provides a snippet of code that tells the Google Tag which phone number to replace. You do NOT need to add this snippet manually if GTM is correctly deployed — the Google Tag handles it.
- Under Tag setup, select Use Google Tag Manager and note the Conversion ID and Label.
GTM Configuration:
- Create a Google Ads Conversion Tracking tag with the Conversion ID and Conversion Label from the above step.
- Set the trigger to a Phone Number Click trigger OR a Window Loaded trigger (some implementations require the tag to fire on page load to initialise the number swap).
- Alternatively, create a Click — Just Links trigger with the condition Click URL contains tel: to fire on phone number clicks.
| Important: Phone Number Format For website call tracking to work, the phone number on your website must match exactly the number you register in Google Ads (including country code format). Mismatches prevent the number swap from occurring, meaning calls are never attributed to your ads. |
|---|
7.3 Calls from Mobile Click-to-Call (tel: Link Clicks)
On mobile devices, users tap a phone number to initiate a call. You can track this action as a conversion even if you are not using Google forwarding numbers.
GTM Trigger Setup:
- In GTM, create a new trigger of type Click — Just Links.
- Set the condition: Click URL starts with tel:.
- This fires whenever a user clicks any telephone link on your site.
Google Ads Conversion Tag:
- Create a conversion in Google Ads (Goals > Conversions > + New) with category Phone Call.
- Note the Conversion ID and Label.
- In GTM, create a Google Ads Conversion Tracking tag with these credentials.
- Attach the tel: click trigger.
Note: This tracks the tap (click on the link), not whether the call was answered or how long it lasted. Use it as a micro-conversion signal rather than a primary conversion.
8. App Conversion Tracking
If you are running Google App Campaigns (UAC), conversion tracking works differently from website tracking. GTM's web container is not used for app conversions — instead, conversions are tracked through Firebase (Android/iOS) or directly through the Google Mobile Ads SDK.
8.1 App Conversion Sources
| Conversion Type | How It Is Tracked |
|---|---|
| App installs | Firebase SDK automatically reports first_open event |
| In-app purchases | Firebase purchase event or Google Play billing integration |
| In-app actions | Custom events logged via Firebase Analytics SDK |
| Re-engagement | Deep link clicks tracked via Firebase Dynamic Links |
8.2 Linking Firebase to Google Ads
- In your Google Ads account, go to Tools > Linked accounts > Firebase.
- Follow the linking wizard to connect your Firebase project.
- Once linked, Firebase key events appear automatically as available import options in Google Ads Conversion Goals.
- Go to Goals > Conversions > + New Conversion Action > App > Google Analytics — Firebase.
- Select the Firebase event you want to import (e.g., first_open, purchase).
Once imported, these conversions feed your App Campaign bidding strategies (Target CPA or Target ROAS for app campaigns).
8.3 GTM for Firebase (Mobile)
Google Tag Manager has a separate Firebase container type (as opposed to the web container). You can use GTM for Firebase to:
- Push custom events to Firebase from your app without code deploys.
- Configure event parameters and user properties.
- Manage audience definitions and remarketing lists.
Consult the Firebase GTM documentation for iOS and Android SDK integration specifics, as these fall outside the scope of web-based GTM.
9. Importing Conversions from Google Analytics 4
Instead of setting up native Google Ads conversion tags, you can import Key Events from GA4 into Google Ads as conversions. This is a valid approach but comes with important trade-offs.
9.1 How to Import GA4 Conversions
- In GA4, ensure the event you want to import is marked as a Key Event (Admin > Events > toggle Key Event on).
- In Google Ads, go to Goals > Conversions > + New Conversion Action.
- Select Import > Google Analytics 4 properties.
- Choose your linked GA4 property and select the Key Events to import.
- Set attribution model, counting preferences, and conversion windows.
- Click Import and Continue.
9.2 Native Google Ads Tracking vs. Imported GA4 Conversions
| Factor | Native GAds Tag |
|---|---|
| Data latency | Near real-time (hours) |
| Attribution accuracy | Higher — designed specifically for ad attribution |
| View-through conversions | Fully supported |
| Enhanced conversions | Fully supported natively in GTM |
| Smart Bidding signals | Faster, more direct signal path |
| Dependency | Independent of GA4 pipeline |
| Setup complexity | Slightly higher (separate tag per conversion) |
| Recommendation Use native Google Ads conversion tags (via GTM) as your primary conversion source for Smart Bidding. Import GA4 conversions as secondary conversions only, to avoid bidding on them. This gives you the accuracy of native tracking while maintaining GA4 visibility. |
|---|
10. Enhanced Conversions — First-Party Data for Better Attribution
Enhanced Conversions is one of the most impactful tracking upgrades available in Google Ads. It allows you to send hashed (SHA-256 encrypted) first-party user data alongside your conversion events — matching them to signed-in Google accounts to recover conversions that would otherwise be lost due to cookie restrictions, ad blockers, or ITP (Intelligent Tracking Prevention) on Safari.
10.1 What Data Can Be Sent?
- Email address (hashed) — most effective matching signal
- Phone number (hashed)
- First name and last name (hashed)
- Home address — street, city, region, postal code, country (hashed)
All data is one-way SHA-256 hashed before leaving the browser. Google cannot reverse the hash to identify the individual; it can only check whether the hash matches a signed-in Google account.
10.2 Enable Enhanced Conversions in Google Ads
- In Google Ads, go to Goals > Conversions > Settings.
- Select the conversion action you want to enhance.
- Click Edit settings and locate the Enhanced conversions section.
- Enable Turn on enhanced conversions.
- Select Google Tag Manager as the implementation method.
- Agree to the data policy and save.
10.3 Configure Enhanced Conversions in GTM
Step A: Confirm Data in the dataLayer
Use GTM Preview mode to verify that user-provided data is available in the dataLayer at the time of conversion. Navigate to the conversion event and look for email, phone_number, or name fields:
| // Example dataLayer push with user data (from developer) dataLayer.push({ 'event': 'purchase', 'transactionId': 'ORDER-12345', 'transactionRevenue': 149.99, 'user_data': { 'email': 'user@example.com', 'phone_number': '+14155552671', 'address': { 'first_name': 'Jane', 'last_name': 'Smith', 'city': 'San Francisco', 'region': 'CA', 'postal_code': '94103', 'country': 'US' } } }); |
Step B: Create a dataLayer Variable for Email
- In GTM, go to Variables > New > Data Layer Variable.
- Enter the Data Layer Variable Name exactly as in the dataLayer (e.g., user_data.email).
- Name the variable: DLV – User Email.
- Save.
Step C: Create a User-Provided Data Variable
- In GTM, go to Variables > New.
- Select User-Provided Data as the variable type.
- Under Manual configuration, map the fields: Email > {{DLV – User Email}}, Phone > {{DLV – User Phone}}, etc.
- Name the variable: UPD – Enhanced Conversion Data.
- Save.
Step D: Update the Conversion Tag
- Open your Google Ads Conversion Tracking tag in GTM.
- Check Include user-provided data from your website.
- Select the {{UPD – Enhanced Conversion Data}} variable you just created.
- Save and publish.
| Privacy Note You must ensure your privacy policy and cookie consent banner disclose that you collect and send hashed user data to Google for ad measurement purposes. Enhanced Conversions requires users to have provided their data voluntarily (e.g., by filling out a form or creating an account). Never send data scraped from third-party sources. |
|---|
11. Dynamic Conversion Values and ROAS Tracking
For e-commerce businesses, sending the actual transaction revenue as the conversion value (rather than a fixed amount) is essential for Return on Ad Spend (ROAS) reporting and Target ROAS bidding.
11.1 Setting Up Dynamic Values
- Ask your developer to push the order value and currency to the dataLayer on the confirmation page (see the purchase dataLayer example in Section 6.2).
- In GTM, create a dataLayer variable: DLV – Order Value mapped to the transactionRevenue key.
- Create a dataLayer variable: DLV – Currency Code mapped to the transactionCurrency key.
- In the Google Ads Conversion Tracking tag, set Conversion Value to {{DLV – Order Value}}.
- Set Currency Code to {{DLV – Currency Code}}.
- Set Transaction ID to {{DLV – Transaction ID}} (prevents duplicate counting on page refresh).
11.2 Variable Fallback Values
Always configure fallback values on your dataLayer variables to prevent sending undefined or null to Google Ads:
- DLV – Order Value: fallback = 0
- DLV – Currency Code: fallback = USD (or your primary currency)
- DLV – Transaction ID: fallback = an empty string or a timestamp-based ID
If the Conversion Value field is empty or undefined, Google Ads will record a conversion value of 0, which corrupts your ROAS data and target bid calculations.
12. Consent Mode v2 — EU/UK Compliance
If your ads are shown to users in the European Economic Area (EEA), the United Kingdom, or Switzerland, you are likely required to implement Google Consent Mode v2 under the EU's Digital Markets Act (DMA) requirements. As of March 2024, Google requires Consent Mode for advertisers using any personalised advertising features.
12.1 What Consent Mode Does
Consent Mode tells Google tags whether a user has consented to cookies. When consent is denied, tags do not set advertising cookies. Instead, Google uses statistical modelling (Conversion Modelling) to estimate conversions that would have been recorded if tracking had been active — preserving Smart Bidding signal quality without violating privacy.
12.2 Two Consent Mode Parameters
| Parameter | What It Controls |
|---|---|
| ad_storage | Cookies used for ad measurement and remarketing |
| analytics_storage | Cookies used for Analytics measurement |
| ad_user_data | Sending user data to Google for ad purposes (Enhanced Conversions) |
| ad_personalization | Personalised advertising features (remarketing, similar audiences) |
12.3 Implementing Consent Mode in GTM
The recommended implementation uses a Google-certified Consent Management Platform (CMP) that integrates with GTM via the Consent Initialisation trigger. Common CMPs with native GTM support include Cookiebot, OneTrust, Usercentrics, and Quantcast Choice.
- Install a certified CMP on your website.
- Configure the CMP to push consent state to GTM's built-in Consent API.
- In GTM, the Google Tag and Conversion Linker tags will automatically respect these consent signals.
- For Basic Consent Mode: tags fire but operate in a restricted mode (no cookies stored on denied consent).
- For Advanced Consent Mode: tags do not fire at all until consent is granted. Google uses modelling to fill the measurement gap.
| Compliance Risk Running Google Ads without Consent Mode to users in the EEA/UK risks account suspension from Google and potential regulatory fines under GDPR. If you serve any European traffic, implement Consent Mode v2 before launching campaigns. |
|---|
13. Testing and Debugging Your Conversion Setup
Never publish a conversion tag without testing it first. A misconfigured conversion tag can corrupt months of Smart Bidding history and inflate or deflate your reported conversion numbers.
13.1 GTM Preview Mode
- In GTM, click Preview in the top-right corner.
- Enter your website URL and click Connect.
- On your site, perform the action that should trigger the conversion (e.g., submit the contact form).
- In the Tag Assistant tab, confirm that your Google Ads Conversion Tracking tag appears under Tags Fired.
- Click on the tag to inspect the data sent: check Conversion ID, Conversion Label, Conversion Value, Transaction ID, and user-provided data fields.
13.2 Google Tag Assistant for Chrome
The Tag Assistant Chrome extension allows you to inspect the exact payload sent from the browser to Google's servers in real time:
- Install Tag Assistant Companion from the Chrome Web Store.
- Enable it on your site during a GTM Preview session.
- Perform the conversion action.
- In the Tag Assistant panel, click the Google Tag (AW-…) and navigate to the Conversions tab.
- Verify the conversion label matches the intended conversion action.
- For Enhanced Conversions, check that the em (email hash) field is populated.
13.3 Google Ads Tag Diagnostics
- In Google Ads, navigate to Goals > Conversions > select the conversion.
- Scroll to the Tag status section.
- Click Test installation — Google will attempt to verify whether the tag fires correctly on your site.
- Once you have clicked a live ad and then completed the conversion, the status changes from Inactive to Active (usually within 24 hours).
13.4 Network Tab Debugging
For advanced debugging, use Chrome DevTools:
- Open Chrome DevTools (F12) and navigate to the Network tab.
- Filter by googleadservices.com or /conversion.
- Perform the conversion action.
- Inspect the network request payload — look for the cvt (conversion value), label, and u (hashed user data) parameters.
14. Troubleshooting — 15 Common Issues and Fixes
Issue 1: Conversion Status Remains 'Inactive'
- Root cause: Tag has not yet fired from a real ad click; the status requires an actual ad-click-to-conversion journey.
- Fix: Click a live Google Ad for your account, then complete the conversion on the site. Wait up to 24 hours for the status to update. Do not use Preview mode — it does not count.
Issue 2: Duplicate Conversions Being Recorded
- Root cause A: Multiple Google Tags (duplicate AW- tags) exist in the GTM container.
- Fix A: Audit all tags in GTM; remove any duplicate Google Tags or Conversion Tracking tags that share the same Conversion Label.
- Root cause B: No Transaction ID is being sent for purchase conversions, and users are refreshing the confirmation page.
- Fix B: Implement the Transaction ID variable in the conversion tag (see Section 6.2).
- Root cause C: The conversion trigger fires on both a form_submit event AND a thank-you page view for the same action.
- Fix C: Choose one trigger mechanism per conversion; do not stack them.
Issue 3: Conversion Tags Not Firing at All
- Root cause A: The trigger event name in GTM does not exactly match the event name pushed to the dataLayer (case-sensitive).
- Fix A: In GTM Preview mode, check the exact event name on the dataLayer tab and copy it precisely into the trigger.
- Root cause B: The GTM container has not been published since the tag was created.
- Fix B: Publish the container and re-test.
- Root cause C: A Consent Mode implementation is blocking tags from firing before consent is granted.
- Fix C: Test on a browser where you have accepted all cookies, or temporarily bypass consent in a test environment.
Issue 4: Conversion Value Shows as Zero or Undefined
- Root cause: The dataLayer variable for order value is not populated at the time the tag fires.
- Fix: In GTM Preview mode, click on the conversion event and check the dataLayer tab. Verify the value key exists and is populated before the tag fires. If the value is pushed after the event, reorder the dataLayer pushes with your developer.
Issue 5: Conversions Attributed to Wrong Campaign
- Root cause: Cross-domain tracking is not configured, causing the GCLID to be lost during a redirect to a third-party checkout.
- Fix: Implement cross-domain Conversion Linker (Section 5.3) and ensure GTM fires on all domains in the conversion path.
Issue 6: Phone Number Not Being Swapped for Website Call Tracking
- Root cause A: Phone number format on the website does not match the number registered in Google Ads exactly.
- Fix A: Match the format precisely — include country code if your Google Ads number uses one.
- Root cause B: The Google Tag is not loading on the page where the phone number appears.
- Fix B: Verify in GTM Preview that the Google Tag fires on that page.
Issue 7: Enhanced Conversions Not Showing Hashed Data
- Root cause: The user-provided data variable in GTM is not correctly mapped to the dataLayer key.
- Fix: Check the exact path of the email field in the dataLayer (it may be user_data.email rather than just email). Update the dataLayer variable name accordingly.
Issue 8: Tag Assistant Shows 'No Conversion Found'
- Root cause: The conversion fired in Preview mode does not originate from an ad click (no GCLID in the URL).
- Fix: For functional testing, Preview mode is sufficient to confirm the tag fires and sends the right data. The No conversion found message in Tag Assistant simply means no GCLID was present — not that the tag is broken.
Issue 9: Smart Bidding Performance Degraded After Tracking Change
- Root cause: A tracking migration (e.g., from GA4 import to native GTM tag) created a conversion count gap during the transition, disrupting the bidding algorithm's learning phase.
- Fix: Run both old and new conversion actions in parallel for 30 days before deprecating the old one. Mark the new one as Primary and the old one as Secondary to avoid double-counting in Smart Bidding.
Issue 10: Consent Mode Blocking All Conversions
- Root cause: Consent Mode is implemented but the default consent state is set to 'denied' and no users are accepting cookies.
- Fix: Check your CMP acceptance rates. If most users decline, ensure you have granted Conversion Modelling to Google (set up in Google Ads under Goals > Conversions > Settings). Also review your consent banner UX — overly aggressive pre-rejection patterns suppress legitimate consent.
Issue 11: Conversion Window Mismatch
- Root cause: Conversion window (e.g., 30-day click-through) is too short for your sales cycle, causing conversions to be missed.
- Fix: In Google Ads, review your average time from first click to conversion in the Attribution report. Extend conversion windows to match your sales cycle (up to 90 days for click-through).
Issue 12: Multiple Google Ads Accounts Sharing One GTM Container
- Root cause: Tags from different Google Ads accounts (different AW- IDs) are all in one container, causing attribution conflicts.
- Fix: Create a separate Google Tag for each Google Ads account ID. Ensure each Google Ads Conversion Tracking tag uses the Conversion ID from its respective account only.
Issue 13: GTM Container Not Published
- Root cause: Changes were saved in GTM but not published — the container version on the live site is still old.
- Fix: Always click Submit in the top-right corner of GTM after making changes. Use a version name and description for clarity.
Issue 14: AMP Pages Not Tracking
- Root cause: Standard GTM container does not load on Accelerated Mobile Pages (AMP). AMP requires a separate GTM container with the AMP-specific snippet.
- Fix: Create a GTM AMP container and implement it on AMP pages. Use the gtag AMP component for Google Ads tracking on AMP.
Issue 15: Conversions Not Showing in Google Ads Reports
- Root cause A: Columns are not set up to display conversion data in the Campaign view.
- Fix A: In the Campaigns table, click Columns > Modify Columns, and add Conversions, Conv. Value, Cost/Conv., etc.
- Root cause B: The conversion action is set as Secondary (not Primary), so it does not appear in default Smart Bidding columns.
- Fix B: In Google Ads, go to Goals > Conversions and set the relevant action to Primary.
15. Best Practices for Google Ads Conversion Tracking
15.1 Naming Conventions
Consistent naming across GTM and Google Ads makes auditing and troubleshooting far easier:
| Asset Type | Recommended Naming Pattern |
|---|---|
| Google Tag | Google Tag | GAds | AW-XXXXXXXXX |
| Conversion Linker | Conversion Linker | All Pages |
| Conversion Tags | GAds | Conv | [Action Name] | [Source] |
| Triggers | Event | [event_name] | [condition] |
| Variables | DLV – [dataLayer Key] or UPD – [description] |
| Container Versions | v12 | Added purchase conversion + enhanced data |
15.2 Conversion Hierarchy
- Designate only your most important, business-critical conversions as Primary conversions — these feed Smart Bidding.
- Set informational micro-conversions (scroll depth, video plays) as Secondary — they appear in reports but do not influence bids.
- Never mark more than two or three conversions as Primary for a single campaign type, or Smart Bidding will become diluted.
15.3 Regular Audits
- Review your conversion actions quarterly. Remove or deactivate conversions for discontinued campaigns or pages.
- Check Tag Status monthly — a tag showing Inactive for an extended period indicates a potential tracking break.
- Review attribution reports before major budget changes to ensure your attribution model (data-driven recommended) reflects real conversion paths.
15.4 Use Remarketing Lists from Converters
Every conversion fires a data point that can seed remarketing audiences. Create audience lists in Google Ads for recent converters (e.g., Purchased in last 30 days) and exclude them from top-of-funnel campaigns to avoid wasted spend on existing customers.
15.5 Server-Side Tagging (Advanced)
For maximum data accuracy, privacy compliance, and reduced page load impact, consider migrating Google Ads conversion tracking to a server-side GTM implementation. With server-side tagging:
- Conversion requests originate from your server rather than the user's browser, bypassing ad blockers and browser cookie restrictions.
- First-party data can be attached server-side before sending to Google.
- Page load performance improves as fewer third-party scripts run in the browser.
Server-side GTM requires a cloud hosting setup (Google Cloud Run or App Engine) and is beyond the scope of this guide, but is the recommended direction for enterprise advertisers.
16. Quick Reference — All Tag Types at a Glance
| Conversion Type | GTM Tag Type | Recommended Trigger | Notes |
|---|---|---|---|
| Form Submission | GAds Conversion Tracking | Custom Event / Thank-you page | Count: One |
| Purchase | GAds Conversion Tracking | Custom Event (purchase) | Use dynamic value + Transaction ID |
| Page View Goal | GAds Conversion Tracking | Page View — URL match | Use sparingly |
| Scroll Depth | GAds Conversion Tracking | Scroll Depth trigger | Set as Secondary |
| Video Engagement | GAds Conversion Tracking | YouTube Video trigger | Requires enablejsapi=1 |
| Click-to-Call (mobile) | GAds Conversion Tracking | Click — Link, URL = tel: | Tracks click, not call duration |
| Website Call Tracking | GAds Conversion Tracking | Page View / Window Loaded | Needs number match in GAds |
| Calls from Ads | Not applicable | No GTM needed | Tracked by Google automatically |
| App Install | Not applicable | Firebase first_open event | Import via Firebase link |
| In-App Purchase | Not applicable | Firebase purchase event | Import via Firebase link |
| Keep Your Tracking Clean. Keep Your Data Trustworthy. Conversion tracking is not a one-time setup — it is an ongoing discipline. Audit regularly, test after every site change, and treat your conversion data as the most valuable asset in your marketing stack. |
|---|
