Track campaigns with UTM parameters
UTM tags turn every click into attributable data — source, medium, campaign, content, and term. This guide covers the five UTM parameters, OpenMyLink's Channels & Campaigns system, naming conventions that hold up across a multi-quarter program, and the mistakes that quietly poison your analytics.
UTM (Urchin Tracking Module) tags are the five query-string parameters Google Analytics, Looker, Mixpanel, and pretty much every analytics product on Earth use to figure out where a visitor came from. They started as a Google Analytics convention twenty years ago and stuck. If you add them correctly, every click becomes attributable to a source, a campaign, an ad creative, even a keyword. If you add them inconsistently, your reports turn into mush.
What UTM parameters actually do
UTMs are nothing more than query-string parameters appended to a URL:
https://example.com/spring-sale?utm_source=newsletter&utm_medium=email&utm_campaign=spring-2026
Your destination site doesn't have to do anything special to read them — analytics tools pick them up automatically from the URL bar on page load. The visitor sees nothing different; the analytics platform sees structured attribution.
Why bother routing through OpenMyLink instead of just appending UTMs directly? Three reasons:
- Short, brand-safe URL.
oml.link/spring-saleis shareable; the long UTM-stuffed version is not. - Pre-redirect analytics. OpenMyLink captures clicks at the redirect — so even if the destination has no analytics installed, you still know how many clicks came in.
- Edit after publishing. Print or paste the short link; change the UTMs (or the destination) any time without re-printing.
The five UTM parameters
| Parameter | Required? | Purpose | Example value |
|---|---|---|---|
utm_source | Yes | Where the click came from | newsletter, twitter, partner-name |
utm_medium | Yes | What kind of channel | email, cpc, social, qr |
utm_campaign | Yes | The campaign name | spring-2026, black-friday |
utm_content | Optional | Which creative/variant | hero-button, banner-blue |
utm_term | Optional | Paid-search keyword | branded+link+shortener |
Source, medium, and campaign are the load-bearing trio. Content and term are useful if you're A/B-testing creatives or running paid search.
Adding UTMs in OpenMyLink
You can attach UTMs to any short link in two ways:
- Per link, manually. When creating a link, expand the Advanced section and fill in UTM source, UTM medium, and UTM campaign. OpenMyLink will append them to the destination URL on every redirect.
- From a Channel preset. Define a Channel once (e.g. "Email newsletter — Q2") with its UTM defaults, then pick that Channel from a dropdown every time you create a link. The link inherits all the defaults, with the option to override any field.
The advantage of the second approach: every link you ship under "Email newsletter — Q2" carries identical, predictable tags. No more typos, no more utm_source=Newsletter in one link and utm_source=newsletter in the next.
Channels & Campaigns
OpenMyLink lets you tag every asset (links, QR codes, bio pages, files) with a Channel and a Campaign. The two concepts are independent and serve different jobs:
- Channel — where the asset lives. Email, social, paid ads, print, in-product, partners. A Channel can carry default UTM source & medium.
- Campaign — why the asset exists. "Spring 2026 launch", "Q2 lead-gen push", "Black Friday". A Campaign can carry a default UTM campaign value.
This split lets you ask questions like "how did the spring-2026 campaign perform across email vs paid social?" without doing any post-hoc data munging — the rollups are already in the dashboard.
Naming conventions that survive a year
The single biggest reason analytics turns into junk is inconsistent naming. utm_source=Email, utm_source=email, utm_source=EMAIL, and utm_source=newsletter are four different sources as far as GA4 is concerned. Pick a convention and police it.
- Lowercase everything. Always. Analytics platforms treat values case-sensitively.
- Hyphens, not spaces or underscores.
spring-2026beatsspring_2026beatsspring 2026(the last one even URL-encodes weirdly). - Singular nouns for source.
newsletternotnewsletters;partnernotpartners. - Vocabulary table. Keep a short list of approved values for each parameter and share it with everyone who creates links. OpenMyLink's Channel presets do exactly this — once the Channel is defined, the team can only pick from the dropdown.
- Date your campaigns.
spring-2026is unambiguous in five years;springis not.
Common mistakes that poison the data
- Inconsistent capitalization. See above. The number-one offender.
- Tagging internal links. Never put UTMs on links inside your own website. GA4 will treat each internal click as a new visit from "email" or wherever, and your real attribution gets overwritten on the next page load.
- Using
utm_source=facebookfor paid and organic. Useutm_mediumto separate them:cpcfor paid,socialfor organic. - Putting the brand name in
utm_source. Source is the platform, not the campaign.utm_source=metagood,utm_source=openmylink-spring-campaignvery not good. - Forgetting
utm_medium. GA4 falls back to(not set)which destroys cohort reports.
Reading the data back
OpenMyLink's per-link Statistics view already breaks down clicks by campaign, channel, and source. For the full picture, pair it with your destination analytics:
- GA4 → Acquisition → Traffic acquisition. Group by Session campaign or Session source / medium.
- OpenMyLink API → REST endpoints return per-link daily click counts; aggregate however you like in your warehouse.
Recipes
Email newsletter
utm_source=newsletter
utm_medium=email
utm_campaign=spring-2026
utm_content=hero-button
Paid social (Meta)
utm_source=meta
utm_medium=cpc
utm_campaign=spring-2026
utm_content=video-15s
Organic social
utm_source=twitter
utm_medium=social
utm_campaign=spring-2026
utm_content=launch-thread
QR code on print collateral
utm_source=trade-show-q2
utm_medium=qr
utm_campaign=spring-2026
utm_content=booth-banner
Set these as Channel defaults in OpenMyLink once and the team never has to type them again.
Was this article helpful?
Tell us what's working and what isn't — we read every reply.