Skip to content
Cover illustration for Dynamic UTM parameters: a standardized tracking guide and generator

Dynamic UTM parameters: a standardized tracking guide and generator

Build a platform-ready dynamic UTM template, learn how to test supported macros, and see why Maven uses utm_mc_id to audit paid-media attribution coverage.

Jamie IsabelBy 12 min read

Dynamic UTM parameters let an advertising platform fill selected tracking fields when a link is used. They reduce repeated tagging work, but the template still needs testing. A macro left unresolved or stripped during a redirect can make the final report harder to explain.

The UTM framework itself is not new. A tested dynamic template can reduce repeated tagging work while keeping controlled values consistent. Platform IDs can provide useful join keys when supported, captured, and retained downstream.

What are UTM parameters?

UTM parameters are labels added to a destination URL so analytics and attribution systems can identify where a visit came from. Google Analytics supports the familiar source, medium, campaign, content, and term fields. Parameter values are case-sensitive, which is why one documented standard matters.

  • utm_source identifies the platform or referrer, such as google, meta, or linkedin.
  • utm_medium identifies the channel, such as cpc, paid_social, or programmatic.
  • utm_campaign identifies the campaign.
  • utm_content distinguishes the ad, creative, or audience grouping.
  • utm_term carries a keyword or another governed secondary label when appropriate.

Source, medium, and campaign create the readable baseline. Content and term add detail when the channel supports them and your reporting plan defines what those fields mean. For the full naming system, use Maven's complete UTM parameters guide.

What makes a UTM parameter dynamic?

A dynamic value contains a provider macro. The advertising platform replaces that placeholder with the real campaign value when the ad is served or clicked.

static value vs dynamic macro
utm_campaign=summer_savings
utm_campaign={{campaign.name}}

Meta commonly uses double curly brackets, while Google Ads uses ValueTrack parameters such as {campaignid} and {adgroupid}. TikTok documents double-underscore macros, including different options for upgraded Smart+ campaigns.

LinkedIn, Pinterest, Microsoft, Snapchat, and StackAdapt each document their own supported syntax. Do not copy a macro from one provider into another without checking its current documentation.

Static vs. dynamic UTM parameters

AreaStatic UTMsDynamic UTMs
How values are addedA person types or copies each valueThe ad platform resolves a supported macro
Best useControlled taxonomy that should not driftCampaign, ad, creative, keyword, placement, and IDs
Primary riskTypos, casing differences, stale names, missing fieldsUnsupported macros or an untested template
ScaleMore upkeep with every campaign and adOne governed template can cover many entities
Reporting joinsUsually depends on editable namesCan pair readable names with durable platform IDs
We recommend a hybrid: static governance fields plus dynamic campaign detail.

Which fields should be static or dynamic?

The strongest standard is usually hybrid. Keep the values that define your channel taxonomy controlled, then let the provider populate readable values that change from one campaign entity to the next. Keep raw platform IDs out of the standard UTM fields: reserve them for utm_mc_id.

ParameterMaven recommendationReason
utm_sourceUsually staticKeeps the platform name consistent across accounts
utm_mediumUsually staticProtects channel grouping from naming drift
utm_campaignDescriptive dynamic value when supportedIdentifies the campaign in a form people can read
utm_contentDescriptive dynamic value when supportedCarries a readable ad, creative, or grouping label
utm_termDynamic when supportedAdds keyword or governed secondary context
utm_mc_idDynamicPreserves the provider hierarchy as durable IDs

Dynamic UTM macros by ad platform

Macro names differ by provider and sometimes by campaign type. Use this table as a starting point, then confirm each value in the platform's current documentation before you build a template.

