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 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.
| Parameter | GA4 dimension | Where you find it |
|---|---|---|
| utm_source | Session source, First user source | Traffic acquisition and User acquisition reports, and as a dimension in Explorations |
| utm_medium | Session medium, First user medium | The same reports. Combined with source, this is what feeds the default channel grouping |
| utm_campaign | Session campaign, First user campaign | Traffic acquisition, and the campaign dimension in any Exploration |
| utm_content | Session manual ad content | Not in the standard reports. Add it as a dimension in an Exploration, or a secondary dimension |
| utm_term | Session manual term | Same: 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
More on campaign links
The builder explained for other questions, and what TagPipes Relay adds once the tagging has to stay consistent across a team.
- UTM BuilderBuild one tagged campaign URL. Free, no signup, nothing leaves your browser.
- Campaign URL BuilderThe same builder, with the naming decisions spelled out before you tag.
- UTM Campaign ManagerFrom building single URLs to managing a campaign's links in one place.
- Campaign Link ManagerFind, reuse and keep track of the links a campaign is already using.
- UTM GovernanceAn agreed naming template, enforced when the link is created.
- Agency UTM ManagementMany clients, many properties, one taxonomy per client.
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 URLThe builder stays free and needs no account. You register only when you save a link into Relay.