How to Set Up Zoho Form Conversion Tracking with Google Tag Manager (2026 Guide)

Zoho Form conversion tracking with Google Tag Manager sending leads to GA4, Google Ads and Meta in 2026.

100% Human Written By MD Niamul
GoHighLevel Automation | Ai Agent Automation | Google Ads | Full‑Stack Web Analytics Conversion Tracking & Server Side Tracking Specialist

Quick Answer

To set up Zoho Form conversion tracking with Google Tag Manager, remember that an embedded Zoho form runs inside an iframe, so GTM’s form triggers on your page never see the submit. The most reliable fix is to open Zoho’s Settings → Messages & Redirects, choose Redirect to Website, point it to a thank-you page on your own site with a marker such as ?zf_source=zoho_form, and set it to open in the Parent Window. A small GTM tracker on that page pushes a zoho_form_submit event once per session, and that event fires your GA4 generate_lead, Google Ads and Meta tags.

Key Takeaways

  • Zoho forms live in an iframe: the form runs on a Zoho domain, so GTM on your page cannot see clicks or submits inside it.
  • Resize messages are not a submit signal: I checked Zoho’s current form scripts. The iframe tells your page its new height, but there is no separate “submitted” message to listen for.
  • Parent Window redirect is the clean signal: after a successful submit, the whole page moves to your thank-you page, where your own GTM container runs.
  • Count each lead once: a URL marker plus a session check stops reloads from inflating your numbers.
  • One event, every platform: the same zoho_form_submit event feeds GA4, Google Ads, Meta and later your server-side setup.
  • Browser tracking is the start: server-side tracking, Conversions APIs and CRM offline uploads close the gaps that ad blockers and long sales cycles leave.

Introduction: Leads in Zoho, Gaps in Your Ad Data

Your Google Ads and Meta Ads are running. The Zoho form on your website is collecting leads. Your sales team sees every one of them.

Then you open GA4 and Google Ads. The numbers do not match. Some campaigns show no conversions at all, and the bidding algorithms optimise on guesswork.

The leads are real. Your tracking just cannot see the form.

This is one of the most common problems I fix for agencies and lead generation businesses. In this guide I will show you exactly why it happens with Zoho Forms and the setup I use to track every submission accurately in Google Tag Manager, GA4, Google Ads and Meta.

Why GTM Cannot See Embedded Zoho Forms

When you embed a Zoho form with the iframe or JavaScript embed code, the form loads from a Zoho domain such as forms.zohopublic.com inside an iframe. Think of an iframe as a window into another website.

Browsers keep those two websites apart for security. Your GTM container runs on your page, so the built-in Form Submission trigger, click triggers and element visibility triggers cannot reach inside the Zoho window.

I read the scripts Zoho Forms loads today to see what the iframe does share. It sends postMessage messages to your page with the form’s ID and its new height, so the embed can resize. Those messages also appear while a visitor types, opens a page of a multi-step form or sees an error. None of them says “submitted”.

Method Where it runs Verdict
GTM Form Submission trigger Your page Does not work: it cannot see inside the iframe
Listening to Zoho’s resize messages Your page Unreliable: they fire for many reasons, not only a submit
Zoho’s built-in Google Tag Manager setting Inside the Zoho iframe Possible, with cookie and attribution trade-offs (see below)
Redirect to your thank-you page in the Parent Window + GTM tracker Your page Recommended: clear signal, your own cookies and click IDs
Why Google Tag Manager cannot see an embedded Zoho form in an iframe, and how a Parent Window redirect fixes it.

Prerequisites & Setup Checklist

  • Zoho Forms: permission to edit the form’s settings.
  • Website: the Zoho form embedded on your site, and the ability to create a thank-you page.
  • Google Tag Manager: the container installed on every page, including the thank-you page, with publish rights.
  • GA4: Editor access and your Measurement ID, which starts with G-.
  • Ad platforms: your Google Ads conversion ID and label, and your Meta Pixel ID if you run Meta Ads.
  • Consent: a cookie banner connected to Google Consent Mode if you have visitors from the EEA or UK.

Not sure whether GTM loads on every page? Check it with my free GTM container analyzer.

Video Tutorial Walkthrough

In this video I explain the Zoho iframe problem, how I capture Zoho forms and popups in Google Tag Manager, and how the setup grows into server-side tracking, Conversions APIs, CRM offline conversions and automated dashboards.

Step-by-Step Implementation Guide

The setup has eight phases. Do them in order and test after each one.

