UTM for localized and multi-region campaigns
Campaigns that run in multiple languages or regions need a UTM structure that lets you compare both the campaign overall and each locale within it. The choice is where locale lives — folded into utm_campaign, split into utm_content, or carried in a dedicated convention. This page covers structuring localized UTMs so cross-locale comparison stays clean and rollups still work.
Where to put the locale
Three common patterns: keep one utm_campaign and put the locale in utm_content (campaign rolls up, content splits by locale); fold the locale into utm_campaign itself (spring-sale-de) so each locale is its own campaign; or use the regional structure your org already documents.
The content-split pattern usually keeps rollups cleanest, because the campaign name stays identical across locales while utm_content carries en, de, fr, and so on.
- Locale in utm_content → campaign rolls up, content splits
- Locale in utm_campaign → each locale is a separate campaign
- Use one fixed locale vocabulary (e.g. ISO codes)
Why a fixed vocabulary matters
Pick one locale notation and never deviate — for example BCP 47 codes like en-US, de-DE. Mixing english, en, and EN fragments every report. Because there is no single vendor standard for where locale belongs in UTMs, this is a convention you document, which is why it is marked not yet verified against a primary source.
Write the chosen pattern into your governance doc so every region tags links the same way.
How it appears in analytics and logs
A consistent locale token in your UTMs lets you filter a campaign to one region or aggregate all regions. If locales are encoded ad hoc (en-US in one link, english in another), the rollup breaks and per-locale comparison becomes unreliable.
Diagnostic use case
Tag a campaign that runs across languages or regions so you can both roll up the whole campaign and break it down by locale, without fragmenting the report.
What WebmasterID can help detect
WebmasterID records the full UTM including any locale convention server-side, so localized campaign breakdowns are available without inferring location from the visitor — the locale comes from the link you set.
Common mistakes
- Encoding locale inconsistently (en vs english vs EN) across links.
- Folding locale into utm_campaign when you still want a single rollup.
- Inferring locale from visitor IP instead of setting it on the link.
- Skipping a governance entry, so each regional team invents its own scheme.
Privacy and accuracy notes
A locale token describes the campaign's target region or language, not the individual visitor's location. It is a coarse campaign label, never a precise user location, and adds no personal data.
Related pages
- utm_content vs utm_term: when to use each
The two optional UTM tags get muddled constantly. utm_content distinguishes creatives or links for A/B comparison; utm_term carries the paid-search keyword. This page draws a clean line between them so each does its job and your reports stay legible.
- UTM governance and templates
UTM data degrades when everyone builds links by hand. This page covers the governance that prevents it: a shared builder or spreadsheet, documented allow-lists for source and medium, and a review step so new values are deliberate rather than ad-hoc.
- UTM casing and consistency
Casing is the single most common UTM data bug. Because tools match values as exact strings, utm_source=Reddit and reddit are two separate rows, so one campaign quietly fragments. This page makes the lowercase rule concrete and shows how to deepen it into real consistency.
- Campaign links docs
Encode locale consistently across multi-region campaigns.
Sources and verification notes
- IETF — BCP 47 language tagsStandard locale notation to reuse as a fixed UTM vocabulary.
- Google Analytics Help — Collect campaign data with custom URLsUTM parameter reference the localization convention sits on top of.
Last reviewed 2026-06-24. Facts are checked against primary/official sources where available; uncertain specifics are marked “Data not yet verified” rather than guessed.