Skip to content
Adrythm

Running ads

Can Google Ads track a form embedded from another website?

Updated October 11, 2026

Yes, but your own Google tag cannot track an embedded form by itself. A form in an iframe or on a form company's website runs on a separate site, so the tag never sees the submit. Track it through the builder's Google Ads or Tag Manager connection, a thank-you page on your site, or a click ID import.

If your form sits in a frame or on a form company's site, assume your tag cannot see it submit

If your enquiry form comes from a form builder and either loads inside a box on your page or opens on the builder's own address, the Google tag on your site will not register the submit by itself. Pick one of the routes below instead of adding more triggers to your page.

The reason is a browser rule, not a Google setting. Browsers treat pages from different addresses as different origins and keep them apart. Mozilla's developer documentation says that when two documents do not share an origin, the references between them give "very limited access", and that JavaScript in one origin "cannot read from or write to the storage belonging to another origin." Your tag runs on your page and the form on the builder's, so the tag cannot see the fields, the submit button or the confirmation message inside the frame, and for the same reason Tag Manager's form trigger, which fires "when a form has been sent", can only see forms on the page where your container runs.

Google's own advice points the same way. In its sitewide tagging troubleshooter, Google says not to fire conversion tracking from within an iframe and names "embedded forms or payment/login portals" as where iframes turn up. For a conversion that happens on another company's domain, it says plainly that this "won't work in the long-term, unless that third party is willing to implement sitewide tags."

Google, on third-party domains

"This won't work in the long-term, unless that third party is willing to implement sitewide tags."

Check which kind of embed you have before you choose a fix

If you do not know how the form reaches your page, find out first, because the routes that work differ. It takes two minutes in a browser.

  1. Open the page with the form, fill it in with test details and send it. Watch the address bar. If it changes to the form company's address, the form is hosted on their domain.
  2. If the address stays on your site, right-click inside the form and choose Inspect. If the form's fields sit inside an iframe element whose address belongs to the builder, the form is framed.
  3. If the fields sit directly in your page's code with no iframe around them, the form is inline. Your tag can usually see it, and the ordinary Tag Manager triggers apply. The question of why Google Ads misses leads from such a form has its own answer.
  4. Note how the builder's embed code was added: a bare iframe tag, or a script from the builder that draws the form. Some builders only send events to your page from their script embed, which matters for the third route below.

The routes, in the order to try them

If the builder has its own Google Ads or Tag Manager connection, start there and make sure the click ID reaches the form

If your form builder lets you add a Google tag, a Google Ads conversion or a Tag Manager container inside the form, use it first. It is the route Google describes for a third-party domain: the third party running the tags.

Know where it runs. That tag fires on the builder's domain, inside their page. Google stores the ad click ID, the gclid, in cookies "on your domain" when someone lands on your page. The builder's page cannot read those cookies. So the tag inside the form only links a submit to an ad click if the click ID arrives in the form's own address, or the builder offers a way to pass it in.

Cross-domain linking does not fix this for a domain you do not run. Tag Manager's conversion linker can carry the click to another domain, but Google says that only works when "a destination domain with a compatible linker tag" reads the link. Google files a second domain you own under "needs a cross-domain solution" and a third-party domain under "won't work in the long-term" unless that company tags its own pages. You cannot install a linker on a form company's site.

Watch for counting the same lead twice. Google warns that a platform plugin on top of your own tags can mean "duplicate conversion reporting". If the builder fires a conversion, do not also fire the same conversion action from a thank-you page.

Cookie banners apply inside the form too. Typeform, for one, says respondents must accept its cookies in the form's own consent pop-up for Tag Manager event tracking to work. The separate answers on Typeform, Jotform, Google Forms, Wix and HubSpot cover what each connection needs.

If the builder can redirect on submit, send people to a thank-you page on your site and set the count to One

If the builder lets you choose a redirect address after a successful submit, point it at a thank-you page on your own domain and count a load of that page as the conversion. Your tag is on that page, the click cookies are there, and Google calls a page-load conversion "Best for simple tracking" with "no code changes" once your tags are in place.

Set the action's count to One. Google says "Every conversion" is the default for website actions, and that "One conversion" counts "only one conversion per ad click", which Google calls "a good choice" when what matters is whether a lead came in, not how many times. Click Goals, then Conversions, then Summary, click the action's name, then Edit settings, then Count, and choose One. The change only applies to future conversions.

Then check the traps this route brings.

  • Refresh and back button. Google says that if a customer "returns to the conversion page or reloads the page", the tag "could fire again". Count set to One stops that for repeat loads after the same ad click. If the builder can add a unique submission ID to the redirect address, pass it as a transaction ID, and Google discards the second conversion with the same ID.
  • People who close the tab. The conversion fires only when the thank-you page loads. Someone who sends the form and closes the tab before the redirect finishes is a real lead that never counts.
  • Visits that are not submits. Anything that loads the thank-you address fires the tag: a bookmark, a link someone shared, a crawler. Google Ads only counts loads after an ad interaction, but keep the page out of your menus and sitemap.
  • No contact details. A thank-you page does not hold the email or phone number from the form, so this route cannot feed enhanced conversions on its own.

For example

A landscaping company's embedded form takes 40 enquiries from ad clicks in a month. Four people close the tab before the redirect, so 36 reach the thank-you page, and six of them reload it. With the count left on Every, Google Ads shows 42. Set to One, it shows 36. The four lost leads only show up through an import.

If the builder documents events it sends to your page, turn the submit event into a Tag Manager trigger

