Campaign ID dimension: the machine key for campaigns
Campaign ID is the dimension fed by the utm_id parameter (and by ad-platform IDs on auto-tagged traffic). Unlike the human-readable campaign name, the ID is a stable machine key meant to survive renames and to join analytics with ad-platform cost data. GA4 uses it to reconcile manual tags with imported campaign metadata, which makes it the durable join key for cross-system reporting.
What this means
Campaign names change — a team renames 'Spring Sale' to 'Spring Promo' mid-flight and the historical data fragments. Campaign ID solves this: utm_id carries a stable identifier that GA4 maps to the Campaign ID dimension, independent of the display name.
On auto-tagged paid traffic, the ad platform supplies its own campaign ID, which analytics resolves automatically.
Why it matters for cost joins
To report return on ad spend, analytics must join click and conversion data to the cost data exported from ad platforms. Names are unreliable join keys; IDs are not. GA4's data-import and campaign reconciliation rely on a consistent campaign ID to attach imported cost to sessions.
The failure mode is sloppy tagging: omit utm_id and you fall back to fragile name matching; reuse one id across distinct campaigns and they merge.
- Fed by utm_id (manual) or ad-platform ID (auto-tagged)
- Stable across campaign renames
- Primary join key for cost and ROAS reporting
How it appears in analytics and logs
A campaign ID value is a durable identifier for a campaign. A missing or inconsistent utm_id means analytics cannot reliably join to cost data; duplicate IDs across campaigns collapse them in joined reports.
Diagnostic use case
Use campaign ID as the stable join key between analytics and ad-cost data, so reporting survives the inevitable campaign renames.
What WebmasterID can help detect
WebmasterID parses utm_id alongside the campaign name, so the stable ID is available as a join key for cost reconciliation without any cross-site identity.
Common mistakes
- Omitting utm_id and relying on name matching for cost joins.
- Reusing one campaign ID across different campaigns.
- Confusing the campaign ID with the human campaign name.
Privacy and accuracy notes
Campaign ID identifies a campaign, not a person. As long as the ID is not a per-user token, it carries no personal data; WebmasterID reads utm_id first-party.
Related pages
- Campaign dimension
The campaign dimension labels a visit with the marketing campaign that drove it. It is populated from the utm_campaign parameter on a tagged link, or auto-tagged by an ad platform's own click ID. Any visit without a campaign tag — most organic, direct, and untagged referral traffic — shows '(not set)', which is the absence of a campaign rather than a campaign named '(not set)'.
- Ad content dimension: distinguishing creative variants
Ad content is the dimension fed by the utm_content parameter. Its job is to differentiate links or ad creatives that share the same source, medium, and campaign — for example two buttons in one email or two banner variants in one campaign. It does not affect channel attribution; it is purely a label for distinguishing creative or placement, which makes it ideal for A/B and link-position analysis.
- 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.
- Campaign links
Attach a stable utm_id so cost joins survive renames.
Sources and verification notes
- Google Analytics Help — [GA4] URL builders / utm parametersDocuments utm_id as the campaign identifier parameter.
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.