How to use UTM parameters for offline campaigns.
Last updated
8 min readIn short
Tag every printed placement with utm_source for the object, utm_medium for how it was used and utm_campaign for the show and year, all in lower case. Put the tagged address behind a short link, so the QR code stays small and you can fix a typo without reprinting.
Know the five UTM parameters before you tag anything.
A UTM parameter is a label added to the end of a web address. When someone opens that address, your analytics tool reads the labels and files the visit under them. Google's documentation for campaign URLs lists the parameters and says to always use three of them: source, medium and campaign.
| Parameter | Google's definition | Offline use | Example |
|---|---|---|---|
utm_source | The referrer | The physical thing the person used | rollup |
utm_medium | The marketing medium | How they used it: scan, badge or typed print | qr |
utm_campaign | The product, slogan or promotion | The show and the year | expo-2027 |
utm_term | The paid keyword | Leave it out, there is no keyword on a banner | Not used |
utm_content | Tells creatives or links apart | The variant: offer, position or design | offer-a |
GA4 shows the first three as session source, session medium and session campaign in its traffic acquisition report. Google's own page also lists utm_id, utm_source_platform and two creative fields. They are for paid media platforms and you can ignore them for print.
Write a naming sheet once, then obey it.
Google states that parameter values are case sensitive, so Rollup and rollup become two rows in a report. Nothing warns you when it happens. The cure is a short sheet that everyone who prints anything has to use.
| Field | Rule | Allowed values | Example |
|---|---|---|---|
| Source | One value per physical placement, equal to the short link key | rollup, lanyard, leaflet, namecard, catalogue | rollup |
| Medium | A closed list of three | qr for a scan, badge for a scan of something a person wears, print for an address read off paper | qr |
| Campaign | Show name and year, identical on every placement | expo-2027 | expo-2027 |
| Content | The variant, only when you are testing one | offer-a, offer-b, hall4 | hall4 |
| Format | Lower case, letters, digits and hyphens, no spaces | Up to 40 characters | expo-2027 |
Keep badge apart from qr because the two behave differently. A badge scan happens with a person in front of you. A banner scan happens at a distance and with less intent. Merge them and the average hides both.
Make the source equal to the short link key. Then the same word names the placement in your analytics tool, in your short link list and on the lead. 1Namecard accepts a placement of 1 to 40 lower case letters, digits, hyphens and underscores, so a name that follows the sheet fits everywhere.
Keep the UTM string off the QR code.
A QR code stores your address character by character. Every extra character adds data, and more data means a bigger grid of smaller squares. Printed at the same width, a denser code is harder to scan from a distance, in poor light or from a curved surface. The ISO/IEC 18004 standard sets the capacity of each size.
| What the code holds | Characters | Smallest size | Modules | Module width on a 3 cm code |
|---|---|---|---|---|
https://www.yourcompany.com/events/expo-2027/visit?utm_source=rollup&utm_medium=qr&utm_campaign=expo-2027&utm_content=hall4 | 123 | Version 8 | 49 by 49 | About 0.6 mm |
https://go.yourcompany.com/rollup | 33 | Version 3 | 29 by 29 | About 1.0 mm |
The short address is the better code, and the tags are not lost. The short link redirects to the full tagged address, so the visitor still arrives with the UTM string attached. You also gain the right to edit the tags later. A typo in a printed long address stays printed. A typo in a short link's target is a two-minute fix. The short link best practices guide covers status codes and keys, and the QR code size guide covers print dimensions.
A worked example for one trade show.
Say an exhibitor prints six things for a show in 2027. Campaign is expo-2027 on all of them. Each short link points to the same landing page with its own tags.
| Placement | Short address | utm_source | utm_medium | utm_content |
|---|---|---|---|---|
| Roll-up banner, hall 4 | go.yourcompany.com/rollup | rollup | qr | hall4 |
| Staff lanyard | go.yourcompany.com/lanyard | lanyard | badge | standard |
| Leaflet, offer A | go.yourcompany.com/leaflet-a | leaflet-a | qr | offer-a |
| Leaflet, offer B | go.yourcompany.com/leaflet-b | leaflet-b | qr | offer-b |
| Printed namecard | go.yourcompany.com/namecard | namecard | qr | blue |
| Show catalogue listing | go.yourcompany.com/catalogue | catalogue | print | listing |
After the show you can answer questions that a single link could not. Did offer A beat offer B? Rows 3 and 4 differ only in content. Did the badge outperform the banner? Rows 1 and 2 differ in medium. Did anyone type the catalogue address by hand? Row 6 is the only row with medium print.
Know where UTMs get lost.
- Caution: A redirect that drops the query string. Test it: open the short link and check that the final address still carries the tags.
- Caution: A second redirect on the destination, for example from
httptohttpsor from a bare domain towww, that rebuilds the address without them. - Caution: A landing page script that rewrites the address or strips it before your analytics tag runs.
- Caution: Browsers and messaging apps that remove known tracking parameters in some modes. Expect a small, unmeasurable loss.
- Caution: A contact form that never records the tags. Analytics sees the visit, but the lead in your CRM has no source unless the form stores it.
That last point is why a placement matters beside the UTM. In 1Namecard the visit carries ?s= with the short link key. The card page keeps it in the browser's session storage for the life of the tab and sends it with the lead form or meeting request. The lead then arrives with its placement. UTMs tell your website analytics where visits came from. The placement tells your pipeline where leads came from. Use the same words for both and the two reports reconcile.
Read the result in GA4 and in your CRM.
In GA4 open Reports, then Acquisition, then Traffic acquisition, and change the first column to session source and medium or to session campaign. Your six rows appear as rollup / qr, lanyard / badge and so on.
Three things surprise people. First, GA4's default channel group files a visit under Unassigned when no channel rule matches its medium, and qr matches none. Google lets you build a custom channel group, so make one called Offline with a rule on the three mediums. Second, medium banner goes to the Display channel, so avoid it for a roll-up. Third, GA4 only sees visitors whose browser ran your tag. Where you need consent for analytics, people who decline do not appear, so GA4 under-counts. Your CRM and your short link counts do not depend on that.
Then compare. GA4 sessions per placement divided into CRM leads per placement gives a lead rate you can set side by side. The guide to QR codes on collateral shows how to lay out the placements, and the guide to cookieless link tracking explains what a click count can and cannot tell you.
Keep personal data out of every UTM.
A UTM lives in the address. It appears in browser history, server logs, referrer headers and your analytics tool. Google's analytics terms forbid sending personally identifiable information to Analytics. Treat a UTM as a label for a placement, never as a record of a person.
- Included: Never put a name, an e-mail address, a phone number or a badge number in any parameter.
- Included: To compare reps, use a code such as
r07and keep the key to the codes in a private sheet. - Included: Do not add a different tag for every recipient of a mailing. A tag unique to one person is a personal identifier.
Avoid the common mistakes.
- Caution: Mixed case.
Expo-2027andexpo-2027split a campaign into two lines. - Caution: Tagging links inside your own website. A tagged internal link can start a new session and overwrite where the visitor really came from.
- Caution: Renaming a campaign halfway through the show. The first half and the second half become two campaigns.
- Caution: Reusing
expowithout the year, so next year's numbers land on top of this year's. - Caution: Inventing a new medium for each printer. Three mediums are enough.
- Caution: Printing before testing. Scan every code on two phones and look at the report an hour later.
Check before you send anything to print.
- Step 1.
Fill in the naming sheet and share it with whoever orders print.
- Step 2.
Create one short link per placement, with the key equal to the source.
- Step 3.
Add the three required UTM parameters to each target, plus content where you are testing a variant.
- Step 4.
Open each short link on a phone and confirm the final address carries all the tags.
- Step 5.
Scan the printed proof, not the screen, on two phones.
- Step 6.
An hour after the first test scan, find it in the report. If it is missing, fix it before the run.
- Step 7.
Record where each code is printed in the link's note, so the next person can tell.
Quick answers.
Which UTM parameters are required?
Google's documentation says to always use utm_source, utm_medium and utm_campaign. utm_term and utm_content are optional. For print, leave out utm_term and use utm_content only to tell variants apart.
Can I put UTM parameters in a QR code?
Yes, a QR code only stores an address. But a long tagged address makes a dense code that is harder to scan when printed small. Encode a short link instead and put the UTM parameters on its target.
Are UTM parameters personal data?
Not if they only describe a placement, such as a banner or a leaflet. They become personal data if you put a name, an e-mail address or a unique person code in them. Keep them to placements, and ask your data protection officer if you are unsure.
Why do my QR visits show as Unassigned in GA4?
GA4's default channel group has no rule for a medium such as qr, so those sessions fall under Unassigned. The data is intact. Create a custom channel group with a rule for your offline mediums to see them as one channel.