UTM Builder for Google Analytics 4
Build tagged campaign links and see which GA4 default channel each one lands in before you publish it. Tag one link, or many pages for many sources at once.
Empty uses the source and medium fields. Presets add a line here.
Tagged URL
Tagged links
| # | Source / medium | Tagged URL | Copy |
|---|
What each UTM parameter does
UTM tags are query parameters that tell Google Analytics where a visit came from when the browser cannot tell it on its own: a link in an email app, a QR code, a WhatsApp message, a paid social ad. GA4 reads five of them into its traffic source dimensions, and a sixth, utm_id, is used to join cost data imports.
| Parameter | GA4 dimension | Example |
|---|---|---|
utm_source | Session source | google, facebook, newsletter |
utm_medium | Session medium | cpc, paid_social, email |
utm_campaign | Session campaign | spring_sale_2026 |
utm_term | Session manual term | running shoes |
utm_content | Session manual ad content | video_a, footer_link |
utm_id | Session campaign ID | cmp_0412 |
Source and medium carry the weight. Source is the place, medium is the type of traffic, and together they decide the channel. Campaign groups the work you did. Content is the one most people skip and later wish they had: it tells two links in the same email or two ad versions apart.
How GA4 sorts tagged traffic into channels
GA4's default channel group runs through a fixed list of rules from top to bottom and stops at the first match. For traffic you tag yourself, Google documents these rules, in this order:
| Channel | Rule |
|---|---|
| Direct | Source is (direct) and medium is (not set) or (none) |
| Cross-network | Campaign name contains cross-network |
| Paid Shopping | Source is a shopping site, or campaign name matches shop or shopping, and medium is paid |
| Paid Search | Source is a search site and medium is paid |
| Paid Social | Source is a social site and medium is paid |
| Paid Video | Source is a video site and medium is paid |
| Display | Medium is display, banner, expandable, interstitial or cpm |
| Paid Other | Medium is paid, with any other source |
| Organic Shopping, Social, Video, Search | Source is on the matching site list, or medium is social, social-network, social-media or sm (Social), contains video (Video), or is organic (Search) |
| AI Assistant | Medium is ai-assistant |
| Referral | Medium is referral, app or link |
| Source or medium is email, e-mail, e_mail or e mail | |
| Affiliates, Audio, SMS | Medium is affiliate; medium is audio; source or medium is sms |
| Mobile Push Notifications | Medium ends in push or contains mobile or notification, or source is firebase |
"Medium is paid" means the medium matches the regular expression ^(.*cp.*|ppc|retargeting|paid.*)$: cpc, cpm, ppc, retargeting, or anything that starts with paid. The site lists are long spreadsheets Google publishes and updates. This tool checks the common names from them, such as google, bing, facebook, instagram, tiktok, linkedin and youtube, and shows the rule that matched next to the channel.
Why lowercase matters
Google says the channel rules themselves are not case sensitive, so Facebook with paid_social still lands in Paid Social. The source and medium values in your reports are a different story. GA4 stores exactly what you send, so Facebook, facebook and FaceBook show up as three rows in the Traffic acquisition report and in every exploration. Spaces cause the same mess, because one person types spring sale and another spring-sale. Pick lowercase with hyphens or underscores and keep it in a shared sheet. The checks above flag both, and the fix button cleans the values in one click.
Naming conventions that keep reports readable
- Use the platform name for source:
facebook, notfb_ads_sept. Dates and versions belong in campaign or content. - Use mediums GA4 recognises.
paid_sociallands in Paid Social;social_paiddoes not start with paid, so with source facebook it lands in Organic Social. - Keep the word shop out of campaign names unless it is shopping traffic. A paid campaign called
workshop_promois safe, buteshop_launchorshop_weekis counted as Paid Shopping. - Tag only links that point to your site from outside it. A UTM on an internal link starts a new session and overwrites the real source.
- Google Ads with auto-tagging does not need UTM tags. The gclid carries richer data than UTM tags can.
Bulk mode for campaign launches
Launches usually mean the same handful of pages shared in many places. Paste the page URLs in Bulk mode, add one line per channel (facebook, paid_social, instagram, social, bio_link, newsletter, email), and set the campaign once. Every page is combined with every line, each row shows its GA4 channel, and the CSV download gives your team one sheet to copy links from. The CSV opens directly in Excel and Google Sheets.
Shortening tagged links
A tagged URL is long but it works anywhere a link works. Shorten it only where people have to read or type it: print, a spoken link, an SMS, a social profile. Shorten the final tagged URL, not the clean page URL, so the tags survive the redirect, and test it once in GA4's Realtime report before the campaign goes out.