Phase 1: Create a Thank-You Page on Your Website

  1. Create a simple page such as https://yourdomain.com/thank-you/ with a short confirmation message and a next step, for example booking a call.
  2. Set the page to noindex so it does not appear in Google search, and keep it out of your menus.
  3. Make sure your GTM container loads on this page like every other page.

Why your own page? Because there your own GTM, GA4 cookies and Google Ads click IDs are all available, exactly as on the page where the visitor arrived from the ad.

Phase 2: Redirect the Zoho Form to the Parent Window

  1. Open the form in Zoho Forms and go to Settings → Messages & Redirects.
  2. In the Thank You page settings, choose Redirect to Website.
  3. Enter your thank-you URL with a marker, for example https://yourdomain.com/thank-you/?zf_source=zoho_form&zf_form=contact.
  4. Set Open in to Parent Window and save.

Parent Window is the important part. With Same Window, the thank-you page opens inside the small iframe and your GTM container there cannot reliably connect it to the visitor’s session. With Parent Window, the whole browser tab moves to your page.

Use a different zf_form value for each form, such as contact, quote or demo, so you can compare forms in reports. Never put an email address or phone number in the URL, because Google’s policies do not allow personal data in URLs sent to GA4.

Zoho Forms Messages and Redirects settings with Redirect to Website and Open in Parent Window for GTM tracking.

Phase 3: Add the Zoho Thank-You Tracker in GTM

  1. In GTM, go to Tags → New → Custom HTML and paste the code below.
  2. Create a Page View – DOM Ready trigger that fires when Page Path equals /thank-you/, and attach it.
  3. Name the tag cHTML – Zoho Form Thank-You Tracker and save.
Zoho Forms thank-you page tracker (GTM Custom HTML)
<script>
// Zoho Forms thank-you page tracker by MD Niamul (mdniamul.com)
// Fires once when a visitor arrives from a Zoho form redirect
// that ends with ?zf_source=zoho_form (optional: &zf_form=contact).
// A reload in the same session is not counted again.
(function () {
  window.dataLayer = window.dataLayer || [];
  var params = new URLSearchParams(window.location.search);
  if (params.get('zf_source') !== 'zoho_form') return;

  var formName = params.get('zf_form') || 'zoho_form';
  var storageKey = 'mdn_zoho_lead_' + formName;
  try {
    if (sessionStorage.getItem(storageKey)) return;
    sessionStorage.setItem(storageKey, String(Date.now()));
  } catch (e) {}

  window.dataLayer.push({
    event: 'zoho_form_submit',
    form_platform: 'zoho_forms',
    form_name: formName
  });
})();
</script>

How it works, in plain words:

  • It only runs when the URL carries zf_source=zoho_form, so a direct visit to the thank-you page is not a lead.
  • It remembers each form for the rest of the browser session, so a reload does not count the lead again.
  • It pushes zoho_form_submit to the data layer with the form name from the URL.

I tested it in a real browser: no event without the marker or with a wrong value, one event on the first visit, nothing on reload, and a separate event for a second form. One trade-off: if the same person sends the same form twice in one session, the second submit is not counted. For lead generation that is usually what you want.

Need a listener for a different form tool? Try my free form tracking listener generator.

Google Tag Manager Custom HTML tag with the Zoho Forms thank-you page tracker on a Page View trigger.

Phase 4: Test the Data Layer Event in Preview

  1. Click Preview in GTM and open the page with your Zoho form.
  2. Submit a test lead. The tab moves to your thank-you page.
  3. In Tag Assistant, a zoho_form_submit event appears. Open the Data Layer tab and check form_platform and form_name.
  4. Reload the thank-you page. No new zoho_form_submit should appear.
GTM Preview showing the zoho_form_submit event with form_platform and form_name in the data layer.

Phase 5: Create the Custom Event Trigger and Variables

  1. Go to Triggers → New → Custom Event, enter zoho_form_submit exactly, and name it CE – zoho_form_submit.
  2. Go to Variables → New → Data Layer Variable and create DLV – form_platform and DLV – form_name.
  3. If you do not have one yet, create a Constant variable CONST – GA4 Measurement ID with your G- ID.

Phase 6: Send generate_lead to GA4

  1. Go to Tags → New → Google Analytics: GA4 Event.
  2. Set the Measurement ID to {{CONST – GA4 Measurement ID}} and the event name to generate_lead.
  3. Add the event parameters form_platform = {{DLV – form_platform}} and form_name = {{DLV – form_name}}.
  4. Attach CE – zoho_form_submit and name the tag GA4 – generate_lead – Zoho.

