
Track your funnel with UTM links and GA4: see which channel brings booked calls
How to use UTM parameters in GA4 to see which channel brings booked calls: a naming plan, Google's URL builder, a key event and the reports to read.
Tag every link you control with utm_source, utm_medium and utm_campaign, in lower case and from one naming sheet, and send every booking to a thank-you page that GA4 counts as a key event. Traffic acquisition, set to session source / medium, then shows the booked calls each channel brings, and a funnel exploration shows where visitors drop out. Check both against your booking tool and a ‘How did you find us?’ question, because GA4 never sees every booking.
GA4 tells you how many people visit your site and roughly where they come from, but not which of those visits ended in a booked call. Three things fix that: UTM parameters on every link you control, a thank-you page after each booking, and a GA4 key event that counts it. Two GA4 screens then show which channel brings booked calls and where everyone else gives up.
You need GA4 on your site and a way to add a page. I use YouCanBookMe for bookings, so the examples do too; Calendly works the same way. If your funnel is not built yet, start with my tutorial on building a funnel with the tools you already have. Both belong to my complete guide to sales funnels and newsletters.
How UTM parameters work in GA4
A UTM parameter is a label added to the end of a link that tells Google Analytics where the click came from. GA4 reads it when the visitor lands.
| Parameter | What it records | Example |
|---|---|---|
utm_source | Where the link sits | newsletter, linkedin |
utm_medium | The type of link | email, social, referral |
utm_campaign | The message or offer | 2026-10-newsletter |
utm_content | Which link, when one message holds several | header-button |
utm_term | The keyword, for paid search | Rarely needed |
utm_id | A campaign ID, for imported campaign data | Rarely needed |
Google asks you to always set the first three (Google’s help page on campaign URLs).
GA4 then sorts each visit into a channel, mostly from the medium, with fixed rules: email goes to Email, social to Organic Social, referral to Referral (Google’s channel rules). A medium it has no rule for, such as newsletter-link, usually goes to Unassigned, the bin for visits GA4 cannot classify. Visits with neither a tag nor a referring site go to Direct, mixed with the people who typed your address.
Step 1: write a naming plan before you tag anything
Most UTM problems are spelling problems. GA4 treats the values as case sensitive, so LinkedIn and linkedin become two sources, and a typo in a medium sends visits to Unassigned. Five rules prevent both:
- Lower case only, everywhere.
- Hyphens instead of spaces, which turn into
%20. - Only mediums GA4 recognises, such as
email,socialandreferral. - One campaign name per message or offer, date first, so
2026-10-newslettersorts itself. - Never tag links between your own pages. The booking would be credited to your own tag instead of the channel that brought the visitor.
Keep the plan in a shared sheet, one line per link with its values, the full link and the date. A starting point for a service business:
| Where the link sits | utm_source | utm_medium | utm_campaign |
|---|---|---|---|
| Monthly newsletter | newsletter | email | 2026-10-newsletter |
| Your email signature | signature | email | always-on |
| A LinkedIn post | linkedin | social | 2026-10-case-study |
| A guest article on another site | site-name | referral | 2026-10-guest-article |
Copy a line for each new link instead of typing from memory. For a newsletter, tagged links show what matters more than opens: the clicks that end in a booking, as my article on newsletter metrics explains.
Step 2: build each link with Google’s Campaign URL Builder
Google’s free Campaign URL Builder, listed on the help page above, assembles the link for you.
- In the website URL field, paste the address of the page you send people to: the page with your booking button, not the booking tool.
- Fill in the source, medium and campaign name from your sheet. Add the content field only when one message holds several links to the same page.
- Open the generated link in a private window. If the parameters vanish from the address bar once the page loads, a redirect on your site may be dropping them: link to the final address instead.
- Paste the link into your sheet, then wherever it goes.
The result looks like this:
https://www.yourbusiness.co.uk/kitchen-design?utm_source=newsletter&utm_medium=email&utm_campaign=2026-10-newsletter&utm_content=header-button
Step 3: send every booking to a thank-you page
On its own, GA4 sees only the pages of your site, not what happens inside your booking tool. So each booking has to end on one of them: a thank-you page that nobody reaches without booking. Keep it out of your menu and out of search results (my funnel tutorial shows how in Squarespace), then tell the booking tool to send people there:
- YouCanBookMe, which I prefer to Calendly because it does what Calendly does, is easy to find your way around and costs a little less, redirects bookers to your page on its Professional and Teams plans. The address must start with https, and if the calendar is embedded in your page, tick the option that updates the whole browser window, or only the embedded frame changes. My YouCanBookMe tutorial covers the rest of the setup, from the booking form to embedding the calendar in your page.
- Calendly offers the same redirect on its paid plans; the free plan keeps Calendly’s own confirmation page.
Step 4: count the thank-you page as a key event
GA4 calls the actions that matter key events; older tutorials call them conversions. To turn a visit to your thank-you page into one (Google’s help page on creating events):
- Open Admin > Data display > Events and click Create event.
- Name it
generate_lead, the name Google recommends for a lead, and switch on Mark as key event. - Choose Create without code, pick
page_viewas the source event and add the address of your thank-you page as the condition. - Click Create. You need the Marketer role or above.
Do not mark page_view itself, or every page view would count. Counting starts the day you create the event, so past bookings stay invisible. A contact form deserves its own event, so calls and enquiries do not mix.
Then test the whole chain: open one of your tagged links in a private window, accept the analytics cookies, book a slot and check in GA4’s real-time report that your visit shows its UTM source and that generate_lead appears. Cancel the test booking afterwards.
Step 5: read which channel brings booked calls
After a few weeks of data:
- In Reports, open Traffic acquisition (under Acquisition in most properties) for at least the last 28 days, or three months on a site with modest traffic.
- Click the title of the first column, which lists channels, and pick Session source / medium.
- If you track several key events, select
generate_leadin the drop-down at the top of the Key events column. - To compare campaigns, click the plus sign next to the first column’s title and add Session campaign as a secondary dimension.
Read the key events first: a source with plenty of sessions and no bookings brings the wrong people or sends them to the wrong page, while one with few sessions but a couple of bookings deserves more of your links.
GA4 credits a visit with no source of its own to the last channel that brought that visitor: someone who clicked your newsletter on Monday and typed your address on Thursday still counts for the newsletter, on the same browser. Since May 2026, visits from ChatGPT and some other assistants have had a channel of their own, covered in my guide to tracking AI traffic in GA4.
Step 6: find where visitors drop out with a funnel exploration
A funnel exploration shows at which step the people who do not book give up (Google’s help page on funnel explorations).
- Open Explore and pick the Funnel exploration template.
- Edit the steps. Step 1: a
page_viewof the page with your booking button. Step 2: apage_viewof your booking page, if it sits on your site. Step 3:generate_lead. - Keep the funnel closed to count only people who started at step 1, or make it open to include those who joined later, such as visitors who went straight to the booking page.
- Use Device category as the breakdown to compare phones with computers.
- Switch on Show elapsed time to see how long people take between steps.
Two quirks: a visitor who skips a step drops out of the later ones, and someone who books twice in the period counts once. Explorations also stop at your data retention limit, so set it to 14 months in Admin now: data that has already expired does not come back.
When most people stop at the same step, the funnel will not tell you why. That is when I open Microsoft Clarity, which shows where people engage and what makes them leave: the copy, a picture or the layout. My Microsoft Clarity tutorial explains the setup.
What GA4 will never show you, and how to fill the gaps
Even with perfect tags, GA4 sees only part of your bookings.
- Visitors who refuse cookies. In the EU, the cautious rule is to load GA4 only once the visitor accepts analytics cookies, and in basic consent mode GA4 receives nothing from those who refuse. The UK has allowed analytics used only for statistics without consent since February 2026, if you explain it and offer an easy way to object, but not once the same data feeds advertising or tracks individual visitors. This is not legal advice: my guide to cookie banner rules sets out what the CNIL and the ICO expect as of 19 October 2026.
- Leads that never click a link. My own clients come from referrals first, then cold emails and SEO. A recommendation arrives as a phone call or a typed address, and the cold emails I write contain no links at all, only a phone number. GA4 sees the SEO visits and little of the rest.
So keep two counts next to GA4’s:
- Your booking tool’s total. It records every booking, consent or not. The gap between that total and GA4’s
generate_leadcount is the share of bookings GA4 cannot see. Trust it for the total. - A required ‘How did you find us?’ question on the booking form, with fixed choices: Google search, recommendation, LinkedIn, newsletter, AI assistant, other. Ask the same question on the phone. It is the only count that covers referrals and calls.
Your monthly check, and when to hand it over
Once a month, fifteen minutes:
- Open Traffic acquisition for the previous month by session source / medium and note the bookings for each source.
- Look for Unassigned and (not set) rows, find the links behind them in your sheet and fix them.
- Put GA4’s bookings next to the booking tool’s total and the answers to ‘How did you find us?’.
- Open your funnel exploration: does the drop always happen at the same step?
- Decide one thing: which channel gets more of your time next month, and which one stops.
That last step is the point: a new channel is always tempting, and these figures show which of the channels you already use deserve more effort.
You can run all of it yourself. It gets harder when leads arrive by form, booking, phone and email at once, and nobody can say who was called back. When Pilotech, the air conditioning installer whose website and SEO I look after, received more prospects than the team could handle, I built them an internal app so that every prospect is seen and called back. If your leads are scattered like that, bring them into one place before you worry about attribution.
Frequently asked questions
Are UTM parameters case sensitive in GA4?
Why do my campaigns show (not set) or Unassigned in GA4?
Can I see which channel brought a booking if my booking tool cannot redirect?
How far back can a GA4 funnel exploration go?
Do UTM links work in PDFs, QR codes and WhatsApp messages?
Joana MehouWeb designer, SEO and cold emailing specialist
Joana Mehou has been building websites since the age of eleven and founded MLK Web Studio in 2021, between London and Paris: websites, SEO, cold emailing and automation for small businesses in the UK and France, with honest advice, including when you do not need to hire anyone.
More about the studioInternal tools and automations built around how your business actually works.
Build a funnel with the tools you already have: website, booking page and email
How to build a sales funnel with the tools you already have: one page, one button, a booking page, emails, one automation and GA4 tracking, step by step.
How to track AI traffic in GA4, Search Console and Microsoft Clarity
How to track AI traffic in GA4 step by step: the AI Assistant channel, a channel group for older data, Search Console's AI report and Clarity's AI channel.
How to use Microsoft Clarity: install it and see why visitors leave
How to use Microsoft Clarity step by step: install the free tag, connect it to your cookie banner, then read heatmaps and recordings to see why people leave.