Free tool · Zenda

UTM Builder: campaign URL generator

Build tagged links for Google Analytics 4 with all nine UTM parameters explained one by one, and see which GA4 channel the click will land in before you publish it.

// platform presets
required

If it already has parameters or an anchor, we keep them.

required
recommended
recommended
Optional parameters (ID, term, content)
GA4-only parameters (platform, format, tactic)
// formatting
  • All 9 UTM parameters, including the four GA4 added later
  • Predicts the GA4 channel and warns you when a link would land in Unassigned
  • Presets for Meta, Google, TikTok, LinkedIn, email, WhatsApp and QR
  • Runs in your browser, so no link ever leaves your machine

How to read a URL with UTMs

Everything after the question mark is the query string: key/value pairs separated by &. The browser ignores them when loading the page and the analytics tool uses them to classify the visit.

https://zenda.com.ar/paid-media?utm_source=instagram&utm_medium=cpc&utm_campaign=hot-sale-2026&utm_content=video-15s&utm_id=2026-hs-001
  1. utm_sourceWhere the click happened.
  2. utm_mediumThe type of traffic, which defines the GA4 channel.
  3. utm_campaignThe grouping you'll read results under.
  4. utm_contentThe exact asset, to compare creatives.
  5. utm_idThe key that joins imported cost data.

What each UTM parameter means

The classic five come from Urchin, the software Google bought in 2005. GA4 added the other four so it could import cost data and split tactics. Here's what each one does, which value to use, and the mistake people make most often.

utm_source

required

Campaign source

utm_source is the specific site or platform the click came from. It's the only parameter GA4 needs to record the visit as a campaign instead of direct traffic.

Use the name of the place where the click happened, not the company that sells the inventory. Google keeps a list of sources it already recognizes as search, social, video or shopping; a value outside that list can't be classified, so GA4 drops the traffic into a generic channel. That is why facebook and instagram work and meta does not.

Examples
facebookinstagramgooglelinkedinweekly-newsletter
In GA4
GA4 dimension: Session source
Common mistake
Using the holding company name (meta) instead of the site where the click happened (facebook, instagram). GA4 reports it as Paid Other.

utm_medium

recommended

Campaign medium

utm_medium is the type of traffic: paid, email, referral, display or affiliate. It is the parameter that decides which GA4 channel the visit lands in, and the one that breaks reports most often.

GA4 runs the medium through a regular expression before classifying it. Any value starting with paid, containing cp (cpc, cpm, cpv), or equal to ppc or retargeting counts as paid. Plain social lands in Organic Social even if you paid for every one of those clicks, and then spend stops matching the channel.

Examples
cpcemaildisplayaffiliatereferralorganic_social
In GA4
GA4 dimension: Session medium
Common mistake
Using social on a paid campaign. GA4 reports it as organic and the channel ends up with no cost attached.

utm_campaign

recommended

Campaign name

utm_campaign is the name you will read grouped results under: the promo, launch or initiative that several ads belong to.

Pick one written convention and stick to it, such as market-objective-period (ar-leads-q1-2026) or promo-year (hot-sale-2026). GA4 never reprocesses history. Rename a campaign midway and you get two rows for what is really one campaign, with no way to merge them in the UI.

Examples
hot-sale-2026ar-leads-q1-2026app-launch
In GA4
GA4 dimension: Session campaign
Common mistake
In the report, HotSale, hot_sale and Hot Sale 2026 count as three different campaigns.

utm_id

optional

Campaign ID

utm_id is the campaign's unique identifier, and it's the key GA4 uses to join traffic with the cost data you import from non-Google platforms.

If you upload cost, impressions and clicks from Meta, TikTok or LinkedIn into GA4 with Data Import, the join runs on utm_id plus date and the source/medium pair. Without utm_id every platform keeps counting on its own and there is no consolidated ROAS inside GA4.

Examples
2026-hs-001120210000000000
In GA4
GA4 dimension: Manual campaign ID
Common mistake
Reusing the same ID on two campaigns, which splits the imported cost between them.

utm_term

optional

Campaign term

utm_term stores the keyword that triggered the ad. It is meant for paid search, where Google Ads fills it automatically with the {keyword} ValueTrack parameter.

Outside search, many teams repurpose it as a second utm_content to store the ad set or the audience. That's fine, but decide once and write it down. Mixing both conventions in one account makes the report unreadable.

Examples
{keyword}paid-media-agencylookalike-buyers
In GA4
GA4 dimension: Session term
Common mistake
Using it as a free-text field on non-search campaigns with no written rule.