Phase 7: Fire Google Ads and Meta on the Same Event

  1. Add a Google Ads Conversion Tracking tag with your conversion ID and label, on CE – zoho_form_submit.
  2. Make sure a Conversion Linker tag fires on all pages, so the Google click ID is stored when the visitor lands from an ad.
  3. If you run Meta Ads, fire a Meta Pixel Lead event on the same trigger.
  4. Use the same trigger for TikTok, Pinterest or LinkedIn if you advertise there.

One method only. If you already count a thank-you page view as a conversion in GA4 or Google Ads, remove it. Otherwise every lead is counted twice.

GTM tags for GA4 generate_lead, Google Ads conversion and Meta Lead all firing on the zoho_form_submit trigger.

Phase 8: Publish, Verify and Mark the Key Event

  1. In Preview, submit one more test lead and confirm each tag fired once on zoho_form_submit.
  2. In GA4, check Admin → Data display → DebugView for generate_lead.
  3. Click Submit in GTM and publish a version named, for example, Zoho Forms – lead tracking.
  4. In GA4, open Admin → Data streams → your web stream → Configure tag settings → List unwanted referrals, and add zohopublic.com (plus your regional Zoho domain, such as zohopublic.eu, if your account uses one).
  5. When generate_lead appears under Admin → Data display → Events, mark it as a key event, and register form_name as a custom dimension.

Double-check the result with my free GA4 event checker.

What About Zoho Popups and Lightbox Forms?

Zoho’s popup and lightbox embeds also show the form inside an iframe on top of your page. The same approach works: set the form to redirect to your thank-you page in the Parent Window, keep the tracker on that page, and every popup lead is counted the same way as an inline form. Give the popup its own zf_form value, such as popup_offer, so you can see how it performs.

Option B: Zoho’s Built-In Google Tag Manager Setting

Zoho Forms also has its own Google Tag Manager setting. In the form builder, open the Tracking tab, choose Google Tag Manager, click Configure and enter your container ID. You can then send events such as Form View and Submit Form to GTM and fire tags from Custom Event triggers.

It is useful, but know what you are choosing:

  • It runs inside the iframe. The container loads on the Zoho form page, not on your website, so GA4 and ad cookies are set on Zoho’s domain.
  • Browsers often block those cookies. Safari and Firefox block most third-party cookies, so the lead can show up as a new visitor without the original campaign.
  • Click IDs may be missing. The Google click ID stored on your site is not available inside the iframe, which weakens Google Ads attribution.
  • Not every embed is supported. Zoho’s own help says Google Tag Manager is not supported for the HTML/CSS embed option.

For ad attribution, I prefer the Parent Window redirect from Phase 2. Zoho’s built-in setting is fine for extra insight such as form views, or when a redirect is not possible.

Zoho Forms Tracking tab with the built-in Google Tag Manager setting, container ID and Submit Form event.

Beyond the Browser: Server-Side, CAPI, CRM and Dashboards

Browser tags are the foundation, but they still lose data to ad blockers, Safari’s tracking limits and long sales cycles. This is how I take Zoho lead tracking further for clients:

  • Server-side tracking: send the same zoho_form_submit event through a server-side GTM container on your own subdomain. I host these on Stape, and for EU data residency on Stape’s EU servers. See my server-side tracking service.
  • Conversions APIs: forward leads to the Meta Conversions API and TikTok Events API with a shared event ID, so the browser and server events are deduplicated. My free Meta CAPI payload builder helps you check the payload.
  • Offline conversions from the CRM: store the Google click ID in a hidden form field, then upload qualified leads and won deals from Zoho CRM, HubSpot or Salesforce to Google Ads. Start with my free offline conversion builder.
  • Automation: n8n or Zapier can move form leads, stages and values between Zoho, your CRM and Google Sheets without manual exports.
  • Dashboards: bring GA4, ad spend and CRM results together in Data Studio (the tool Google called Looker Studio until April 2026) and BigQuery, as in my GA4 reporting guide.
Full funnel Zoho form tracking flow from GTM to server-side tracking, Conversions APIs, CRM uploads and dashboards.

