Google Analytics can tell you that a visit came from instagram.com, but not whether it came from your bio link, a story, an influencer or a paid ad. UTM parameters fix that. They are short tags added to the end of a link, such as utm_source=instagram, utm_medium=social and utm_campaign=fall-launch-2026, and GA4 reads them to label the visit and every sale that follows.
This builder makes those links correctly every time: consistent lowercase values, no broken query strings, a preview of the GA4 channel the visit will be grouped into, a QR code for print, and a bulk mode for tagging a whole product list at once.
How to build a UTM link
- Paste the page you want people to land on into Website URL. Existing parameters such as
?variant=123and any #anchor are kept. - Click a Quick preset to fill source, medium and content, or type them yourself. Presets include Instagram bio, Instagram or Facebook ad, Facebook post, TikTok ad, Pinterest pin, YouTube description, Email newsletter, SMS, Affiliate or partner, Influencer, QR code on packaging and Microsoft Ads.
- Enter the Campaign name, such as spring-sale-2026. Source, medium and campaign are the three you should always fill in.
- Optional: add Content to tell two links or ads apart, Term for a paid keyword, and Campaign ID if you import cost data. More GA4 parameters adds source platform, creative format and marketing tactic.
- Keep Make values lowercase on and choose what replaces spaces (hyphen by default).
- Read the Predicted GA4 channel badge and any warnings, then click Copy link. Use Test link to open it, Download QR for print, and Save to history to keep it in this browser.
What each UTM parameter means
| Parameter | Answers | Example values |
|---|---|---|
| utm_source | Who sent the visit? | instagram, facebook, newsletter, tiktok, partner-name |
| utm_medium | What type of channel? | social, paid_social, email, cpc, affiliate, qr_code |
| utm_campaign | Which promotion? | fall-launch-2026, black-friday-2026 |
| utm_content | Which link, creative or placement? | bio-link, header-button, video-a |
| utm_term | Which paid keyword? | linen throw |
| utm_id | Campaign ID for cost data import | fl26 |
| utm_source_platform | Which platform directed the traffic? | shopify, klaviyo |
| utm_creative_format, utm_marketing_tactic | Creative type and targeting | reel, retargeting |
Google's own documentation notes that utm_creative_format and utm_marketing_tactic are not currently reported in GA4 properties. The builder keeps them in the URL for other tools that read them, and tells you so under More GA4 parameters.
How GA4 decides the channel
GA4 sorts every visit into a default channel group, such as Organic Social, Paid Social, Email or Referral, using rules based on source and medium. If your values do not match any rule, the visit lands in Unassigned, which makes channel reports useless. The builder applies a simplified version of Google's published rules and shows the result as you type. A few that matter most:
- Email: source or medium is exactly email, e-mail, e_mail or "e mail". A source of newsletter with medium email works.
- Paid Social: a social source (facebook, instagram, tiktok, pinterest and others) plus a paid medium. GA4's paid mediums are anything containing cp (such as cpc), ppc, retargeting, or anything starting with paid, so paid_social qualifies.
- Organic Social: a social source, or a medium of social, social-network, social-media or sm.
- Affiliates: medium is exactly affiliate.
- SMS: source or medium is exactly sms.
- Display: medium is display, banner, expandable, interstitial or cpm.
There is no QR code channel. The QR code on packaging preset uses medium qr_code, and the builder warns that these visits land in Unassigned; you will find them by filtering Traffic acquisition by that source. If you want them counted under another channel, choose a medium that matches its rule.
Warning: UTM values are case sensitive. Google's documentation gives the example that utm_source=google is different from utm_source=Google, so "Facebook" and "facebook" become two separate rows. Keep Make values lowercase on and use one naming style for every campaign.
Worked examples
An email newsletter button
URL https://harborlane.com/products/tray?color=oak#reviews, source newsletter, medium email, campaign fall-launch-2026, content header-button. The builder keeps ?color=oak, adds the four tags after it with & between them, and keeps #reviews at the very end, where anchors must go. The finished link is 149 characters and the predicted channel is Email.
Two Instagram ads in one campaign
Click the Instagram or Facebook ad preset (source facebook, medium paid_social), campaign fall-launch-2026, and set content to video-a for the first ad and video-b for the second. The channel is Paid Social, and in GA4 you can compare the two ads by the Session manual ad content dimension.
Tagging a product list for an influencer
Switch to Many links, paste 20 product URLs, set source creator-name, medium social, campaign creator-launch-2026 and content story. Click Download CSV to get a sheet with the original URL, the tracking URL and each UTM value, ready to send to the creator.
A flyer at a market stall
Use the QR code on packaging preset, change source to flyer and campaign to summer-market-2026, then click Download QR. For a styled code with your logo, paste the same tracking link into our QR code generator.
How the builder formats your link
Small formatting slips are the most common reason UTM data ends up split or broken, so the builder handles them for you:
- Values are trimmed and, with the default setting, lowercased.
- Spaces become hyphens, underscores, or %20 if you choose to keep them. The link never contains a raw space.
- Other special characters are percent-encoded, so an ampersand or a question mark inside a value cannot break the query string.
- The parameters are added after any existing ones, in the order source, medium, campaign, ID, term, content, then the extra GA4 parameters, and before any #anchor.
- Old utm_ parameters already in the URL are removed first, so a link never carries two sources.
- If the URL has a gclid from Google Ads, you get a warning, because GA4 uses the gclid and ignores manual source and medium.
The character count next to the channel badge tells you how long the link is. Very long links are fine in emails and ads, but they make QR codes denser, which is worth knowing before you print.
A campaign plan in UTM tags
Here is how a small store might tag a Black Friday campaign so every channel can be compared in one report:
| Placement | utm_source | utm_medium | utm_campaign | utm_content |
|---|---|---|---|---|
| Early access email | newsletter | black-friday-2026 | early-access | |
| Main sale email | newsletter | black-friday-2026 | main-sale | |
| Instagram story link | social | black-friday-2026 | story | |
| Meta ad, video | paid_social | black-friday-2026 | video-a | |
| TikTok ad | tiktok | paid_social | black-friday-2026 | ugc-1 |
| SMS blast | sms | sms | black-friday-2026 | reminder |
One campaign name ties it all together. In GA4, filter by that campaign to see the total, then break it down by source, medium or content to see which placement sold the most.
What each preset fills in
Presets set source, medium and content. The campaign name is always yours. This is where each preset lands in GA4's default channels:
| Preset | Source | Medium | Predicted channel |
|---|---|---|---|
| Instagram bio | social | Organic Social | |
| Instagram or Facebook ad | paid_social | Paid Social | |
| Facebook post | social | Organic Social | |
| TikTok ad | tiktok | paid_social | Paid Social |
| Pinterest pin | social | Organic Social | |
| YouTube description | youtube | video | Organic Video |
| Email newsletter | newsletter | ||
| SMS | sms | sms | SMS |
| Affiliate or partner | partner-name | affiliate | Affiliates |
| Influencer | creator-name | social | Organic Social |
| QR code on packaging | packaging | qr_code | Unassigned |
| Microsoft Ads | bing | cpc | Paid Search |
Replace partner-name and creator-name with the real partner or creator, in lowercase, so each one gets its own row in reports. Change the content value too when one partner posts in several places.
Where to find UTM data in GA4
- Open Google Analytics and go to Reports > Acquisition > Traffic acquisition.
- Click the dropdown above the first column and choose Session source / medium to see rows such as newsletter / email, or Session campaign to compare campaigns.
- Add a secondary dimension with the plus icon, such as Session manual ad content, to split a campaign by utm_content.
- Use the date picker to cover the campaign period, and check the key events and revenue columns to see sales, not only visits.
New data can take a day or so to appear in standard reports. To confirm a link works right away, open it yourself and check the Realtime report for your source.
UTM naming conventions that keep reports clean
- Lowercase everything and use hyphens instead of spaces.
- Name sources after the site or partner (instagram, not ig or Insta).
- Pick a short list of mediums and never improvise: social, paid_social, email, cpc, affiliate, sms, qr_code, video.
- Put the year in campaign names so this year's sale is not merged with last year's.
- Use utm_content for the variation, not a new campaign name.
- Keep a shared sheet of the values your team uses. The builder's history (last 15 links, this browser only) helps you reuse exact values.
UTM tags with short links and redirects
If you use a link shortener or a redirect, the UTM tags must reach the final page. Put the tags on the destination URL before you shorten it, not on the short link. Then test the short link: open it, look at the address bar on the landing page, and confirm the utm_ parameters are still there. Some redirects, such as a store redirecting http to https or an old product URL to a new one, can drop the query string. Our redirect checker shows each hop and the final URL, so you can see whether the parameters survive.
When not to use UTM tags
- Internal links on your own site. Tagging a banner on your homepage replaces the visitor's real source with your internal tag, so sales get credited to your own homepage instead of the ad or post that brought them. Use GA4 events for internal clicks.
- Google Ads with auto-tagging. Auto-tagging adds a gclid and gives GA4 more detail than manual tags. If a link already has a gclid, the builder warns that GA4 uses it and ignores your source and medium.
- Organic search. You cannot tag Google's organic results; GA4 identifies them automatically. To see where your pages rank in Google, use a rank tracker instead.
Troubleshooting
"That URL does not look right"
Check for spaces or missing characters in the address. If you leave out https://, the builder adds it; it still needs a domain such as yourstore.com.
My old UTM values disappeared from the link
If the URL already had utm_ parameters, they are replaced with your new values, and a message lists which ones. This avoids links with two conflicting sources.
Visits show as (not set) or Unassigned in GA4
Fill in source, medium and campaign on every link, and check the predicted channel before copying. Unassigned usually means the medium does not match any rule.
Two team members tagged the same campaign differently
GA4 cannot merge them after the fact, so the numbers stay split in standard reports. Agree on the values, share the builder's CSV or a shared sheet, and use the presets so everyone starts from the same source and medium.
Instagram shortens or breaks my link
Instagram bios accept links, but captions do not make them clickable. Put the tagged link in the bio or a link sticker in stories.
UTM tags measure the traffic you send. For the traffic Google sends you from search, AM Jarvis Rank Tracker tracks your keyword positions daily with history and drop alerts. Our free keyword rank checker gives a one-off check, and the website SEO checker reviews the landing pages your tagged links point to.