Home / Tools & calculators / UTM builder
Free tool

UTM campaign URL builder.

Build tagged links that report cleanly the first time. Platform presets, the right dynamic parameters, and warnings for the things that quietly split one campaign into four.

Build your link

The page the ad sends people to, including https://
Start from a platform Fills the source, medium and that platform's dynamic parameters. You can edit anything afterwards.
Pick a platform, or fill the fields below yourself.
Where the traffic comes from: google, facebook, linkedin, newsletter.
The type of traffic: cpc, paid_social, email, display. Stick to one convention across every channel.
How this appears in your reporting. A convention such as brand-objective-quarter survives handover; a one-off name does not.
+ Optional parameters and formatting
Traditionally the keyword. On Google Ads the ValueTrack parameter {keyword} fills it automatically.
Used to tell two versions of the same ad apart, for example in an A/B test.
Optional utm_id, used to join sessions to cost data imports in GA4.
Your tagged URL
Check this
Parameters being added
ParameterValue
Check before you use it This builder assembles a URL from what you type and does not validate that the destination works or that your analytics is configured to read it. Always open the finished link and confirm the campaign appears in your reporting before running it live. Read the full disclaimer.

What UTM parameters actually do

A UTM parameter is a label bolted onto the end of a URL. It does nothing to the page. Its only job is to survive the click so that your analytics tool can read it and file the visit under the right campaign.

Get them right and every channel reports in one consistent structure. Get them wrong, or inconsistent, and one campaign arrives as four separate rows and nobody trusts the numbers.

ParameterAnswersTypical values
utm_sourceWhere did they come from?google, facebook, linkedin, newsletter
utm_mediumWhat kind of traffic is it?cpc, paid_social, email, display
utm_campaignWhich campaign was it?au-search-brand-q1, spring-sale
utm_termWhich keyword or audience?{keyword}, {{adset.name}}
utm_contentWhich creative or variant?{creative}, video-a, static-b
utm_idWhich record in a cost import?A campaign ID from your platform

Source, medium and campaign are the three that matter. Term and content are optional and only worth using when you will genuinely look at them.

For Google Ads, use auto-tagging instead

This is the advice most UTM guides leave out. Google Ads has its own tagging mechanism, the gclid, and where GA4 is your reporting destination, auto-tagging beats manual UTMs on every measure that matters.

Auto-tagging passes campaign, ad group, keyword, match type, device and network without you maintaining anything. Manual UTMs pass only what you remembered to type, break silently when a campaign is renamed, and lose data whenever someone builds a link by hand.

When manual UTMs are still the right call for Google Ads

Use them when your analytics is not GA4 and cannot read the gclid, when a CRM or attribution tool needs specific values, or when a landing page platform strips unknown query parameters. If you do run both, be aware that manual UTMs override auto-tagged values in GA4, so half-populated UTMs will make your reporting worse, not better.

Why case and consistency break reporting

UTM values are case sensitive. Brand, brand and BRAND are three different campaigns as far as analytics is concerned, and they will appear as three rows that each hold a third of the truth.

The same applies to near-misses in naming. paid_social and paid-social split. facebook and fb split. cpc and ppc split, and GA4 treats both as paid search so the channel grouping survives, but the source-medium report does not.

Two rules prevent almost all of it. Force everything to lower case, which this builder does by default. And write the conventions down somewhere the whole team can see, because the problem is never one person's links, it is four people each doing something reasonable.

A naming convention that survives handover

Campaign names work best as structured fragments rather than prose. Something like market-channel-objective-period gives you au-search-leadgen-q1, which sorts predictably, filters cleanly with a wildcard, and still means something to whoever inherits the account in two years.

Never put personal information in a UTM

This matters more than it sounds. Query parameters travel further than people expect: into analytics platforms, into referrer headers sent to third-party sites, into server logs, into browser history, into anything that captures a full URL.

That makes a UTM one of the worst possible places for a customer's name, email address, phone number or any other identifier. Under the Australian Privacy Act, personal information disclosed this way is still your responsibility, and Google Analytics' own terms prohibit sending personally identifiable information into the product.

The common version of this mistake

Email platforms that offer merge tags make it easy to write utm_content={{email}} to see who clicked. It works, and it puts every recipient's email address into your analytics. Use an anonymous subscriber ID if you need click-level attribution, and see our privacy policy for how we handle this.

Dynamic parameters by platform

Most platforms can fill parts of the URL automatically at click time, which is far more reliable than typing them. The presets in this builder insert the correct ones.

PlatformUseful parametersNote
Google Ads{keyword}, {creative}, {network}, {device}, {campaignid}ValueTrack. Put them in the final URL suffix rather than on each ad.
Meta{{campaign.name}}, {{adset.name}}, {{ad.name}}, {{placement}}Double braces. Stay in sync automatically when you rename things.
TikTok__CAMPAIGN_NAME__, __CID_NAME__, __AID_NAME__, __PLACEMENT__Uppercase with double underscores, and case sensitive. Do not lower case these.
LinkedInNoneValues must be typed per campaign, so a naming convention matters more here.

Because these macros must keep their exact casing, the lower case option in this builder deliberately skips anything wrapped in braces or double underscores.

Five mistakes that ruin campaign reporting

1. Tagging internal links

Putting UTMs on a link between two pages of your own site starts a new session and attributes it to the campaign, wiping the original source. The visit that came from organic search gets recorded as an email click.

