Free UTM Builder

Fill in where the traffic is coming from and what the campaign is called, and this builder assembles a properly tagged URL you can paste straight into an ad, an email or a social post. It forces your source, medium, campaign, term and content values to lowercase as you type, which is the difference between one clean row in your reports and four.

The page the link should land on. Existing query strings and anchors are preserved.

Where the traffic comes from - the platform or publication. Examples: google, newsletter, linkedin.

The type of traffic. Match GA4's default channel groups where you can: cpc, email, social, referral, display.

The campaign this link belongs to. Keep it identical across every link in the campaign.

Optional. Must match the campaign ID in the cost data you upload to GA4, exactly - including capitals. Leave blank if you do not upload cost data.

Optional. The paid keyword, on search campaigns.

Optional. Which creative or placement - use it to tell two versions of the same ad apart.

Generated URL

Fill in the required fields above to generate a URL

Still missing: Website URL, Campaign source, Campaign medium, Campaign name.

Runs entirely in your browser. Links are never sent to or stored on a server.

AI referrals arrive untagged, so you cannot campaign-tag that traffic - measure it instead with the AI Visibility Tool.

Tagging a link for a search ad? Write the ad copy first with the Ad Copy Generator.

Once traffic is tagged by source, the next question is how well each one converts on the click itself - check that with the CTR calculator.

Tagged URLs are what make cost per channel measurable in the first place - work out that cost with the CPM calculator.

Once campaigns are tagged, the next question is how well each one actually converts - check that with the conversion rate calculator.

Once spend and revenue are tagged consistently, the next question is whether the campaign actually made money - check with the ROAS calculator.

UTM Builder at a Glance


How to build a UTM link in five steps

The whole thing takes under a minute, and the order of the fields is the order of the decisions.

Paste the page you are sending people to. Any live URL works. You do not need to type https:// - the builder adds it, and it keeps any query string or anchor already on the link.

Pick a preset, or fill in source and medium yourself. A preset sets both at once for the common channels. Typing your own is always allowed, and either way the values arrive lowercase.

Name the campaign. Use one name across every link in the campaign. Change the wording halfway through and the campaign reports as two.

Add term, content or campaign ID only if you need them. Term for the paid keyword, content to tell two creatives apart, campaign ID to join the traffic to cost data you upload to GA4.

Copy the URL, or download it as a QR code. Paste it into the ad, the email or the post. For print, packaging or a stand at an event, take the QR instead - the tags are baked into what gets scanned.

Then test it before the campaign goes out: click your own link and watch it land in GA4 Realtime. Two minutes there is cheaper than finding out a fortnight later that a whole channel reported as direct.

What UTM parameters are

A UTM parameter is a label bolted onto the end of a link. When someone clicks it, the labels travel with them, and your analytics reads them to work out where that visit came from.

Without them, analytics can usually see the domain a visit arrived from, but nothing more. Every click from every email you have ever sent looks the same. Tag the links and the same traffic separates into the newsletter, the campaign and the specific button that was clicked.

The letters stand for Urchin Tracking Module, after the company Google bought in 2005 to build what became Google Analytics. The name is a historical accident; the parameters have been the standard way to attribute campaign traffic ever since, and every serious analytics tool reads them.

The nine parameters, and the six you will actually use

Google Analytics 4 recognises nine campaign parameters. Three are required, and in practice you will use six.


Two of those nine are worth knowing about and not worth filling in: Google’s own documentation states that utm_creative_format and utm_marketing_tactic are collected but not currently reported. Any guide telling you to populate them is giving you work with no output.

utm_id is the one most builders leave out and the one worth adding if you upload cost data to GA4 - it is the key GA4 uses to match a click to what that click cost.

How to name them so your reporting does not break

This is where campaign tracking actually fails, and it has nothing to do with the tool.

Parameter values are case-sensitive. Google states it directly: utm_source=google and utm_source=Google are different values. GA4 does not merge them. It does not lowercase them for you. Each becomes its own row in your acquisition reports.

So a team where one person types Facebook, another types facebook and a third types FaceBook does not have a Facebook number. It has three fractions of one, sitting in three rows, none of which is the real figure. Nothing warns you. The reports look fine.

The rules that prevent it:

Lowercase everything, always. The builder above does this for you. The one exception is the campaign ID, which has to match an ID issued by another system and is therefore left exactly as you type it.

Never use spaces. Use hyphens. A space becomes %20 and you end up with spring%20sale and spring-sale as separate campaigns.

Pick one separator and keep it. Hyphens or underscores, not both. spring-sale and spring_sale are two campaigns.

Match utm_medium to GA4’s default channel groups - cpc, email, social, display, referral, affiliate. Invent your own and your traffic lands in Unassigned, where nobody looks at it.

Write the convention down. The tool enforces case and spacing; it cannot enforce that everyone calls the same campaign by the same name. That part is a document, and it is the part that decays.

Case and spacing are mechanical, which is why they belong in a tool. Vocabulary is a decision, which is why it belongs in a convention your team agrees once and follows.

UTM examples by channel

Six patterns that cover most of what a team actually tags. Copy the shape, not the words.

Email newsletter - source: newsletter, medium: email. ?utm_source=newsletter&utm_medium=email&utm_campaign=spring-sale

Meta or Instagram ads - source: facebook or instagram, medium: paid-social. Add utm_content to tell two creatives apart.

LinkedIn organic post - source: linkedin, medium: social. Use the same campaign name as the paid version, so both roll up.

Google Ads, auto-tagging off - source: google, medium: cpc. Add utm_term on search campaigns.

Affiliate or influencer - source: the partner name, medium: affiliate. One source per partner, never one shared source.

