How-to · Updated October 11, 2026
Track form submissions as Google Ads conversions with Tag Manager
Updated October 11, 2026
45 minutes, plus a developer change
Create a website conversion action in Google Ads, then add a Google Ads Conversion Tracking tag in Tag Manager that fires once per successful submission, not on a button click or page view. Map the form's own entry ID and a value, and publish. Without the ID, a junk form fill can never be withdrawn later.
Before you start
- Access to both tools. A Google Ads login that can create conversion actions, and Publish access to the site's Tag Manager container.
- A developer, or a form plugin that already does it, to push an event to the data layer when a submission succeeds, carrying the form system's own ID for that submission and a value.
- What a lead is worth to you, as one figure in your currency, to send as the value when the form has no figure of its own.
Create the conversion action
This part creates the Google Ads action the tag reports to, set to count one lead per ad click and to take a value per lead.
- In Google Ads, click the Goals icon, open the Conversions drop-down, click Summary, then + Create conversion action.
- Select Edit data sources for Conversions on a website, enter your domain and click Scan.
- Pick the category closest to a form lead, create the conversion with the Google tag as its source, and choose Manually using code. Google says this is the method for transaction IDs and values.
- Open Conversion settings. Under Count, choose One: Google's advice for tracking one lead per ad click. Under Value, choose Use different values for each conversion and enter your lead value as the default. An action that uses the same value for every conversion cannot have that value corrected later.
- Click Done, then Save and continue. On the Use Google Tag Manager tab, copy the Conversion ID and Conversion label.
Fire on the confirmed submission, once
The trigger should fire when the form system confirms a submission, not on a button click or a page view.
- Have your developer push an event to the data layer when a submission succeeds, named for example generate_lead, with a transaction_id and a value on every push. A fixed lead value is fine; if no value is pushed, the tag sends 0 and the default may not be used.
- For the transaction_id, use the ID the form system already gives each entry, such as its entry or submission number, generated on the server, under 64 characters, with no personal details. Google lists email addresses, phone numbers, URLs, prices, hashed or UUID strings and fixed words such as thank_you among values that shouldn't be used.
- In Tag Manager, click Triggers, then New, choose Custom Event, and enter the event name exactly as the developer pushes it.
- If no developer is available, use a Form Submission trigger instead. Tick Check Validation so it fires only when the form is successfully sent, and Wait for Tags so the tag can finish before the next page loads. You lose the transaction ID this way unless the form exposes one, and without it a junk lead cannot be withdrawn later.
- Click Variables, then New under User-Defined Variables, choose Data Layer Variable, and enter transaction_id exactly as pushed. Make a second variable for value.
Add the conversion tag and publish it
This part builds the conversion tag from the Google Ads values, tests it in Preview and publishes it so it runs on the site.
- Click Tags, then New, then Tag Configuration, Google Ads, Google Ads Conversion Tracking.
- Paste the Conversion ID and Conversion Label from Google Ads.
- Set Transaction ID to the transaction_id variable and Conversion Value to the value variable. Google notes that an empty or undefined value field sends 0, so the push must always carry one.
- Under Triggering, choose the trigger you made, and click Save.
- Click Preview and send a test form. The tag should appear under Tags Fired once, on one event. Open it: Transaction ID should show a real ID, not undefined or a fixed word. Send a second test and confirm the ID changed.
- Click Submit, keep Publish and Create Version selected, and click Publish. Changes left in a workspace never run on the site.
The site also needs the click ID stored when a visitor lands. If no Google tag loads on every page, add a Conversion Linker tag too.
Check it worked
In Google Ads, click the Goals icon, then Summary, and read the action's Status column. After real leads arrive it should show Active. Misconfigured means conversions have stopped recording. Awaiting conversions more than 48 hours after the action was created, with campaigns running and leads arriving from ads, rules out Google's usual reasons, so check the tag.
To confirm the ID is sent, open Chrome DevTools on the confirmation step, select Network, and search for googleadservices.com/pagead/conversion. Google says the transaction ID is usually the oid parameter. An ID starting GG_ means your own ID did not arrive and Google made a temporary one.
Over the first weeks, compare the action's count with the form leads that came from ad clicks. Far fewer conversions than those leads means the tag is missing submissions.
Why not the button click or the thank-you page
A tag on the submit button counts every click, including ones the form rejects. A tag on a thank-you page can fire again on every reload. The dependable moment is when the form system confirms the submission.
Why the transaction ID matters after the lead arrives
Google finds a website conversion for a correction by its order ID, which is the transaction ID the tag sent. Google's page says conversion adjustments need a persistent ID you provide, and its own GG_ IDs cannot be used. Without one, a spam or junk form fill stays counted and bidding keeps learning from it.
Keep the same ID with the lead wherever the lead goes, your inbox, CRM or form database. A tag that sends an ID nobody stored is as good as no ID: when you mark the lead junk, there is nothing to look it up by.
Count One or a transaction ID?
They do different jobs. Count set to One records one conversion per ad click, however many forms that visitor sends. A transaction ID stops the same submission being counted twice, for example on a reload. A lead form uses both.