PlatformWhere to set itUseful macrosNotes
Google AdsTracking template or Final URL suffix{campaignid}, {adgroupid}, {creative}, {keyword}, {matchtype}, {network}, {device}, {lpurl} (lpurl in tracking templates)Auto-tagging adds gclid; keep it on. For the GA4-linked exception, see the callout above.
Microsoft AdvertisingTracking template or Final URL suffixUse tokens currently listed in Microsoft Advertising HelpAuto-tagging may add msclkid. Confirm current token names and availability in Microsoft’s URL tracking parameters help page.
MetaURL parameters field at the ad levelUse macros in Meta’s current supported-parameters listConfirm available macros for the ad type in Meta’s current help page; keep IDs in utm_mc_id.
Performance MaxAsset group URL options or another level supported in current Google Ads settings{campaignid} is supportedGoogle notes that unavailable ValueTrack values can be blank. Keyword values may be blank when no keyword triggers the ad; verify support for the campaign type.
ChatGPT / OpenAI ads and other new ad surfacesCheck the platform’s current ad-setup documentationDo not assume macro supportIf the platform does not document dynamic macros, use static UTMs per campaign and put the campaign ID in utm_id.
Verify every macro against the platform’s current documentation before launch; supported lists change.

Why Maven standardizes on utm_mc_id

Readable UTMs are useful in GA4, CRM exports, Piwik, Looker, spreadsheets, and everyday QA. But names are weak database keys: they can be edited, reused, misspelled, or reformatted. Maven therefore adds a second layer, utm_mc_id, that carries the available provider IDs in a structured sequence.

Maven campaign hierarchy identifier
utm_mc_id=cm-{campaign}-ag-{ad_group}-ad-{ad}-cr-{creative}-pl-{placement}

The component prefixes have consistent meanings across providers:

  • cm campaign ID; ag ad group or ad set ID.
  • ad ad ID; cr creative ID.
  • pl placement; ss site or publisher source.
  • kw keyword; nw network; sz ad size or format.

How dynamic UTM tracking works

  1. Define the taxonomy. Approve the exact source, medium, campaign, content, and term conventions.
  2. Choose the platform template. Use only macros supported by that provider and campaign type.
  3. Apply it at the safest reusable level. That may be the account, campaign, ad group, or ad.
  4. Test the resolved click. Confirm macros populate and the landing page keeps every required parameter.
  5. Join context to outcomes. Preserve the captured IDs so reporting can connect media entities to leads, orders, revenue, and other business results.
A tagging press turns blank patterned campaign tags into link tokens that travel through a redirect to a browser.

Where dynamic UTMs can help

They reduce repetitive manual tagging

A governed template replaces repeated copy-and-paste work. Platform-populated values reduce missing fields, casing differences, and stale campaign details.

They standardize reporting across accounts

Controlled source and medium values protect channel reporting outside Google Ads. Dynamic campaign and ad detail prevents every media buyer from inventing a slightly different convention.

They capture useful detail with little additional effort

Once a template is in place, supported campaign, ad group, ad, creative, keyword, placement, publisher, and network context can flow into the landing URL automatically.

They create stronger joins than names alone

Provider IDs identify the underlying entity even after someone renames a campaign. That makes them a more dependable bridge between the click, the ad-platform hierarchy, and downstream conversion records.

They make granular creative reporting possible

When the measurement stack preserves these identifiers, Maven can associate available spend and outcomes with the matching campaign, audience group, ad, or creative in marketing attribution reporting.

How Maven audits UTM coverage

The generator creates the intended template. Maven's app checks whether that standard is actually present on live, spend-bearing media entities. Coverage and recommendations are deliberately separated:

  • Coverage pass: a parseable utm_mc_id contains the required hierarchy components for the provider.
  • Coverage warning: utm_mc_id is malformed, conflicting, or missing an expected component.
  • Coverage failure: utm_mc_id is absent, even if readable UTMs or a provider click ID are present.
  • Quality recommendation: readable UTMs are incomplete while the canonical ID remains valid.

That distinction keeps the score honest. Readable values improve compatibility and troubleshooting, but they do not substitute for Maven's attribution key. Likewise, gclid, fbclid, msclkid, and ttclid remain valuable provider identifiers without replacing utm_mc_id.

The current Maven templates also capture additional supported detail where it is available, including network for Google and Microsoft Ads and the separate ad bundle plus creative asset for TikTok Smart+. Maven recognizes those components as richer hierarchy detail without retroactively failing an otherwise valid historical link.

Keep UTMs from disappearing

