The article title in white on a ribbed-glass panel over a photo of a rising line chart
Funnels Tutorial

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.

Short answer

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.

ParameterWhat it recordsExample
utm_sourceWhere the link sitsnewsletter, linkedin
utm_mediumThe type of linkemail, social, referral
utm_campaignThe message or offer2026-10-newsletter
utm_contentWhich link, when one message holds severalheader-button
utm_termThe keyword, for paid searchRarely needed
utm_idA campaign ID, for imported campaign dataRarely 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:

  1. Lower case only, everywhere.
  2. Hyphens instead of spaces, which turn into %20.
  3. Only mediums GA4 recognises, such as email, social and referral.
  4. One campaign name per message or offer, date first, so 2026-10-newsletter sorts itself.
  5. 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 sitsutm_sourceutm_mediumutm_campaign
Monthly newsletternewsletteremail2026-10-newsletter
Your email signaturesignatureemailalways-on
A LinkedIn postlinkedinsocial2026-10-case-study
A guest article on another sitesite-namereferral2026-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.

Google’s free Campaign URL Builder, listed on the help page above, assembles the link for you.

  1. 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.
  2. 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.
  3. 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.
  4. 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):

  1. Open Admin > Data display > Events and click Create event.
  2. Name it generate_lead, the name Google recommends for a lead, and switch on Mark as key event.
  3. Choose Create without code, pick page_view as the source event and add the address of your thank-you page as the condition.
  4. 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:

  1. 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.
  2. Click the title of the first column, which lists channels, and pick Session source / medium.
  3. If you track several key events, select generate_lead in the drop-down at the top of the Key events column.
  4. 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).

  1. Open Explore and pick the Funnel exploration template.
  2. Edit the steps. Step 1: a page_view of the page with your booking button. Step 2: a page_view of your booking page, if it sits on your site. Step 3: generate_lead.
  3. 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.
  4. Use Device category as the breakdown to compare phones with computers.
  5. 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:

  1. Your booking tool’s total. It records every booking, consent or not. The gap between that total and GA4’s generate_lead count is the share of bookings GA4 cannot see. Trust it for the total.
  2. 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:

  1. Open Traffic acquisition for the previous month by session source / medium and note the bookings for each source.
  2. Look for Unassigned and (not set) rows, find the links behind them in your sheet and fix them.
  3. Put GA4’s bookings next to the booking tool’s total and the answers to ‘How did you find us?’.
  4. Open your funnel exploration: does the drop always happen at the same step?
  5. 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?

The values are: GA4 lists utm_source=LinkedIn and utm_source=linkedin as two different sources. Its channel rules ignore case, so both still land in the same channel, but your source and campaign rows split in two. Write every value in lower case.

Why do my campaigns show (not set) or Unassigned in GA4?

(not set) usually means a parameter is missing, for example a link with a source and a medium but no campaign. Unassigned means no channel rule matched your source and medium: use mediums GA4 recognises, such as email, social or referral.

Can I see which channel brought a booking if my booking tool cannot redirect?

Not directly in GA4. Count the bookings in the booking tool and add a required ‘How did you find us?’ question to the booking form. On YouCanBookMe, the redirect to your own page needs the Professional or Teams plan; on Calendly, a paid plan.

How far back can a GA4 funnel exploration go?

As far as your data retention setting: 2 or 14 months on a standard property. Standard reports such as Traffic acquisition are not affected. Choose 14 months in Admin so you can compare a month with the same month a year earlier.

Do UTM links work in PDFs, QR codes and WhatsApp messages?

Yes. The parameters travel with the link wherever it is clicked or scanned, so tag the links in your PDF brochure, the QR code on your flyer and the messages you send. Without a tag, those visits usually arrive with no referring site and land in Direct.
About the author

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 studio
Want it done for you?

Internal tools and automations built around how your business actually works.

Keep reading
Contact Start a project
Write to us