How to use the UTM builder
- Paste the page people should land on into Website URL. If it already has query parameters or a
#fragment, the builder keeps them. - Pick a preset (Google Ads, Meta Ads, LinkedIn, Newsletter or X) to prefill source and medium, or type your own.
- Fill in
utm_campaign. Addutm_idif the ad platform gives you a campaign ID, andutm_termorutm_contentif you need them. - Choose whether spaces become hyphens or underscores. Values are lowercased for you, and the builder warns you about mixed case or spaces.
- Press Copy and paste the UTM URL into your ad, post or email.
Everything runs in your browser. There is no account and nothing you type is sent anywhere.
What each UTM parameter means
| Parameter | Required | What it records | Example |
|---|---|---|---|
utm_source |
Yes | Who sent the visit: the site, platform or list | google, meta, newsletter |
utm_medium |
Yes | The type of channel | cpc, paid, email, social |
utm_campaign |
Yes | The campaign, promo or launch name | spring_sale |
utm_id |
No | The campaign ID, a stable key for the campaign | 120210000000 |
utm_term |
No | The paid keyword | event_analytics |
utm_content |
No | Which creative or link inside the campaign | hero_button, footer_link |
Google Analytics asks you to always set utm_source, utm_medium and utm_campaign, and describes utm_id as the campaign ID. Missing values show up as "(not set)" in GA4 reports. See Google's URL builders help page.
Naming conventions that keep reports clean
Parameter values are case sensitive. Google Analytics treats utm_source=google and utm_source=Google as two different sources, and recommends lowercase as the standard. A few rules that avoid most cleanup:
- Lowercase everything. The builder does this for you.
- Pick one separator. Hyphens or underscores, never both, never spaces.
- Keep a short list of mediums. For example
cpcfor search ads,paidfor paid social,emailfor newsletters,socialfor organic posts. Write the list down and share it. - Name campaigns the same way everywhere.
q4_launchin LinkedIn andQ4-Launchin email are two campaigns in every report. - Always add
utm_idwhen you have a campaign ID. A campaign name changes when someone renames it. The ID does not.
Examples by channel
Google Ads
Leave auto tagging on in Google Ads. It adds a gclid to every click, and Google Ads uses it to track conversions and to share cost data with Google Analytics. In GA4, auto tagging takes priority over manual UTMs (Google Ads help on auto tagging). UTMs are still useful for every other tool that reads the URL. Put them in the tracking template or final URL suffix with ValueTrack parameters so Google fills in the ID (ValueTrack parameters):
utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_id={campaignid}
Meta Ads (Facebook and Instagram)
Meta adds an fbclid to clicks, but Meta has no click level report, so that ID alone cannot tell you which campaign paid for the visit. Set the ad's URL parameters with Meta's dynamic parameters (Meta help on dynamic URL parameters):
utm_source=meta&utm_medium=paid&utm_campaign={{campaign.name}}&utm_id={{campaign.id}}
https://example.com/demo?utm_source=linkedin&utm_medium=paid&utm_campaign=q4_launch
Newsletters
Use utm_content to tell links in the same email apart:
https://example.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=october_update&utm_content=hero_button
Common mistakes
- Tagging internal links. UTMs on links inside your own site start a new attribution and overwrite the real source. Only tag links that point to your site from outside.
- Mixed case and spaces.
Facebook,facebookandface bookbecome three sources. - No
utm_idon paid campaigns. Renaming the campaign breaks the match between visits and spend. - Putting personal data in UTMs. Never put emails, names or user IDs in a URL. URLs end up in logs, referrers and screenshots.
- Redirects that drop the query string. Test the final landing URL after shorteners and redirects and check the parameters are still there.
- Only tagging some channels. Untagged traffic lands in "direct" and makes the tagged channels look better or worse than they are.
How Orwel reads UTMs and click IDs
Tagged links are only half the job. Something has to read them on landing and keep them until the visitor converts, which may be days later.
The Orwel SDK captures utm_source, utm_medium, utm_campaign, utm_term, utm_content and utm_id, plus the ad click IDs gclid, gbraid, wbraid, fbclid, ttclid, msclkid and li_fat_id (SDK 1.7.0 or newer). It keeps a first touch and a last touch across sessions and sends both with every conversion, so you never pass UTMs by hand.
With Google Ads or Meta Ads connected, Orwel joins those leads with campaign spend. Google leads are matched through the gclid. Meta leads are matched through utm_id, which is why the Meta example above includes it. The Campaigns screen then shows cost per lead, cost per qualified lead and spend that brought no qualified leads. Read more about marketing attribution in Orwel or the full guide to UTM tracking.