"The form submissions are coming in, but Google Ads conversions aren't going up." A hole in tracking that opens up only on the completion page (the thank-you page) is an extremely common complaint. The results really are happening — but if the signal drops on that "last single page," you can no longer judge whether your ads are good or bad.
Does any of this sound familiar?
- Inquiries themselves arrive, but conversions aren't tracked only on the completion page
- When you reload or open the thank-you page directly, the numbers don't add up
- It feels like the click information disappears somewhere on the way to the completion page
- You show a "Thank you" message in a modal, and the page never switches
- You set it to "Count once," yet it's double-counting on reload (or, conversely, showing nothing)
This article organizes the reasons conversions aren't tracked on the thank-you page into seven points, and ends with the way to "open the completion page directly and watch it fire." The completion page is one of the most blind-spot-prone places in your entire site.
First, the setup: thank-you-page tracking rests on "three preconditions"
Tracking the completion page only works when all three of the following preconditions are met at once. Noticing which one has broken first makes the whole investigation dramatically easier.
| Precondition | What's required | What happens if it breaks |
|---|---|---|
| ① Arrival | The user genuinely reaches the completion page | No "page transition" happens because of a redirect/modal |
| ② Installation | The tag is present on that completion page | A different template leaves only the tag missing |
| ③ Firing | The tag runs exactly once the moment of arrival | Direct access / reload causes a miss or a duplicate |
The key point: ① arrival and ② installation are completely separate matters. If the tag is properly installed but you never actually "transition to" the completion page as a page (①), no amount of staring at the installation screen will fix it. Points 1–7 below follow a flow that knocks out these three preconditions in order.
Cause 1: The completion page is a different template with "no tag installed"
This is the most frequent one. Even if you think you put the tag in the site-wide shared header/footer, the thank-you page alone is generated by a different system or template that isn't under the shared tag's management.
- A form tool, cart, or booking system serves a completion page on an external domain
- The completion page is a single raw HTML file that doesn't pass through the site template
- The GTM container is on every page, but the completion page is built in a separate admin panel
Even if you can confirm the tag on the homepage or product pages, if there's no tag on the page at the exact moment the result occurs, no conversion is recorded at all. The basic check is to "open the completion page itself and look" (the procedure is below). For confirming the Google Ads conversion tag itself, see How to verify your Google Ads conversion tag; for the GA4 side, see How to confirm your GA4 tag is working.
Common pitfall: when "form submissions arrive but conversions are zero," it's almost always this Cause 1. What arrives is the form's email notification, which travels a different path from the browser's measurement tag.
Cause 2: Misses and double-counts from direct access, reload, and the back button
The thank-you page is supposed to be "a page only people who submitted the form see," but in reality, arrivals that don't pass through the form do happen. This produces both missed tracking and double-counting.
- A user bookmarks the completion page and opens it cold days later
- They reload the completion page, or re-display it with the browser's back/forward
- Someone who knows the URL accesses it directly
With the naive setting "fire when the page is displayed," even these displays that didn't go through the form get counted as conversions, inflating the numbers. Conversely, if you make "only once" too strict, even legitimate completions can be missed (detailed in Cause 5). Isolating double-counting itself is covered in detail in Why your conversions are double-counted and how to fix it.
Common pitfall: if the number rises every time you reload, that's not a "result" but a re-count of the same single conversion. When the completion page's view count and conversion count are nearly identical, suspect this inflation.
Cause 3: Redirect-type completion pages drop click info or the event
Completion flows that insert a redirect — like "submit → interim page → completion page" — need care. As the page switches several times along the way, information needed for measurement can drop.
- The ad-click identifier (
gclid, etc.) is carried in a URL parameter but isn't passed on to the redirect destination - While bouncing out to an external payment/booking service and back, the original session or parameters get cut off
- The redirect is so fast that the tag has no time to run before reaching the completion page
When this happens, the conversion itself occurs but "which ad click it came from" becomes unknown, and it isn't correctly tied to the Google Ads conversion column.
Common pitfall: when "it shows up in GA4 conversions but not in Google Ads,"
gclidmay be getting dropped in a redirect. Check whether the click identifier survives all the way to the completion page's URL.
Cause 4: SPAs and thank-you modals don't trigger a "page transition," so nothing fires
More and more modern sites display "Thank you" without the URL changing after a form submission. SPAs (single-page apps), and thank-you modals shown within the same page, fall into this category.
The problem is that many measurement tags use "a new page load" as the trigger to fire. If neither the URL nor the page switches, from the browser's perspective it's the same as "nothing happened," and the tag doesn't run.
- After submission, the URL stays the same and only the completion message swaps in
- The completion is shown in a modal (pop-up), and the page itself doesn't transition
- "Thank you" is merely rendered by JavaScript
In this case, you need a design that fires the tag on "the event that the submission succeeded" rather than on page load. If the design doesn't match, the completion screen appears but conversions alone stay at zero forever.
Common pitfall: if "the completion message shows properly but it isn't tracked," suspect a SPA/modal first. A completion where the URL doesn't change can't be caught by a page-load-triggered tag.
Cause 5: A mismatch between "fire once" and "fire every time"
The completion-page tag involves a setting for whether to "count only once per person" or "count every time it's displayed." When this is misaligned with your intent, it can tip into either a miss or inflation.
- "Once" is too strict: a cookie or similar decides "already counted," and even a separate, legitimate inquiry is missed
- "Every time" is too loose: it counts on every reload or direct access, ballooning into double or triple
- Inquiries are usually "once" and purchases "every (each time)," but if the way the completion page is built doesn't match the setting, the numbers won't add up
Double-counting on reload is continuous with Cause 2. You need to think about it together with "how the completion page actually gets re-displayed," not just the setting.
Common pitfall: if "the same user inquired twice on different days but only one shows," the "once" setting may be too aggressive. Conversely, if "one inquiry produces several," suspect the combination of fire-every-time plus reloads.
Cause 6: The form is submitted before consent, so it isn't tracked
On sites that show a cookie consent banner, if the user submits the form and reaches the completion page before consenting, measurement can be restricted or modeled and end up unrecorded.
- The form is submitted first, without closing (consenting to) the consent banner
- In the un-consented state, the measurement tag is configured to not run / have its signal restricted
- Even if you ask for consent on the completion page, by then the moment to fire has already passed
The completion screen appears normally, yet measurement alone quietly drops depending on the consent state — this is a hard-to-notice blind spot. The relationship between consent state and measurement is explained in detail in Why consent mode makes your conversions drop.
Common pitfall: when "it shows up when I test myself (because I operate after consenting) but the production numbers are low," real visitors may be completing without consenting. Your own test tends to proceed already-consented without you noticing, so it overlooks the miss.
Cause 7: How to check — open the completion page directly and watch it fire with your own eyes
Most of Causes 1–6 above can be isolated by ultimately looking at "open the completion page and see whether the tag actually runs." The procedure is simple.
- Open the completion page (thank-you page). If possible, actually submit the form to arrive there
- Open your browser's DevTools and show the "Network" tab
- Filter for
conversion,googleads,collect(GA4), and the like - The moment you land on the completion page, watch whether the measurement request (
…/pagead/conversion/…, etc.) fires - If it fires, check the contents — are the conversion ID (
label, etc.) andgclidwhat you intended?
If no request fires, it's Cause 1 (missing tag) or Cause 4 (SPA non-firing); if gclid is absent, Cause 3 (redirect drop); if it fires on every reload, Causes 2 & 5 (double-counting) — so you can quickly narrow from symptom to cause. For the overall picture of diagnosis, also see the diagnostic guide for when conversions don't appear.
Common pitfall: with an ad blocker or tracking protection on, the request itself gets blocked and looks like "it isn't firing." Check in a clean state with those turned off.
What checking on your own machine can't tell you
Opening the completion page yourself and watching it fire is useful, but checking once on your own machine has two structural limits.
- Your environment isn't your visitors' environment. You've already consented to the banner, and your extensions and office-IP conditions differ. Even if it fires fine on the completion page for you, the tag can be dropping for visitors who don't consent, or visitors in a different environment.
- It's hard to verify when an ad click is involved. To properly see "does it really track when you arrive at the completion page via an ad," you'd need to click a live ad to recreate the path — which carries the risk of an ad-policy violation as a self-click.
Judging "it fires on the completion page for my action, so it's fine" tends to miss the problem of data going missing on the real path your visitors take.
Checklist: verifying thank-you-page tracking
- Opened the completion page itself and confirmed the measurement tag is present (the completion page, not the homepage)
- Actually submitted the form to arrive, and confirmed firing in DevTools Network
- Confirmed there's no double-counting when you reload / directly access the completion page
- If a redirect is involved, confirmed
gclidetc. survives all the way to the completion page's URL - For SPA/modal completions, confirmed the design fires on the submission-success event, not page load
- Confirmed the "once / every time" firing setting matches how the completion page gets re-displayed
- Confirmed tracking behaves as intended even in the un-consented state of the consent banner
- Checked in a clean environment with ad blocker, tracking protection, and office-IP exclusion turned off
When to consider event-based tracking instead of a thank-you page
Thank-you-page tracking isn't always the best choice. Competitors and industry guides increasingly recommend event-based conversion tracking — firing the tag on the form-submission success event rather than on a destination URL. Consider switching when:
- Your completion flow uses a SPA, modal, or inline confirmation where the URL doesn't change (Cause 4 effectively forces an event-based approach anyway)
- Multiple forms share the same thank-you page URL, making it impossible to tell which form generated the conversion
- You need to pass dynamic values (order amount, product ID) that aren't naturally embedded in a static thank-you page
- You want to eliminate false positives from direct access, bookmarks, and reloads without relying on fragile "once-only" cookie logic
Event-based tracking fires at the exact moment the action succeeds, regardless of URL changes, and can carry rich data in the event payload. When your site architecture supports it, it's the more reliable option. For setups where the thank-you page is served by a third-party tool (booking system, payment gateway) and you can't control the JavaScript, thank-you-page tracking may still be the only practical approach.
Don't forget: enhanced conversions and conversion value
Even when the tag fires correctly on your thank-you page, two pieces of data are often left on the table.
Enhanced conversions
Google Ads enhanced conversions let you send hashed first-party data — email address, phone number, or name and address — alongside the conversion signal. This helps Google match conversions to ad clicks even when cookies are blocked or gclid is lost. On a thank-you page, you typically have the user's submitted data available in the DOM or data layer; passing it to the conversion tag significantly improves attribution accuracy under cookie restrictions and consent mode.
Conversion value and transaction data
For ecommerce or paid-service flows, tracking only "a conversion happened" misses the point. The thank-you page tag should also pass:
| Parameter | Why it matters |
|---|---|
value + currency |
Enables ROAS-based bidding strategies in Google Ads |
transaction_id |
De-duplicates conversions server-side, preventing double-counts even without cookie-based "once" logic |
items / product data |
Powers remarketing audiences and product-level reporting in GA4 |
If your thank-you page doesn't send value and transaction ID, your bidding algorithms are optimizing blind — they know that a conversion happened but not how much it was worth. Check that these parameters are populated in the Network tab alongside the basic conversion signal (Cause 7).
Frequently asked questions
Q. The form's inquiry email arrives, but the conversion isn't tracked. A. The email notification is the form tool's server-side processing, while the conversion is the browser-side measurement tag — separate paths. The classic causes are the tag not being on the completion page (Cause 1), or no page transition firing in a SPA/modal (Cause 4). Open the completion page directly and confirm firing.
Q. Conversions go up every time I reload the thank-you page. A. It's set to "fire on every display," so it's being counted on reloads and direct access too — inflation (Causes 2 & 5). Set firing to "once only," or change the design to fire on the event of the form submission.
Q. Why isn't it tracked even though the completion message shows? A. With a SPA or thank-you modal where the URL doesn't change, the tag's firing trigger (page load) likely isn't happening (Cause 4). You need a design that fires on the submission-success event.
Q. It shows in GA4 but not in Google Ads conversions.
A. Either gclid is dropping in a redirect so it isn't tied to the ad click (Cause 3), or the GA4 event isn't registered as a key event (conversion) on the Google Ads side. Check whether the click identifier survives in the completion page's URL.
Q. It's tracked when I test myself, but the production numbers are low. A. You're testing already-consented to the banner, whereas real visitors may be completing without consenting (Cause 6). Office-IP exclusion and environment differences are also factors. Success on your machine doesn't guarantee success in production.
Conclusion: verify the completion page on three points — arrival, installation, firing
The reasons thank-you-page tracking drops boil down to three points: ① arrival (no transition due to redirect/SPA), ② installation (tag missing only on the completion page), and ③ firing (misses/duplicates from direct access and reload). Check Causes 1–7 top to bottom, then finally open the completion page directly and watch it fire with your own eyes — and you'll reach the cause without randomly changing settings. For the steps, also make use of the conversion-tracking verification checklist.
But firing checks on your own machine have limits. Going further — confirming the completion page records correctly on the real path, including visitors who don't consent, in production — is what "it's tracking" truly means.
ConversionOK runs your live page in an independent, isolated browser and intercepts the conversion signals actually sent on the completion page, then verifies them — with no need to click your own ad and no interference from your office environment. Start with a free static check to confirm the entry point of your thank-you-page measurement.