If your builder's developer documentation says its embed sends a message to the page around it when a form is sent, have a developer listen for that message and push it into Tag Manager. This counts the lead on your own page, without a redirect.

The mechanism is a browser feature called postMessage. Mozilla describes it as the way to communicate "between a page and an iframe embedded within it", a controlled exception to the rule that keeps them apart. The form has to send the message; your page can only listen.

Rely on it only where the builder documents it. Two that do, checked on 11 October 2026: Typeform's embed library has an onSubmit callback that runs "after a respondent successfully submits" and is not sent when a form has validation errors. Calendly's script embed sends calendly.event_scheduled to the parent window when a booking is made, and Calendly notes that its plain iframe code does not support event tracking that way.

Wire it to a Custom Event trigger. The listener pushes an event such as form_submitted into the data layer. In Tag Manager, create a trigger with Trigger Configuration set to Custom Event and that event name, and attach your Google Ads conversion tag. Google describes the Custom Event trigger as the tool for form submissions whose default behaviour has been changed.

Know what it does not carry. Typeform's onSubmit passes a form ID and a response ID, and Typeform says the full response has to be fetched through its Responses API. Without the email or phone, the tag cannot send enhanced conversions data. A listener built on an undocumented message can stop counting without warning when the builder changes it.

If none of those fit, save the click ID with each lead and import the leads

If the builder offers no integration, no redirect and no documented event, or you want the leads that later became booked jobs counted, store the click ID with each lead and upload the leads to Google Ads. This works wherever the form lives, because nothing has to fire in the browser.

Google's method is a hidden form field. Its setup guide says to "add a hidden form field for the GCLID", capture the click ID with a script on every page of your site, "not just your landing pages", and store it with the lead. With a form you embed, the click ID has to be handed into the frame or the form's address, which some builders allow through URL parameters and hidden fields. The question of saving the click ID from a website form has its own answer.

Upload through Data Manager. Google says that from 15 June 2026 offline conversion imports and enhanced conversions for leads uploads move to the Data Manager API, and recommends enhanced conversions for leads over the older click ID import for anyone starting fresh. Data Manager pulls from sources such as Google Sheets and some CRMs, and Google's guide says to wait 4 to 6 hours after creating a new import action before the first upload.

The cost is the process. Someone, or an automation, has to move leads into the sheet or CRM with the click ID exactly as captured; Google says the GCLID is case sensitive. If a tag also counts these leads, use a separate import action so no lead counts twice in one column.

If none of this is workable, build the form into your own page

If the builder blocks every route above and the leads matter, a form built into your own site's page puts the submit, the fields and the click cookies on one domain, where Google's standard tag and Tag Manager triggers work. The cost is real: someone has to build it, handle spam and email delivery, and keep it working after site updates. It is one option among five, not the default.

Compare the routes, then prove the one you pick

Use this comparison to pick a route, then stop at the first one that works

If you are choosing, take the first route your builder supports and check its weak point. The ordering is a judgment based on effort and reliability, not a ranking Google publishes.

  • Builder's integration. Needs the builder to allow your tag or container. Fails silently when the click ID never reaches the builder's domain, or when visitors decline the form's cookie pop-up.
  • Thank-you redirect. Needs a redirect setting in the builder and a page on your site. Fails silently on reloads with Count left on Every, and on people who leave before the redirect. Cannot feed enhanced conversions.
  • postMessage event. Needs a documented event and a developer. Fails silently if the builder changes an undocumented message or you used the plain iframe code. Typeform's event carries no contact details, so no enhanced conversions from it.
  • Click ID and import. Needs hidden fields, storage and a regular upload. Fails silently when the click ID is not passed into the form. The only route that also reports booked jobs.
  • Your own form. Needs build and upkeep. Fails when a site change breaks it, like any form on your page.

If you want enhanced conversions, know that an embedded form usually rules out the tag version

If you plan to use enhanced conversions, choose the import route or the builder's own integration, because the tag on your page cannot read the email or phone from a framed form.

Google describes enhanced conversions as sending first-party data such as an email address, "captured in your conversion tracking tags, hashed" with SHA256, and enhanced conversions for leads as using "hashed, first-party user-provided data from your website (e.g., lead forms)" together with imported leads. Both start from data your tag can read at the moment of conversion. Behind an iframe it cannot, so the email has to come from the builder's side or from your lead records at upload time.

Test with Tag Manager's preview before you trust any route

If you have set up one of these routes, send a real test through it in Tag Manager's preview mode before you look at Google Ads numbers. Preview shows which tags fired and when, and only in your browser, so customers never see it.

  1. In Tag Manager, click Preview, enter the address of the page with the form, and click Connect. Visit it with ?gclid=test added to the address so you can see the click ID travel.
  2. Fill in and send the form. Check that your Google Ads conversion tag fired once, on the event you expect: the thank-you page load, or your custom event.
  3. For a redirect, reload the thank-you page and press back, then confirm whether the tag fired again. With Count set to One, Google will drop the repeat for the same click, but you should know it happens.
  4. For the builder's integration, check in Tag Assistant, with the form open, that the tag inside the form fired, and that the form's address carried the test click ID. For an import, check the test lead's stored click ID reads exactly test.

Then let real traffic run and compare a finished week of leads from ad clicks against the Google Ads column. The step by step Tag Assistant check from inside Google Ads is covered in the answer on why Google Ads misses leads.

Want a form that runs on your own page instead of in a frame?

Formwright is a custom form built into your own website, so your Google tag sees every lead and enhanced conversions are built in. No monthly fee, no response limit, and the code is yours.