Campaign parameters are only useful if they survive the trip to the form, checkout, or CRM record. Four common failure points drop them before anyone can read them:

  • Redirects and URL rewrites that rebuild the destination without its query string.
  • Link shorteners and tracked redirect domains that strip parameters.
  • Single-page app routing that changes the URL before the tag reads the original values.
  • Consent banners that delay the tag, so the parameters are not captured on the first page view.

Capture UTMs on the first landing page, store first-touch and last-touch values in first-party storage, and write them into hidden form fields so the CRM keeps them with the lead. Confirm each path with the tracking QA checklist before launch.

Dynamic UTM best practices

  1. Document one lowercase source and medium taxonomy and use the same separators everywhere.
  2. Put the template at the highest safe level, then audit lower-level overrides.
  3. Use descriptive labels in the standard UTM fields and IDs only in utm_mc_id for attribution joins.
  4. Keep provider auto-tagging and click IDs enabled.
  5. Test a live or provider-supported test click; preview screens do not always resolve macros.
  6. Preserve campaign parameters through redirects, forms, cross-domain journeys, CRM records, and checkout.
  7. Audit older ads that still spend or drive leads, not only new duplicates.
  8. Never place names, email addresses, phone numbers, account numbers, or other personal data in a URL.

What dynamic UTMs do not replace

Dynamic UTM parameters improve the campaign context entering a measurement system. They are not a complete attribution system by themselves.

  • provider auto-tagging and click IDs
  • platform pixels, conversion APIs, or server-side event collection
  • first-party storage of landing-page parameters
  • cross-domain, form, CRM, checkout, and consent-aware attribution design
  • launch QA and ongoing data-quality monitoring

Use these parts together. Dynamic UTMs explain and identify the media context; the rest of the measurement stack preserves that context and connects it to outcomes.

Turn a tracking template into trusted reporting

Dynamic UTM tracking is an operational upgrade to the framework marketers have used for years. It reduces manual error, captures more campaign detail, and gives downstream reporting a clearer connection between the ad someone clicked and the business result that followed.

Use the generator above to create the standard. Then book a tracking audit to check your coverage and connect paid media to business outcomes.

Frequently asked questions

What are dynamic UTM parameters?

Dynamic UTM parameters use advertising-platform macros that are replaced with campaign, ad group, ad, creative, keyword, placement, or network values when an ad is served or clicked. They automate campaign tagging while preserving the familiar UTM fields used by analytics tools.

Are dynamic UTMs better than static UTMs?

Dynamic values can fill fields that vary by campaign or ad when the provider supports the macro. Keep controlled taxonomy fields such as utm_source and utm_medium consistent, and test the resolved destination URL before relying on it.

Do dynamic UTMs work with GA4?

GA4 can read campaign parameters present in the landing-page URL. Confirm that the advertising platform resolves the macros and that redirects preserve the final parameter values.

Do dynamic UTMs replace gclid, fbclid, or other click IDs?

Usually no: keep provider auto-tagging enabled alongside readable UTMs and Maven’s utm_mc_id. Google Ads is the exception when it is linked to GA4 with auto-tagging enabled: gclid supplies Google Ads reporting, so Maven’s Google template uses only utm_mc_id.

What is utm_mc_id?

utm_mc_id is Maven’s canonical structured campaign hierarchy identifier. It carries the platform IDs available for a click, such as campaign, ad group or ad set, ad, creative, placement, publisher, keyword, network, or ad size.

How does Maven audit UTM coverage?

Maven checks live, spend-bearing paid-media entities for a present, parseable utm_mc_id with the required components for that platform. Missing readable UTMs are shown as quality recommendations; click IDs alone do not pass Maven attribution coverage.

What are the Meta dynamic URL parameters?

Meta provides a URL parameters field for ad-level tracking. Macro names and availability depend on Meta’s current supported-parameters list and ad type, so verify each value in the current documentation before launch.

Do dynamic UTMs work with Performance Max?

Partly. Campaign-level macros such as {campaignid} can populate, but keyword and ad group values are not meaningful for Performance Max, which runs on asset groups rather than keyword-driven ad groups. Expect some ValueTrack values to be empty, and rely on the campaign-level template and utm_mc_id for campaign context.

Sources and references

Updated October 16, 2026

Find what your tracking misses in about 10 seconds.

Run a Free Tracking Scan on your site and see every gap we find.