2. Mixing UTMs with auto-tagging on Google Ads

Manual UTMs win over the gclid in GA4. A partially filled UTM will therefore replace complete auto-tagged data with incomplete data.

3. Inventing a new medium for every channel

GA4 groups traffic into channels using the medium value. Something creative like facebook-ads lands in the unassigned bucket, while paid_social lands where you expect.

4. Tagging a redirect

Some redirects and link shorteners drop query parameters. Always test the finished link and confirm the campaign appears in your reporting before it goes live.

5. Leaving the parameters visible in shared content

A UTM-tagged link pasted into a forum or shared by a customer keeps reporting as your campaign forever. It is harmless but it inflates the numbers, so treat sudden unexplained campaign traffic with suspicion.

Frequently asked questions

What is a UTM parameter?+

A UTM parameter is a tag added to the end of a URL that tells your analytics tool where a visitor came from. The five standard parameters are utm_source, utm_medium, utm_campaign, utm_term and utm_content. They do not change the page, they simply survive the click so the visit can be attributed to the right campaign.

Which UTM parameters are required?+

Source, medium and campaign are the three that matter. Without a source, most analytics tools will file the visit as direct traffic. Without a medium, GA4 cannot group the traffic into a channel. Term and content are optional and only worth adding if you will actually report on them.

Should I use UTMs on Google Ads?+

Usually not, if GA4 is your reporting tool. Google Ads auto-tagging passes campaign, ad group, keyword, match type, device and network through the gclid without any maintenance, and it does not break when a campaign is renamed. Use manual UTMs for Google Ads only where another tool needs specific values, and be aware that manual UTMs override auto-tagged data in GA4.

Are UTM parameters case sensitive?+

Yes, and this is the most common cause of split reporting. Brand, brand and BRAND appear as three separate campaigns. Forcing everything to lower case, which this builder does by default, removes the problem entirely. The exception is platform macros such as TikTok's __CAMPAIGN_NAME__, which must keep their uppercase form.

What should I use for utm_medium?+

Stick to the conventional values so GA4 files the traffic correctly: cpc or ppc for paid search, paid_social for paid social, email for email, display for display, and affiliate or referral where they apply. Inventing your own value, such as facebook-ads, usually results in the traffic landing in an unassigned channel.

Can I put a customer's email address in a UTM?+

No. Query parameters end up in analytics platforms, referrer headers, server logs and browser history, which makes them one of the worst places for personal information. Google Analytics' terms prohibit sending personally identifiable information into the product, and under Australian privacy law that information remains your responsibility. Use an anonymous subscriber ID instead.

Should I put UTMs on links within my own website?+

No. Tagging an internal link starts a new session and overwrites the original traffic source, so a visitor who arrived from organic search gets reattributed to whichever campaign you tagged. Use UTMs only on links that arrive at your site from somewhere else.

Why did my campaign split into several rows in GA4?+

Almost always inconsistent values. Different capitalisation, a hyphen where someone else used an underscore, or fb in one place and facebook in another. Each variation is a distinct value as far as analytics is concerned. Agree a convention, force lower case, and build links from one tool rather than by hand.

Important: please read before using these links

This builder is a free formatting tool, provided for general information. It assembles a URL from the values you type. It does not verify that the destination page exists, that the link resolves correctly, that your analytics is configured to read the parameters, or that the values follow your organisation's conventions.

Always test before you launch. Open the finished link, complete a visit, and confirm the campaign appears as expected in your reporting. Redirects, link shorteners, consent tools, tag managers and some landing page platforms can strip or rewrite query parameters without warning.

Never include personal information. Query parameters are recorded in analytics platforms, referrer headers sent to third parties, server logs and browser history. Do not place names, email addresses, phone numbers, customer identifiers or any other personal information in a UTM value. You remain responsible for personal information you disclose in this way, including under the Privacy Act 1988 (Cth) and the Australian Privacy Principles, and doing so may also breach the terms of your analytics provider. Our privacy policy explains how we handle personal information.

No data is collected by this tool. The URL is assembled in your browser. The values you type are not transmitted to Paid Media Plus or stored by this page, other than through the standard analytics described in our privacy policy.

Platform behaviour changes. Dynamic parameters, macro syntax, auto-tagging behaviour and channel groupings are set by Google, Meta, LinkedIn, TikTok and other providers, and they change without notice. Verify the current syntax in the relevant platform's own documentation before relying on it.

No warranty. This tool is provided on an "as is" and "as available" basis. To the maximum extent permitted by law, Paid Media Plus makes no representation or warranty, express or implied, as to the accuracy, completeness, reliability, currency or fitness for any purpose of this tool or its output, and accepts no liability for any loss, damage or cost of any kind arising directly or indirectly from its use, including lost, misattributed or corrupted analytics data.

Nothing in this disclaimer excludes, restricts or modifies any guarantee, right or remedy you may have under the Australian Consumer Law or any other law that cannot lawfully be excluded. Where liability cannot be excluded, it is limited to the maximum extent permitted by law. Your use of this tool is also governed by our terms of use.

Keep going

Once the tagging is right.

Clean campaign data is what makes these worth running. Here is what to do with it.

Is your tracking telling the truth?

Get a free, no-obligation audit of your account. You will get the findings and the three highest-impact fixes, whether or not we end up working together.

Get my free audit →