UTM parameters are small additions to an ordinary page address that tell your analytics tool where a visitor came from: which website, which channel and which campaign. On their own they measure nothing. They only work when the whole team names campaigns the same way and, a few weeks later, you look at more than the number of sessions.
This guide is for a small business running several campaigns at once: an ad, a newsletter, a partner post and a flyer with a QR code. You will agree on a short naming convention, set up a campaign sheet, avoid the most common mistakes and finally check which tagged visits turned into a chat, a callback request or a ticket.
Five fields that describe how a visit started
A tagged link looks like this: yourcompany.com/offer/?utm_source=newsletter&utm_medium=email&utm_campaign=spring-2026. Everything after the question mark is a parameter. The page looks exactly the same, but the analytics tool records a description of the entry. Three fields are mandatory in practice; add the other two when you need to tell variants apart.
Scroll the table sideways to see all columns.
| Parameter | Question it answers | Example |
|---|---|---|
| utm_source | Who sent the traffic | newsletter, facebook, partner-smith |
| utm_medium | Through which channel | email, cpc, social, qr |
| utm_campaign | As part of which promotion | spring-2026, ac-service |
| utm_content | Which variant or link position | top-banner, pricing-button |
| utm_term | Which keyword (mainly search ads) | air-conditioning-service |
The Google Analytics help page on UTM parameters recommends always setting source, medium and campaign, and points out that values are case sensitive. It describes how Google Analytics works; it does not guarantee that every other tool treats these fields the same way.
A naming convention that fits on one page
A convention is a short dictionary of allowed values, not a strategy document. For a small business four rules are enough: lowercase only, words joined with hyphens, no spaces or special characters, and source and medium picked from a closed list. The campaign name says what you promote and when, for example ac-service-2026-04.
For medium, stick to names that tools recognise: email for the newsletter, cpc for paid clicks, social for unpaid posts and referral for a link on a partner site. Home-made labels such as "mailing_march" split one channel into many rows and make month-to-month comparisons harder. The value qr matches none of the Google Analytics default channel rules and lands in "Unassigned" there, which is fine as long as you judge flyers by their campaign name.
According to the description of the default channel group, Google Analytics assigns traffic to the Email channel when source or medium is "email" or one of its variants. The rule applies to that tool and says nothing about how well your newsletter performs.
Company UTM dictionary: source: site or partner name; medium: email, cpc, social, referral, qr; campaign: topic-yyyy-mm; content: link position. Lowercase, hyphens, no special characters. A new value only after it is added to the dictionary.
A simple campaign sheet instead of memory
Record every tagged link in one spreadsheet: date, campaign, full URL, who created it and where it was used. Nobody invents a name from scratch, and a month later you still know what that cryptic value in the report means. Below is a fictional example from an air-conditioning service with three links in one promotion.
Scroll the table sideways to see all columns.
| Where used | source / medium | campaign | content |
|---|---|---|---|
| Customer newsletter | newsletter / email | ac-service-2026-04 | booking-button |
| Social media ad | facebook / cpc | ac-service-2026-04 | video-15s |
| Flyer at a partner shop | flyer / qr | ac-service-2026-04 | shop-counter |
A shared campaign name lets you see the promotion as a whole, while source and medium show which channel worked. Add a results column as well and fill it in once the promotion ends. How to tidy up a report where one page splits into many rows because of parameters is covered in our guide to URL parameters in reports.
Mistakes that quietly ruin your data
- Capital letters: "Facebook" and "facebook" are two different sources in the report.
- UTM on internal links: a banner on your own site tagged with a campaign pretends to be a new entry and blurs the real source.
- Untagged newsletters: clicks from an email client can end up as direct traffic instead of the Email channel.
- Manual UTM on ads with auto-tagging, without checking which tag wins in the report.
- Parameters dropped by a redirect or a link shortener.
- Personal data in parameters, such as the recipient's email address.
Leave internal links without UTM and measure banner clicks with events. To check whether tags survive a redirect, open the link and look at the address bar once the page has loaded. The same issue comes back when paid traffic is not converting, because the campaign then loses part of its credit.
The Google Ads help page on auto-tagging explains that a GCLID click identifier is added to the URL and that in GA4 it takes priority over manual tags. That does not make manual UTM tags pointless in other channels.
Test the link before customers see it
- Open the link in a private window.Make sure the page loads and the parameters stay in the address after every redirect.
- Compare it with the dictionary.Check lowercase, hyphens and whether source and medium come from the closed list.
- Find your visit.After a few minutes, look up the test visit in your analytics tool and see which source and campaign were recorded.
- Add the link to the sheet.Only a verified URL goes into the sheet and then into the newsletter, the ad or the flyer.
This test takes a few minutes and saves you from weeks of data you can no longer fix. If two tools still show different numbers, the link is not always to blame. Some measurement limits are described in our article on what Google Analytics will not show you.
From a tagged visit to a customer conversation
A session report tells you which campaign attracted people. A service business, however, needs to know which campaign brought enquiries. When a promotion ends, take the list of chats, contact requests and tickets from that period and check which source and campaign each person arrived with. A handful of real cases usually says more than hundreds of sessions.
In Meetlead Analytics, the customer journey stores source, medium, campaign, content and term, plus click identifiers, with each visit, and you can filter the visit timeline by source and campaign. Next to a visit you see the linked conversation, callback request or ticket. Older sessions recorded before source capture are marked as not covered instead of receiving an invented origin.
If an enquiry means a submitted form or a booking on your site, you can configure a business goal and record it with a script at the moment of submission. The results column in your campaign sheet then holds the number of cases, not just visits. How to read several visits by one person before they get in touch is explained in our guide to the customer journey on your website.
Questions about UTM parameters
What should I do with campaigns that were already tagged inconsistently? You usually cannot correct collected data after the fact. Note the date the dictionary was introduced in your campaign sheet and compare periods only from that day on. Older values can be grouped by hand in a spreadsheet, stating which name variants you treat as the same campaign.
Do I have to tag every social media post? Not every one, but every one whose results you want to compare. Tag posts with an offer and the link in your profile description, and leave everyday activity untagged. What matters more than the number of tagged links is that the existing ones follow the dictionary and end up in the campaign sheet.