QR code on print - source: poster-lobby or flyer-q3, medium: qr. Name the placement in the source, so two posters are two rows.

Two things to take from this. The source names the specific place a click came from and the medium names the category it belongs to - a poster is a source, qr is the medium. And qr is not one of GA4’s default channel groups, so print traffic sits in Unassigned until you add a custom channel group for it; the tagging is still right, and source, campaign and everything downstream still report.

Never tag internal links

Use UTM parameters on links that bring people to your site. Never on links inside it.

A tagged internal link tells analytics the visitor has just arrived from a new source. GA4 attributes the rest of that visit to whatever you tagged, and the real source - the ad, the email, the search that actually brought them - is overwritten. The campaign that earned the conversion loses it, and an internal button gets the credit.

It is a common mistake because tagging a homepage banner feels like the obvious way to measure it. It is not. Use event tracking for anything happening inside your own site, and keep UTMs for the doorway.

This builder and Google’s Campaign URL Builder

Google’s own builder is the reference implementation, and there is nothing wrong with it. The difference is what happens to what you type.


Both produce a valid tagged URL. Only one of them stops the two mistakes that actually corrupt a report - a stray capital and a space - which is the reason this one rewrites values while you type.

Where the data appears in GA4

Tagged traffic surfaces in Reports → Acquisition → Traffic acquisition, split by session source, medium and campaign. Add campaign as a secondary dimension to see the individual campaigns rather than just the channel.

utm_term and utm_content are not shown by default. Build an exploration, or add them as dimensions in a custom report, when you need to compare creatives or keywords.

Data does not appear instantly. Real-time shows the session quickly, but standard reports typically take up to 24-48 hours to process fully - so a tagged link that looks like it is not working an hour after launch usually is. Once the spend and the traffic are both tagged consistently, the AEO ROI calculator can turn that attribution into a revenue figure.

Common mistakes

Tagging internal links. Covered above, and the most damaging one on this list.

Mixed case. Email and email are two mediums. The reports will not tell you.

Using a medium GA4 does not recognise. Traffic lands in Unassigned and is effectively invisible.

Putting the parameters after the #. Anything after a fragment is not read as a query parameter. The link works; the tracking does not.

Tagging the same URL twice. Building on a URL that already carries UTM tags produces duplicate parameters, and which one wins is not something you should be relying on.

Using UTMs on paid search where auto-tagging is already on. Google Ads auto-tagging and manual UTMs can conflict. Pick one - for Google Ads, auto-tagging is generally the better option.

Treating utm_campaign as a description. It is a key. Keep it short, stable and identical across every link in the campaign.

Getting attribution right across paid, email and organic is most of what makes reporting trustworthy. See how the Zaprev team plans and measures.

FAQ

Frequently Asked Questions

What is a UTM parameter?

A tag added to the end of a link that tells your analytics where the click came from. The information travels with the visitor, so a single click can be traced back to the exact email, ad or post that produced it. Without tags, most of that traffic collapses into a single undifferentiated bucket.

What are the required UTM parameters?

Three: source, medium and campaign. Source is the platform, medium is the type of traffic, campaign is the thing you are running. Everything else is optional. A link carrying only those three is properly tracked; a link missing any of them will report incompletely, and one missing medium will usually land in Unassigned.

Are UTM parameters case-sensitive?

Yes, and this catches more teams than any other detail. Google Analytics stores values exactly as written, so a capital letter creates a separate row rather than joining the existing one. Two people tagging the same platform differently produce two half-numbers instead of one whole one. The builder above removes the risk by forcing lowercase on every field except the campaign ID, which has to stay exactly as issued.

What is utm_id used for?

It is the campaign ID GA4 uses to match a visit against cost data you have uploaded, so that spend can be set against the traffic it bought. The value has to be identical to the ID in your upload file, capitals included, which is why this is the one field the builder leaves exactly as you type it. Leave it empty if you do not upload cost data.

Should I put UTM tags on links within my own website?

No. Tagging an internal link makes analytics treat the visitor as a brand new arrival, and the original source that brought them is discarded. Any conversion later in that visit is credited to the internal link instead of the campaign that earned it. Track on-site behaviour with events instead.

Do UTM parameters still work in GA4?

Yes. GA4 reads all the standard parameters and adds several of its own, including a campaign ID field. The mechanism is unchanged from earlier versions of Google Analytics - what changed is where the numbers surface in the interface, not how the tagging itself works.

How long before tagged traffic shows in my reports?

Sessions usually appear in real-time reports within minutes, but the standard acquisition reports process on a delay and can take a day or two to settle. A link that appears untracked shortly after launch is almost always fine. Check the tagged URL in real-time first before assuming the tagging is wrong.

What is the difference between utm_source and utm_medium?

Source names the particular place a click came from - the publication, the platform, the partner. Medium names the category that place belongs to. Meta is a source; paid-social is its medium. Swapping the two is why so many accounts end up with a channel called facebook and a source called social, and neither number means what it appears to mean.

Can I use a UTM link in a QR code?

Yes, and for print it is the only clean way to measure anything. Build the tagged link, generate the code from it, and every scan arrives already labelled instead of counting as direct. Give each physical placement its own source so a poster in a lobby and a flyer at an event never share a row.

Do UTM tags affect SEO?

Not for ranking - they are query parameters, and search engines disregard them when assessing a page. The one risk is duplication, because a tagged address is technically a second version of the same page and can be crawled if somebody links to it. A self-referencing canonical on the destination settles it, which is why tagged links belong in ads, emails and posts rather than anywhere crawlable.

Does this tool save the links I build?

Everything is assembled inside your own browser, and the recent list is held in your device's local storage until you clear it. No account, no email, nothing uploaded, nothing kept by us.