utm_content

optional

Campaign content

utm_content identifies the exact asset that was clicked: the creative, the ad, or the position of a link inside the same email.

This is the A/B testing parameter. Two links to the same destination with different utm_content values tell you which creative or which button drove the conversion, without inflating your campaign count. On Meta, fill it with the {{ad.name}} dynamic parameter so it fills itself in.

Examples
{{ad.name}}video-15s-testimonialcta-header
In GA4
GA4 dimension: Session content
Common mistake
Creating a new campaign per creative instead of separating them here.

utm_source_platform

optionalGA4

Source platform

utm_source_platform declares which tool the media was bought from: Google Ads, Search Ads 360, Display & Video 360 or Manual.

GA4 added it to separate media bought through a Google platform from links you tagged by hand. If all your buying is manual, or you don't use Google's own tools, leaving it empty costs you nothing.

Examples
Google AdsManualDisplay & Video 360
In GA4
GA4 dimension: Source platform
Common mistake
Repeating the utm_source value here. It adds nothing and duplicates a dimension.

utm_creative_format

optionalGA4

Creative format

utm_creative_format describes the asset format: display, native, video, search or social. It's a reporting dimension only and doesn't change channel classification.

It pays off when you compare formats across platforms, such as how video performs against static with Meta, TikTok and YouTube in one view.

Examples
videodisplaynativesearch
In GA4
GA4 dimension: Creative format
Common mistake
Inventing values per campaign. It only works with a closed vocabulary shared by everyone.

utm_marketing_tactic

optionalGA4

Marketing tactic

utm_marketing_tactic separates the audience objective: prospecting for new acquisition, remarketing to bring back people who already know you.

It's how you split prospecting from remarketing without relying on the campaign name to say so. If you measure incremental CAC, without this parameter you depend on every campaign spelling the tactic out in its name.

Examples
prospectingremarketing
In GA4
GA4 dimension: Marketing tactic
Common mistake
Mixing tactics inside one campaign and tagging them all the same.

How GA4 turns your UTMs into channels

GA4 evaluates your utm_medium against an ordered list of rules and the first match defines the channel. That is how a paid campaign ends up reported as organic.

utm_mediumutm_sourceGA4 channelWhat to watch
— (no parameters)DirectWith no parameters there is no campaign, so the visit stays direct.
cpc, ppc, paid*google, bing, yahoo…Paid SearchThe source must be on Google's list of search engines.
cpc, paid_social, retargetingfacebook, instagram, linkedin, tiktok…Paid SocialThe most common case. meta is not on the list; facebook is.
cpc, paid*a source Google does not recognizePaid OtherGA4 knows you paid, but not through which channel. Almost always a badly chosen utm_source.
display, banner, cpm, interstitialanyDisplayThe medium is enough on its own, whatever the source.
email, e-mail, e_mailanyEmailIt also classifies when utm_source is exactly email.
affiliateanyAffiliatesThe medium for influencers and commissioned referral programs.
social, social-media, smanyOrganic SocialA paid campaign tagged social gets reported as organic.
organicanyOrganic SearchTagging organic traffic by hand breaks real attribution.
referral, app, linkanyReferralFor links on third-party sites that are not paid placements.
smssmsSMSA match on either the medium or the source is enough.
*push, *notificationfirebaseMobile PushApp push. Any medium containing mobile also qualifies.
*anyUnassignedGA4 could not classify it. It's the first row to check in an audit.

Rules are evaluated in order and the first match wins. If none match, GA4 uses Unassigned. You can change this classification with custom channel groups, but they don't apply retroactively beyond the last few months.

What to use on each platform

Each platform needs its own source/medium pair, and most of them resolve dynamic parameters that save you from tagging ad by ad.

Platformutm_sourceutm_mediumDynamic parameters
Meta Ads{{site_source_name}}cpc{{campaign.name}}, {{adset.name}}, {{ad.name}}, {{campaign.id}}, {{placement}}
Google AdsgooglecpcValueTrack: {campaignid}, {adgroupid}, {keyword}, {creative}, {network}. Not needed with auto-tagging.
TikTok Adstiktokcpc__CAMPAIGN_NAME__, __AID_NAME__, __CID_NAME__, __PLACEMENT__
LinkedIn AdslinkedincpcNone: entered by hand per creative.
Microsoft Adsbingcpc{CampaignId}, {AdId}, {keyword}, {MatchType}
Display & Video 360dv360display${CAMPAIGN_ID}, ${CREATIVE_ID}, ${SITE_NAME}
Customer.io / Braze / MailchimpcustomerioemailThe tool's own Liquid or handlebars tags for the send name.
WhatsAppwhatsappreferralNone: a fixed link per asset or per agent.