Testing & Validation Workflow

  1. Load test. Open the form page. No zoho_form_submit appears.
  2. Error test. Submit with a required field empty. The page does not redirect and no event appears.
  3. Success test. Submit a valid lead. The tab moves to the thank-you page and one event appears.
  4. Reload test. Reload the thank-you page. No second event appears.
  5. Direct visit test. Open /thank-you/ without the marker. No event appears.
  6. Tag test. GA4, Google Ads and Meta tags each fire once.
  7. Weekly check. Compare GA4 leads with new Zoho entries for the first few weeks.

Troubleshooting Common Mistakes

Mistake 1: The thank-you page opens inside the form box

The Problem: after submit, your thank-you page appears squeezed inside the iframe.

The Cause: the redirect is set to open in the Same Window.

The Solution: change Open in to Parent Window in Messages & Redirects.

Mistake 2: No event on the thank-you page

The Problem: the redirect works, but Preview shows no zoho_form_submit.

The Cause: the marker is missing from the redirect URL, or the Page Path in the trigger does not match.

The Solution: check that the URL ends with ?zf_source=zoho_form and that the trigger path matches your page, including the trailing slash.

Mistake 3: Leads are counted twice

The Problem: GA4 or Google Ads shows about twice as many leads as Zoho.

The Cause: a page view conversion for the thank-you page is still active next to the new event.

The Solution: keep only the zoho_form_submit based conversions.

Mistake 4: Leads show as Direct or Referral in GA4

The Problem: Zoho leads have no campaign source.

The Cause: the redirect starts from the Zoho iframe, so the browser can report zohopublic.com as the referrer of your thank-you page and GA4 may start a new referral session. Tracking through Zoho’s built-in GTM setting causes similar losses.

The Solution: add zohopublic.com under List unwanted referrals in your GA4 web stream’s tag settings, and use the Parent Window redirect.

Mistake 5: Personal data in the URL

The Problem: the thank-you URL carries the visitor’s email or phone.

The Cause: field values were added to the redirect URL.

The Solution: keep only non-personal markers in the URL. Send customer data for enhanced conversions server-side or through CRM uploads instead.

What to Set Up Next

Want it set up, tested and documented for you? See my Zoho form conversion tracking service.

Conclusion

Zoho forms are hard to track only while you try to look inside the iframe. Move the success moment onto your own page and the problem disappears.

Your next three moves are clear. First, create a thank-you page and set the Zoho form to redirect there in the Parent Window. Second, add the tracker and a Custom Event trigger in GTM. Third, fire GA4, Google Ads and Meta on zoho_form_submit, test it, publish and mark the key event.

Every lead in Zoho should be a lead in your ad platforms.

Summary by MD Niamul

Embedded Zoho Forms load inside an iframe from a Zoho domain, so Google Tag Manager’s form and click triggers on the parent page cannot see submissions, and the iframe’s postMessage messages only report the form’s height for resizing. The reliable method is to set the form’s Settings, Messages and Redirects to Redirect to Website, using a thank-you page on your own domain with a marker such as zf_source=zoho_form, and to open it in the Parent Window. A GTM Custom HTML tracker on that page pushes a zoho_form_submit data layer event once per form per session. A Custom Event trigger then fires the GA4 generate_lead event, the Google Ads conversion tag and the Meta Lead event. Zoho’s built-in GTM setting runs inside the iframe and can lose cookies and click IDs. Server-side tracking, Conversions APIs and CRM offline uploads extend the setup.

Frequently Asked Questions (FAQ)

1. Why doesn’t Google Tag Manager track my Zoho form?

An embedded Zoho form loads inside an iframe from a Zoho domain, not from your website. Browsers keep the two sites separate, so GTM on your page cannot see clicks or submits inside the form. The Form Submission trigger and click triggers therefore stay silent, even though the lead reaches Zoho normally.

2. Does Zoho Forms send a postMessage when a form is submitted?

Not a dedicated one. I checked the scripts Zoho Forms loads in October 2026. The iframe sends messages with the form ID and its new height so the embed can resize, but those also fire while typing, changing pages or showing errors. That is why I use a redirect to your own thank-you page as the success signal.

3. What does Parent Window mean in Zoho’s redirect setting?

In Settings, Messages and Redirects, Redirect to Website, the Open in option decides where the thank-you page loads. Same Window opens it inside the iframe. Parent Window replaces the whole page that contains the form, so the visitor lands on your own thank-you page, where your GTM, GA4 cookies and Google Ads click ID are available.

4. Why add ?zf_source=zoho_form to the thank-you URL?

