U.UtilityApp
📈 SEOFree · No signup

UTM Campaign URL Builder

Build trackable campaign URLs with UTM parameters (source, medium, campaign, term, content) for analytics.

What the builder adds to your link

Enter the page address, fill in the campaign fields, and the builder appends them as query parameters. The parameters always come in the same order (source, medium, campaign, term, content), and any field you leave blank is left out. The example values produce:

https://example.com?utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale

Use the copy button rather than selecting the text by hand, so nothing gets cut off. If you clear every field, the result is your address with a lone ? on the end, which does no harm but tracks nothing.

The builder doesn't check or tidy your values. It won't lowercase "Facebook" or correct a typo in "newsleter", so type each value exactly as your team's naming list says. The UTM naming guide on this site covers what those values should be.

Spaces and symbols are encoded for you

Values are URL-encoded, so you can type spaces and punctuation without breaking the link. Here is a LinkedIn video ad pointing at a pricing page:

FieldYou typeIn the link
Sourcelinkedinutm_source=linkedin
Mediumpaid_socialutm_medium=paid_social
Campaignq4 launchutm_campaign=q4+launch
Contentvideo adutm_content=video+ad

A space becomes +, and an ampersand becomes %26, so "black-friday & cyber monday" turns into black-friday+%26+cyber+monday. The link works, but encoded values are hard to read in a spreadsheet of links and easy to mistype. Underscores or hyphens in place of spaces avoid the problem.

Pages that already have a ? or a #

If your address already has a query string, the builder joins the tags on with & instead of starting a second ?. https://example.com/pricing?plan=pro becomes https://example.com/pricing?plan=pro&utm_source=linkedin&…, and the existing plan=pro keeps working.

A fragment, the part starting with #, is a problem. The builder adds the tags to the very end of what you entered, so https://example.com/docs#setup becomes https://example.com/docs#setup?utm_source=newsletter&…. Everything after the # stays in the browser and is never part of the query string, so analytics won't see the campaign.

To link to a section, enter the address without the fragment, copy the result, and add #setup to the very end: https://example.com/docs?utm_source=newsletter&utm_medium=email&utm_campaign=onboarding#setup.

Test the link before it goes out

Paste the finished link into a private browser window and check three things:

  1. The page loads, and it's the page you meant, not a home page you were redirected to.
  2. The address bar still shows the utm_ parameters after the page loads. Some redirects drop the query string on the way, and the campaign is lost with it.
  3. Your analytics real-time report shows a visit with the source and medium you set.

It takes a minute, and it's much easier than finding out from an empty report after the email has gone to everyone.

Frequently asked questions

Which fields do I have to fill in?+

The builder accepts any combination. In practice, fill in source, medium and campaign on every link, because most reports group traffic by those three. Leave term and content blank unless you are comparing keywords or versions of an ad.

Can I use one tagged link in the newsletter and on social media?+

Build a separate link for each placement. If one link with utm_source=newsletter is also posted on social media, every click from that post is credited to the newsletter.

Does the builder shorten the link?+

No. It gives you the full address. If you need something shorter for print or a text message, run the finished link through a link shortener and test that the shortened version still lands with its parameters.

Guides & deep dives

Embed this tool on your website

Free to use on blogs, school sites and intranets. Paste this code into your page's HTML; please keep the credit line.

<iframe src="https://utilityapp.lat/embed/seo/utm-builder" title="UTM Campaign URL Builder" width="100%" height="600" style="border:0;max-width:760px" loading="lazy"></iframe>
<p style="font-size:13px"><a href="https://utilityapp.lat/seo/utm-builder">UTM Campaign URL Builder</a> by UtilityApp</p>