← Back to Blog

How to See Which Form Submissions Come From Which Google Ads

·8 min read

Quick Answer

Google Ads doesn't show you which ad, campaign, or keyword generated a specific form submission. To connect the dots, capture the GCLID or UTM parameters from the ad click in a hidden form field, store that data when the form submits, and match it back to the lead in your CRM or dashboard.

Google Ads shows you clicks. It doesn't show you which specific ad, campaign, or keyword turned into a real lead. The performance tab in Google Ads tells you that a campaign generated 47 clicks — it has no idea which of those clicks filled out a form, called you back, or eventually became a paying customer.

To see which ads drive form submissions, you have to build that connection yourself. The good news is the mechanism is well-understood, and once it's in place it runs automatically for every form on your site.

Why Doesn't Google Ads Just Show You Which Ad Generated Each Lead?

The gap exists because form submissions happen on your website, and Google Ads is a different system. Google knows someone clicked an ad and arrived at your page. After that, what happens on your site is invisible to Google unless you explicitly send that information back.

The same disconnect exists with phone calls, chat conversations, and in-store visits. Any conversion that happens outside of a webpage load requires you to close the loop manually by telling Google which clicks turned into which outcomes.

This is what offline conversion tracking is designed to solve — and form attribution is the first step in that chain.

How Does the GCLID Work and What Does It Capture?

When someone clicks a Google Ad, Google appends a parameter called a GCLID — Google Click ID — to the landing page URL. It looks like this:

``` https://yoursite.com/contact?gclid=Cj0KCQiA_c-tBhDFARIsAIFg3ayQk... ```

That long string encodes everything about the click: the campaign, the ad group, the specific ad, the keyword and match type, the device, the network (Search vs. Display), and the timestamp. It's a lookup key — Google keeps a record on their end, and when you send the GCLID back along with conversion data, they can attribute the conversion to the exact click that generated it.

GCLIDs expire after 90 days. Any conversion you want to attribute needs to be uploaded within that window. Most B2B sales cycles are well inside it.

How Do You Capture the GCLID From a Form Submission?

The process has three steps:

Step 1 — Read the GCLID from the URL on page load

When the page loads, a small piece of JavaScript reads the `gclid` parameter from the URL and saves it somewhere persistent — typically `sessionStorage` or a first-party cookie set to last 90 days.

```js const params = new URLSearchParams(window.location.search); const gclid = params.get('gclid'); if (gclid) { sessionStorage.setItem('gclid', gclid); } ```

Step 2 — Add a hidden field to your form

Your contact or lead form needs a hidden input that will hold the GCLID value:

```html <input type="hidden" name="gclid" id="gclid_field" /> ```

Step 3 — Populate the hidden field before submission

Before or when the form is submitted, populate that hidden field from the value you stored in Step 1:

```js document.getElementById('gclid_field').value = sessionStorage.getItem('gclid') || ''; ```

Now every form submission includes the GCLID alongside the lead's contact data. Your backend receives both together.

The catch: this breaks down the moment you use a third-party form tool (HubSpot forms, Typeform, Gravity Forms, etc.) that doesn't let you inject hidden fields or run custom JavaScript on submit. That's where the implementation typically gets complicated.

What About UTM Parameters — Are They Enough?

UTM parameters give you campaign-level attribution that's readable in Google Analytics and your CRM. When a lead submits your form with UTMs stored, you can see that they came from your "Google / CPC / Brand" campaign. That's useful context.

But UTMs have two meaningful limitations compared to GCLID.

First, UTMs are campaign-level. They tell you which campaign generated the lead, not which keyword or which specific ad variation. If you're running A/B tests on ad copy or have dozens of keywords across an ad group, UTMs don't give you the granularity to optimize at that level.

Second, UTMs can't close the attribution loop inside Google Ads itself. Google Ads Smart Bidding optimizes toward conversion data — but only conversion data that was uploaded using GCLIDs. If you report conversions with UTMs in your own analytics but never upload them to Google Ads with GCLIDs, your Smart Bidding is flying partially blind. It's optimizing toward clicks, not toward the leads or customers those clicks produce.

Use both. Capture UTMs for your own reporting and historical records. Capture GCLIDs for closing the loop with Google.

How Do You Store and Use Form Attribution Data?

Once a form submission comes in with a GCLID attached, you need to store it somewhere and do something with it.

The minimum viable setup: store the GCLID in your CRM alongside the lead record. When a lead qualifies or closes, you have the GCLID available to include in an offline conversion upload.

The full setup: build a pipeline that watches your CRM for lead status changes and automatically triggers a Google Ads offline conversion upload whenever a lead hits a threshold — MQL, SQL, Won, etc. Each upload includes the original GCLID, the conversion action name, the timestamp, and optionally the conversion value.

The gap most teams hit: they capture the GCLID correctly but never build the upload pipeline. They have the data sitting in their CRM and it never makes it back to Google. The attribution is half-done — they can see which ad generated the lead in their own system, but Google Ads is still optimizing as if those leads don't exist.

What Is the Simplest Way to See Which Ads Drive Form Submissions?

Building the full pipeline — GCLID capture, hidden fields across all forms, backend storage, status change detection, conversion upload formatting, error handling, retry logic — is a significant engineering project if done from scratch. Most marketing teams don't have the dev resources to build and maintain it.

FormTrackr handles all of it with a single JavaScript snippet. Drop it on your site and it automatically captures GCLID and UTM parameters for every visitor, populates hidden fields across any form it detects, and logs each submission with full attribution data. When you update a lead's status in the FormTrackr dashboard, it triggers the offline conversion upload to Google Ads automatically — no CSV, no manual uploads, no custom backend.

You end up with a clear answer to the question Google Ads can't answer on its own: exactly which campaign, ad group, keyword, and ad generated each lead.

Frequently Asked Questions

How do you track which Google Ad generated a form submission?

Pass the GCLID (Google Click ID) from the ad click into a hidden field on your form using JavaScript. When the form submits, save the GCLID alongside the lead's contact details. You can then match each lead back to the specific campaign, ad group, keyword, and ad that generated it — and eventually upload that lead as an offline conversion to close the loop in Google Ads.

What is a GCLID and why does it matter for form tracking?

GCLID stands for Google Click ID — a unique identifier Google appends to your landing page URL when someone clicks an ad (e.g., ?gclid=Cj0KCQ...). It encodes the campaign, ad group, keyword, and ad that drove the click. Capturing it at form submission is the only way to connect a specific lead back to the exact ad that brought them to your site.

Can you track form submissions from Google Ads without a developer?

Yes. Tools like FormTrackr handle the process automatically: a lightweight JavaScript snippet captures GCLID and UTM parameters on page load, stores them in sessionStorage, and populates hidden fields when a form submits — no custom backend required. You see which ad generated each lead directly in the dashboard without writing any tracking code.

What's the difference between UTM tracking and GCLID tracking for form submissions?

UTM parameters (utm_source, utm_medium, utm_campaign, utm_content, utm_term) give you campaign-level attribution that's human-readable and works across platforms. GCLID is Google-specific and encodes more granular detail — ad group, keyword, match type — but requires offline conversion uploads to feed data back to Google Ads for Smart Bidding. Use both: UTMs for your own reporting, GCLID for Google.

← Back to Blog