UTM campaign URL builder
How the UTM builder works
UTM parameters are five tags Google Analytics reads to tell you exactly which campaign, channel and creative sent each visitor. This tool URL-encodes your inputs and appends them as a query string. If your page already has a query string, it appends with an ampersand instead of a question mark. Source, medium and campaign are required by convention; term and content are optional. Keeping everything lowercase matters because “Email” and “email” register as two different sources in your reports.
Frequently asked questions
The UTM parameters, with examples
| Parameter | Required? | What it answers | Email example |
|---|---|---|---|
utm_source | Yes | Which list, newsletter or sender sent the visit | weekly-newsletter |
utm_medium | Yes | The channel type — this decides the GA4 channel | email |
utm_campaign | Yes | Which campaign or flow | 2026-11-newsletter |
utm_content | No | Which link or button inside the email | hero-cta |
utm_term | No | Paid keyword (mostly for search ads) | — |
utm_id | No | A campaign ID, if your platform gives you one | cmp-1042 |
Google recommends always setting source, medium and campaign; any that are missing show up as (not set) in GA4 (Google Analytics help).
How GA4 decides a visit came from email
GA4’s default channel grouping puts a visit in the Email channel only when the source or medium exactly matches email, e-mail, e_mail or e mail (GA4 default channel group). That is the single most common email-tracking mistake: a medium like newsletter, em, mail or your ESP’s name matches no rule, so the visit lands in Unassigned.
| utm_medium you use | GA4 channel |
|---|---|
email (or e-mail, e_mail) | |
Email (capitalised) | Email — but a separate row in source/medium reports |
newsletter, em, mail, klaviyo | Unassigned |
| No UTMs at all | Usually Direct (most mail apps send no referrer) |
Why UTMs matter more for email now
- Open rates are no longer reliable. Litmus data for September 2026 puts Apple at 76.56% of tracked email opens, and Litmus estimates Apple Mail Privacy Protection affects roughly 55–60% of all opens, inflating open counts (Litmus). Clicks tagged with UTMs and measured in GA4 are the metric that still holds up.
- Untagged clicks look like Direct traffic. Google lists untagged links, redirects and URL shorteners among the causes of lost source data (Google Analytics help). Without UTMs, your best newsletter can look like people typed your URL.
- Apple strips click IDs, not UTMs. Link Tracking Protection in iOS 17 removes user-level identifiers such as
gclid,fbclidand Mailchimp’smc_eidin Mail and private Safari; standard UTM parameters are generally preserved (Spam Resource).
A UTM naming convention for email
Lowercase, hyphens, no spaces. Keep utm_medium exactly email so every send lands in GA4’s Email channel, and put the email type in source, campaign or content instead.
| Email type | utm_source | utm_medium | utm_campaign | utm_content |
|---|---|---|---|---|
| Newsletter | weekly-newsletter | email | 2026-11-newsletter | hero-cta |
| Automated flow | welcome-flow | email | welcome-series | email-2-cta |
| Transactional | transactional | email | order-confirmation | track-order-link |
| Re-engagement | winback-flow | email | winback-90d-2026-q4 | offer-15pct |
Example: https://example.com/pricing?utm_source=weekly-newsletter&utm_medium=email&utm_campaign=2026-11-newsletter&utm_content=hero-cta. Need consistent campaign names? Use our campaign name generator.
UTM problems and how to fix them
| Symptom | Likely cause | Fix |
|---|---|---|
| Email traffic shows as Unassigned | Medium is “newsletter”, “em” or similar | Set utm_medium=email |
| Email traffic shows as Direct | Links are untagged, or the ESP’s link tracking is off | Tag every link, or turn on your ESP’s Google Analytics tagging |
| Two rows: “Email” and “email” | Inconsistent capitalisation | Lowercase everything (use the toggle above) and keep a shared naming sheet |
| Campaign shows (not set) | utm_campaign missing | Always fill source, medium and campaign |
| Tagged link errors or 404s | Site rejects unknown query strings, or a trailing space crept in | Send yourself a test and click every link before the real send |
| UTMs disappear on landing | A redirect drops the query string, or goes HTTPS to HTTP | Keep query strings on every redirect; check the final URL in the address bar |
| UTMs ignored | They sit after a # | Put them before the fragment: page?utm_source=x#section |
Duplicate utm_ parameters | ESP auto-tagging on top of manual UTMs | Choose one method per campaign |
| Visits credited to your own site’s campaign | UTMs on internal links or banners | Remove them; track internal clicks with events |
| Tagged URLs indexed in Google | No canonical tag on the page | Add a self-referencing canonical to the clean URL |
More UTM questions
For a newsletter, is “newsletter” the source or the medium?
The source. The medium should be email; the newsletter or list name goes in utm_source.
The UTMs vanish when visitors click to other pages. Does GA4 still know the campaign?
Yes. GA4 records the campaign on the landing page, and the rest of the session keeps it. You do not need UTMs on every page.
Should I tag internal links on my own site?
No. A UTM on an internal link overwrites where the visitor really came from. Use GA4 events to track internal clicks.
Do URL shorteners break UTMs?
Not if you shorten the full tagged URL — the UTMs survive the redirect. Shortening an untagged link loses the source, because shorteners can strip referral details.
My email platform adds UTMs automatically. Should I add my own?
Pick one. Mailchimp warns that combining its auto-tracking with custom UTMs can skew results (Mailchimp help). Klaviyo’s default since June 2025 outputs utm_medium=email, but accounts with older saved settings may use other values — check Settings → UTM tracking (Klaviyo help).
Should I use UTMs on Google Ads links?
Usually not. Google Ads auto-tagging (gclid) passes richer data to GA4. Add manual UTMs only if a non-Google tool needs them (Google Ads help).