The six mistakes that break a report

None of these throws an error on click; the link works fine. The problem shows up weeks later, when the report does not reconcile with what you spent.

  1. Tagging internal links

    A UTM on a link inside your own site tells GA4 a new campaign started, so it cuts the session and overwrites the source. The conversion ends up credited to the internal banner instead of the ad that brought the person in. Internal links are measured with a click event and custom parameters.

  2. Mixing upper and lower case

    GA4 keeps values exactly as they arrive, so Email, email and EMAIL are three separate rows in the same report. The channel rules are case-insensitive, so the channel comes out right while the detail stays split across duplicate rows. Write everything lowercase.

  3. Putting personal data in a parameter

    An email address, a phone number or an ID inside a UTM enters Google Analytics as identifiable data. It breaches the terms of service and entitles Google to delete the property data. If you need to identify the person, use User-ID, which exists for that.

  4. UTMs on Google Ads with auto-tagging

    With auto-tagging on, every click arrives with a gclid and GA4 prefers it. The UTMs you added are ignored unless you explicitly enable the manual tagging override in the property. Pick one of the two and write down which one.

  5. Putting parameters after the #

    Everything after a hash is a fragment and never reaches the server or the query string. UTMs must come first, as in /page?utm_source=...#section. This builder reorders it for you when the URL already carries an anchor.

  6. Having no written convention

    The first link always comes out right. The one that breaks the report is the twelfth, built by someone else three months later. A shared table with the allowed utm_source and utm_medium values, plus the campaign-name format, prevents almost every mistake on this list.

Frequently asked questions about UTM parameters

  • What is a UTM parameter?

    A UTM parameter is a tag added to the end of a URL to tell your analytics tool where a visit came from. There are five classic parameters (utm_source, utm_medium, utm_campaign, utm_term, utm_content) plus four that GA4 added (utm_id, utm_source_platform, utm_creative_format, utm_marketing_tactic). The acronym comes from Urchin Tracking Module, the software Google bought in 2005 that became Google Analytics.

  • Which ones are required?

    Only utm_source is strictly required, because without it GA4 won't record the visit as a campaign. In practice you need three, because utm_medium defines the channel and utm_campaign is the grouping you will read results by. The other six are optional; add them depending on how you want to slice the data later.

  • Hyphen or underscore in values?

    GA4 doesn't care; neither breaks anything. The real rule is to pick one and never mix. The most common convention uses hyphens inside each value (hot-sale-2026) and underscores only for standard mediums that already carry one, such as organic_social.

  • Do UTMs affect SEO?

    They don't hurt rankings as long as the page has a canonical pointing to the clean URL, which is the default on any well-built site. The risk shows up when tagged URLs become crawlable: tagged internal links, sitemaps with parameters, or UTM URLs published on other sites. Rule of thumb: UTMs only on links coming from outside, never in internal navigation or the sitemap.

  • Are UTMs useful for measuring Meta Ads?

    Yes, and they are essential. GA4 doesn't read Meta's fbclid for attribution, so without UTMs all your paid Meta traffic lands in Organic Social or Referral. The right move is to set the dynamic parameters ({{campaign.name}}, {{ad.name}}) at account level so every new ad ships tagged.

  • Why does my traffic show up as Unassigned?

    Unassigned means GA4 received a source/medium pair that matches no channel rule. The three usual causes are an invented utm_medium (offline, qr, whatsapp), a utm_source with no medium, and Google Ads campaigns without the property link configured. The channel predictor in this builder shows you the outcome before you publish the link.

  • How long does GA4 take to show a new campaign?

    It shows up in the realtime report within minutes; in standard reports, within 24 to 48 hours. If the campaign is still missing after 48 hours, check that the published link is the tagged one and that no redirect is dropping the query string.

  • Do UTMs work with tools other than GA4?

    Yes. UTMs are ordinary URL parameters, so any tool that sees inbound traffic can read them: Adobe Analytics, Amplitude, Mixpanel, Matomo, a CDP such as Customer.io or Segment, and your own backend. Capture them on the lead's first touch, which is the only moment they exist.

Measurement that reconciles with what you spend

You can fix a badly tagged link right here. A report that doesn't reconcile with your spend usually comes from several places at once. At Zenda the same team runs martech and paid media; get in touch if you want us to look at your case.