How to Use the UTM Campaign Builder

Every campaign link needs UTM parameters, and every UTM parameter is a chance to type something slightly differently than last time. “Newsletter” and “newsletter” are two sources in your reports. “email” and “e-mail” are two mediums. A space in a campaign name becomes a %20 in one tool and a plus sign in another. We built the UTM Campaign Builder so the link that comes out is the same shape every time, whoever built it.

What the Five Parameters Are For

Before the walkthrough, the thirty-second version of what each field means, because the most common UTM mistake is using two of them for the same thing:

  • Source is where the traffic came from: google, newsletter, linkedin, partner-site.
  • Medium is the type of channel: cpc, email, social, referral. A source belongs to a medium. “google” is a source, “cpc” is the medium it arrives through.
  • Campaign is the initiative: spring_launch_2026, q2_webinar.
  • Term is optional and historically meant the paid keyword. It’s useful for anything you’d otherwise have nowhere to put.
  • Content is optional and distinguishes versions of the same placement: header_link vs. footer_link, image_a vs. image_b.

The naming convention post goes deeper on what to put in each. This post is about the tool that enforces it.

Step 1: Paste the Destination URL

Start with the page the link should land on, including https:// and any existing query string. The builder parses the URL properly rather than gluing text onto the end, so if the destination already has parameters (a product ID, a page number), the UTMs are appended correctly instead of producing a second question mark halfway through the link.

Step 2: Fill Source, Medium, and Campaign

These three are required, and the tool won’t generate anything until all three have a value. That’s deliberate. A link with a source and no medium is the kind of half-tagged URL that shows up in reports as “(not set)” and can never be fixed after the fact.

As you leave each field, the builder normalizes what you typed: trimmed, lowercased, spaces replaced with underscores. So “Spring Launch 2026” becomes spring_launch_2026 in the field itself, not just in the output, and what you see is exactly what goes into the URL. If your convention uses hyphens instead of underscores, type them and they’ll be kept; the tool only replaces spaces, because spaces are the thing that breaks.

Step 3: Add Term and Content If You Need Them

Both are optional and both get the same normalization. The usual reason to fill Content is that you have two links in the same email or ad pointing at the same page and want to know which one people clicked. If you don’t have that situation, leave it blank. Empty parameters are better than parameters filled with placeholder values.

The generated URL updates live as you type, and it’s properly encoded, so characters that would otherwise break a link (ampersands, accents, anything that isn’t URL-safe) come out as their encoded form. Hit Copy and paste it where it’s going.

The Session History

Every link you build in a session is kept in a list under the output. It’s in memory only and disappears when you refresh or leave the page, which is intentional: nothing is stored anywhere. The point is that when you’re building eight links for one campaign, the previous seven are right there for comparison, and it’s obvious when the eighth doesn’t match.

Two Things Worth Knowing

Don’t tag internal links. A UTM on a link from your homepage to your pricing page overwrites the visitor’s original source with whatever you put in the tag. Every visitor who clicks it turns into a “campaign” visitor, and you lose where they actually came from. UTMs are for links that start outside your site.

Autotagging doesn’t replace this. Google Ads and Meta both add their own click IDs, and those are what feed their own reporting. UTMs are what feed everything else: GA4, your CRM, any dashboard that isn’t the ad platform’s own. Use both.

Nothing Leaves Your Browser

The builder runs entirely client-side. The URLs you build aren’t sent anywhere, logged, or stored, so it’s fine for unreleased campaigns and client work.

It takes about ten seconds per link, and it removes the single most common reason campaign reports fragment. See the full list of free tools, or get in touch if your reports are already fragmented and you’d like help putting them back together.