utm_id and campaign IDs
utm_id is a campaign-identifier parameter that analytics tools use to join UTM-tagged sessions with imported cost or campaign metadata. It is not a replacement for utm_campaign's human-readable name. This page explains what utm_id does, when to use it, and how it relates to the other parameters.
What utm_id is for
utm_id is the campaign ID parameter. Its purpose is machine joining: an analytics tool can match utm_id against imported campaign cost or metadata to attach spend and other attributes to the tagged sessions. It is a stable key, ideally a number or short code that does not change when you rename the campaign.
utm_campaign remains the human-readable name; utm_id is the identifier the systems join on.
utm_id vs utm_campaign
Keep them distinct. utm_campaign=spring-launch-2026 is what a person reads in a report; utm_id=10482 is what the cost-import join uses. Using a readable name as the join key is fragile, because renaming it breaks the join — that is exactly why utm_id exists as a separate, stable value.
Worked example:
https://example.com/?utm_source=google&utm_medium=cpc&utm_campaign=spring-launch-2026&utm_id=10482
When you actually need it
You need utm_id mainly when importing cost or campaign data keyed by an ID. For purely manual tagging without a cost import, utm_campaign alone is usually enough. Add utm_id when a downstream join requires a stable key, and keep its values managed like any other controlled vocabulary.
How it appears in analytics and logs
A visit carrying utm_id means the session can be joined to a specific campaign record (for cost or metadata import). It complements, not replaces, utm_campaign's descriptive label.
Diagnostic use case
Use utm_id to link tagged traffic to imported ad-cost data by a stable campaign ID, while keeping utm_campaign as the readable name.
What WebmasterID can help detect
WebmasterID records utm_id alongside the other parameters, so a stable campaign ID can travel with the attribution without encoding anything about the visitor.
Common mistakes
- Treating utm_id as a replacement for utm_campaign's readable name.
- Putting a per-user identifier in utm_id.
- Letting utm_id values change when a campaign is renamed, breaking joins.
- Adding utm_id everywhere when no cost-import join needs it.
Privacy and accuracy notes
utm_id holds a campaign identifier, never a user identifier. Do not put any per-person ID in utm_id; it is public in the URL like every UTM value.
Frequently asked questions
- Is utm_id required?
- No. It is optional and mainly useful for joining tagged sessions to imported campaign cost or metadata. For manual tagging without that import, utm_campaign is sufficient.
Related pages
- UTM parameters explained: the five tags and how to use them
UTM parameters are query-string tags you add to a link so analytics can attribute the visit to a campaign even when the referrer is missing. This page explains the five tags, a consistent naming convention, and the hard rule that UTM values are public — so they must never contain personal data or secrets.
- UTM limits for multi-touch attribution
UTM tags are excellent at labelling a click, but a customer journey has many touches and UTM only stamps the ones that pass through tagged links. This page is an honest account of the last-non-direct caveat and the limits of building multi-touch attribution on UTM alone.
- 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.
- Campaign links (docs)
Add a stable utm_id alongside readable campaign names.
Sources and verification notes
- Google Analytics Help — Collect campaign data with custom URLsDocuments utm_id as the campaign ID parameter alongside utm_campaign.
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.