Learn Google Analytics Conversion tracking
GA4 · No Tag ManagerCount every lead in GA4 from your thank-you page
If your form sends people to a thank-you URL, you already have everything you need. Two conditions in the GA4 admin turn that page view into a key event, and you can see which channel brought each lead.
GA4 is built on events, not sessions and goals like the old Universal Analytics. It collects a lot of them for you: page views, scrolls, outbound clicks. What it can't guess is which action pays your bills.
A thank-you page view is a form submit in disguise. Tell GA4 to watch for it.
The method below works for any form that redirects to its own page: a contact form, a demo request, a guide download. You build it in the GA4 interface. No Tag Manager, no developer.
The flow
5 steps from submit to report
Only step four is something you build. The rest already happens on your site.
How GA4 conversion tracking works
Follow a visitor from submitting a form to seeing a key event in your reports.
Select any step to expand its explanation.
Visitor submits a form
Someone fills in your contact or guide-download form and hits submit. GA4 does not know this happened yet. A form submit is not one of the events it collects on its own in a way you can rely on.
Thank-you page loads
Your site sends the visitor to a confirmation page. This page is the whole trick: only people who submitted the form ever see it, so a visit to it is as good as a submit.
https://example.com/thank-you GA4 collects page_view
The GA4 tag records a page_view on every page load, the thank-you page included. It carries the full address in a parameter called page_location.
event_name = page_view
page_location = https://example.com/thank-you Custom event is created
Your custom event rule checks every incoming event. When it sees a page_view whose page_location contains "thank-you", it creates a second event called generate_lead alongside it.
IF event_name = page_view
AND page_location contains thank-you
THEN create generate_lead Key event is recorded
Because generate_lead is marked as a key event, GA4 counts it as a conversion. You can now see how many leads each source, medium and campaign brought in.
generate_lead → key event ✓ Setup
Build it in the GA4 admin
You need Editor access to the property. The menu names below match the current GA4 interface.
- 1
Create the custom event
Admin → Data display → Events → Create event
Pick your web data stream, then click Create. Name it generate_lead. That is one of Google's recommended event names for a lead, so reports and Google Ads understand it without extra mapping.
- Custom event name
- generate_lead
- 2
Add the matching conditions
Same screen, under "Matching conditions"
Two conditions, and both must be true. The first narrows it to page views. The second narrows it to the thank-you page. Without the second, every page view on your site becomes a lead.
- event_name
- equals page_view
- page_location
- contains thank-you
- 3
Keep the source parameters
Same screen, "Copy parameters from the source event"
Leave this ticked. It carries over the page, source and campaign details from the page_view, which is what lets you break leads down by channel later. If a lead is worth a known amount, add value and currency under "Modify parameters".
- Copy parameters from the source event
- ✓ on
- 4
Mark it as a key event
Admin → Data display → Key events → New key event
Type generate_lead, spelled exactly as before, and save. You can do this before the event has ever fired. Once it has fired, you can also flip the star next to it in the Events list instead.
- New event name
- generate_lead
- 5
Check it in reports
Reports → Acquisition → Traffic acquisition
Submit your own form, then watch Realtime for generate_lead. Standard reports take up to a day to fill in. Switch the key events column to generate_lead and the table shows leads by session source / medium and campaign.
Test your rule before you save it
Paste your real thank-you URL and see whether the event would fire.
Why the URL rule says "contains"
page_location is
the full address, not just the path. A trailing slash, a
www. or a UTM tag
changes it. Here's how the same thank-you page looks to each rule when the
value is https://example.com/thank-you
for equals and thank-you
for contains.
| page_location | contains | equals |
|---|---|---|
https://example.com/thank-you | ✓ fires | ✓ fires |
https://example.com/thank-you/ | ✓ fires | ✗ missed |
https://example.com/thank-you?utm_source=email | ✓ fires | ✗ missed |
https://www.example.com/thank-you | ✓ fires | ✗ missed |
https://example.com/contact | ✗ no | ✗ missed |
Pick a value specific enough that nothing else on your site contains it.
thank-you also matches a blog
post called /blog/thank-you-email-templates.
If you have one, use /thank-you/
or a less common slug like /lead-confirmed.
When this isn't enough
The thank-you trick needs a page only converters see. Without one, reach for Tag Manager.
Form redirects to its own thank-you URL
→ GA4 create event (this guide)
No code, no Tag Manager. Five minutes in the GA4 admin.
Form shows "Thanks!" without changing the URL
→ GTM trigger or dataLayer push
There is no page_view to hang a rule on. You need something to fire on the submit itself.
Thank-you page is reachable without submitting
→ Fix the page first, then GA4
If it is in your sitemap or linked from a menu, Google and curious visitors inflate your lead count.
You need the lead's plan, value or form ID
→ GTM or gtag with parameters
A URL match tells you a lead happened, not what kind. Send the details as event parameters.
What to look at once it's counting
Open Reports → Acquisition → Traffic acquisition
and set the key events column to generate_lead.
Each row is now a channel with its own lead count and session key event rate.
Switch the primary dimension to Session source / medium or
Session campaign to see which newsletter, post or ad actually filled
your pipeline. This is where tagged links pay off. A link without UTM tags
shows up as (direct) / (none)
and tells you nothing.
If you run Google Ads, import generate_lead
into your Ads account as a conversion so bidding can optimise for leads
instead of clicks.
Common questions
FAQ: GA4 conversion tracking
Are GA4 conversions and key events the same thing?
Do I need Google Tag Manager to track form submissions in GA4?
Why does my custom event not show up in GA4?
Should page_location use contains or equals?
Will refreshing the thank-you page count two leads?
Should I give the lead a monetary value?
Keep going
More Google Analytics breakdowns, built the same way.