Skip to main content
Free, no signup

GA4 UTM Builder

Build a campaign URL for Google Analytics 4 and see exactly which GA4 dimension each parameter fills. There is no special GA4 format: it reads the same five parameters everything else does.

Build a campaign URL

The page you want people to land on. Any query parameters already on it are kept.

Where the click comes from. A specific place: google, newsletter, linkedin, partner-name.

The kind of traffic it is. Keep this to a short agreed list: email, cpc, social, referral, affiliate.

The campaign this link belongs to. Everything in one campaign should share this exact value.

Optional. Which link it was, when one campaign has several: header-button, footer-link, variant-b.

Optional. The paid search keyword. Leave it blank unless you are tagging keyword-level links by hand.

The same builder, for people who will read the result in Google Analytics 4

This page uses the free TagPipes UTM Builder: five standard parameters, built in your browser, nothing sent anywhere and no account needed. What is different here is the explanation around it, written for people who will read the result in Google Analytics 4.

GA4 does not need a different URL

This is worth saying plainly, because the question comes up constantly. Google Analytics 4 reads the same utm_source, utm_medium, utm_campaign, utm_content and utm_term that Universal Analytics read, and that every other analytics tool reads. A URL tagged for one is tagged for all of them.

What changed between Universal Analytics and GA4 is not the URL. It is what happens to the values afterwards: which dimension they land in, how long the attribution lasts, and how GA4 rolls your source and medium up into a channel group. Those are the parts that surprise people, and they are what the rest of this page covers.

GA4 also accepts a longer set of parameters for some specific cases, such as utm_id for tying a link to a campaign in the Google Ads or Search Ads world. The builder above deliberately stays with the five that are universal; adding an id is a decision that should follow whatever your ad platform expects, not a default.

Where each parameter lands in a GA4 report

The parameter names and the GA4 dimension names are not the same words, which is the main source of confusion when you go looking for your campaign.

ParameterGA4 dimensionWhere you find it
utm_sourceSession source, First user sourceTraffic acquisition and User acquisition reports, and as a dimension in Explorations
utm_mediumSession medium, First user mediumThe same reports. Combined with source, this is what feeds the default channel grouping
utm_campaignSession campaign, First user campaignTraffic acquisition, and the campaign dimension in any Exploration
utm_contentSession manual ad contentNot in the standard reports. Add it as a dimension in an Exploration, or a secondary dimension
utm_termSession manual termSame: an Exploration dimension rather than something on a standard report

Session dimensions describe the visit the click produced. First user dimensions describe how that person was first acquired, which may have been months earlier and through a completely different campaign. Comparing the two is how you tell new acquisition apart from re-engagement.

Three GA4 behaviors that catch people out

None of these are bugs. They are design decisions, and they all reward a tidy medium value.

1. Channel grouping is driven by medium

GA4 decides whether a visit is Email, Paid Search, Organic Social and so on largely by matching your medium against a set of expected values. A medium of email lands in Email; a medium of e-mail or newsletter-email does not, and the traffic falls into Unassigned instead. If traffic you tagged is showing up as Unassigned, medium is the first place to look.

2. GA4 ignores your tags on a self-referral

A link from your own site to your own site is treated as internal traffic, and tagging it does not make GA4 credit a new campaign in the way you might hope. It does start a new session in some configurations, which is worse than doing nothing. Keep campaign parameters on links that arrive from outside.

3. Attribution is not the same as the session dimension

The source and medium on a session describe that visit. GA4's attribution models decide which touchpoint gets credit for a conversion, and that can be a different campaign entirely. A campaign that drove no directly attributed conversions may still have done the work that a later session converted on.

If your campaign is not showing up

In the order worth checking, from most to least common.

You checked too early

Standard GA4 reports are not instant. Realtime shows the traffic straight away, but the acquisition reports can take a day to settle. Check Realtime first before concluding anything is broken.

The parameters were stripped

Open the page in a browser and look at the address bar after landing. Redirects, link wrappers and some email clients rewrite URLs, and a parameter that does not survive the redirect never reaches GA4.

The medium is not one GA4 recognizes

The campaign is recorded correctly but the traffic lands in Unassigned or Referral rather than the channel you expected. The data is there; the grouping is what is off.

You are reading a First user report

User acquisition reports describe how somebody was first acquired. A returning visitor arriving through your new campaign still shows their original source there. Traffic acquisition is the session-level view.

Case does not match

GA4 lowercases some values in some contexts and not others, and the safest assumption is that it is case sensitive throughout. Tag everything lowercase and the question never arises.

Consent or a blocker

If the visitor declined analytics consent or is running a blocker, the pageview may not be collected at all. That is a collection question rather than a tagging one, and it affects every channel equally.

Frequently asked questions

Clean GA4 reports start before the link is sent.

Relay applies your naming template when the link is created, so the medium that has to match your channel grouping is right the first time. Build a URL above, then save it into Relay from the result.

Build a campaign URL

The builder stays free and needs no account. You register only when you save a link into Relay.