The marker tells the tracker that the visitor really came from a Zoho form redirect. A direct visit, a bookmark or a crawler opening the thank-you page has no marker, so it is not counted as a lead. A second parameter such as zf_form=contact lets you compare different forms in your reports.

5. Will a reload of the thank-you page count a second lead?

No. The tracker stores a flag in sessionStorage for each form name, so a reload in the same browser session does not push the event again. The trade-off is that the same person submitting the same form twice in one session is counted once, which is usually right for lead generation reporting.

6. Can I use Zoho’s built-in Google Tag Manager integration instead?

Yes. In the form builder, open Tracking, Google Tag Manager, Configure and enter your container ID. It runs inside the Zoho iframe, though, so cookies are set on Zoho’s domain and may be blocked, and your Google click ID is not available. For ad attribution I prefer the Parent Window redirect.

7. How do I track Zoho popup and lightbox forms?

Popup and lightbox embeds also show the form in an iframe on top of your page. Use the same method: redirect to your thank-you page in the Parent Window with the zf_source marker, and give the popup its own zf_form value such as popup_offer so you can measure it separately from inline forms.

8. Why do Zoho leads show as referrals from zohopublic.com?

The redirect starts inside the Zoho iframe, so the browser can report zohopublic.com as the referrer of your thank-you page, and GA4 may start a new referral session. Add zohopublic.com, and your regional Zoho domain if needed, under List unwanted referrals in your GA4 web stream’s tag settings.

9. Can I send the email address for enhanced conversions?

Do not put email addresses or phone numbers in the thank-you URL, because Google does not allow personal data in URLs sent to GA4. For enhanced conversions and better matching, send hashed customer data server-side, or upload leads from your CRM with the stored Google click ID as offline conversions.

10. Do I still need server-side tracking for Zoho forms?

Browser tags work, but ad blockers, Safari limits and long sales cycles still cost you data. Server-side GTM, the Meta Conversions API and the TikTok Events API recover more conversions, and CRM offline uploads tell Google Ads which leads became customers. Start with the browser setup, then add these layers.

🚀 Need Help Advanced GHL Automation & Tracking Setup?

💬 Want this implemented without mistakes?

I’ve helped 850+ advertiser agencies & D2C brands unlock $11.6M+ revenue by implementing 1,500+ Ai Driven GoHighLevel full Business Automation+ client-side & server-side tracking systems.

⮏ My core services include:

⨭ GoHighLevel Automation — build CRM pipelines, WhatsApp automation, AI voice workflows & automated follow-ups end-to-end.
⨭ AI Agent Automation — deploy AI chatbots & agents for 24/7 lead qualification and support.
⨭ Paid Ads Management — Google Ads, Meta Ads.
⨭ Full Stack SEO/GEO/AEO Manager.
⨭ CRO-Focused Web Development — Landing Pages on WordPress, Shopify, Wix, Squarespace.
⨭ Google Tag Manager (GTM) — manage data layers & (Marketing platform Tag, Trigger & Variables).
⨭ Custom Code by GTM — HTML, CSS & JavaScript for the help of marketing platform advanced tracking.
⨭ Server-Side Tracking — Bypassing ITP/Ad-blockers for 99% accuracy (Stape Partner)
⨭ Google Analytics 4 (GA4) — visualize customer journeys.
⨭ Multi-Channel CAPI — Facebook, TikTok, Pinterest & Snapchat Conversion API & Klaviyo email marketing tools.
⨭ Third Party Checkout Conversion Tracking — Shopify, Stripe, GoQuick, ShipRocket, PayPal or more.
⨭ Google Consent Mode (GCM) — maintain GDPR compliance.
⨭ Marketing Automation — streamline workflows (Zapier/n8n/Make).
⨭ CRM Conversion Tracking — link offline sales to ads.
⨭ Tag Management — GTM & Third-Party Checkout Tracking.
⨭ Offline & CRM Tracking — HubSpot, Salesforce, Zoho, Pipedrive, Odoo, Webhook & Sheet.
⨭ Advanced Analytics — GA4, Google Looker Studio & Big Query (SQL) for deep data visualization.

If you want your GoHighLevel Business Automation & server side tracking done right the first time, message me.

Leave a Reply

Your email address will not be published. Required fields are marked *

Conversion tracking specialist dashboard showing Google Ads and GA4 data analysis with GTM integration.

MD NIAMUL

GoHighLevel Automation | Ai Agent Automation | Server Side Tracking Specialist

Niamul

If You Need GTM Listener Code Submit Your Email