Google Ads UTM Builder
Build UTM-tagged URLs for Google Ads with the source and medium GA4 expects (google / cpc), see the GA4 channel the URL will land in, and read why auto-tagging usually makes manual UTMs unnecessary — and when they still are.
Checks
- OKReports as Paid Search in GA4's default channel group.
- InfoSource google with a paid medium: Google Ads auto-tagging (gclid) overrides these values in GA4 unless manual tagging override is enabled in the property.
Everything runs in your browser; nothing you type is sent anywhere. The channel prediction follows Google's published GA4 rules and is an estimate — your property's custom channel groups can differ.
UTM Builder on Google Ads
Google Ads and GA4 are linked by auto-tagging: the gclid parameter Google appends to every click carries campaign, ad group, keyword and creative into GA4 without any UTM. If the two accounts are linked and auto-tagging is on (it is by default), a manual utm_source=google&utm_medium=cpc adds nothing GA4 does not already know — and, because manual tags take precedence over gclid in GA4's default setting, a typo in them will overwrite the richer auto-tagged data. That is the first thing to check before tagging a Google Ads URL at all.
Manual UTMs on Google Ads still matter in three cases: any analytics tool other than GA4 (Matomo, Piwik PRO, a data warehouse fed by server-side tracking) that does not read gclid; landing pages where a redirect or a consent gate strips the gclid; and utm_id / utm_content used for your own naming scheme across channels. In those cases use google / cpc exactly — GA4's Paid Search channel matches medium cpc (also ppc, paidsearch), and any other spelling drops the traffic into Unassigned. Use the final URL suffix in Google Ads ({lpurl} plus your parameters) rather than pasting a tagged URL as the final URL, so the ad's tracking template stays intact.
How it works
1. Take the landing page URL; keep its existing query parameters and #fragment, add https:// when the scheme is missing 2. Normalise each UTM value: trim, lower-case (GA4 is case-sensitive), replace spaces with _ or - or %20, URL-encode the rest 3. Append utm_source, utm_medium, utm_campaign, utm_id, utm_term and utm_content in that order; replace utm_ parameters already on the URL unless told to keep them 4. Predict the GA4 default channel group by running the source, medium and campaign name through Google's published rules in Google's order: Direct → Cross-network → AI Assistant → Paid Shopping → Paid Search → Paid Social → Paid Video → Display → Paid Other → Organic Shopping → Organic Social → Organic Video → Organic Search → Email → Affiliates → Referral → Audio → SMS → Mobile Push → Unassigned 5. Report checks: missing source or medium, medium that matches no channel rule, upper-case or spaces that were changed, http:// scheme, Google Ads auto-tagging precedence, URLs over 2,000 characters 6. Bulk mode: one campaign per line (optionally campaign | content | term) with a shared source, medium and ID → a table of URLs with their channel, downloadable as CSV or Excel
About UTM parameters and how GA4 reads them
UTM parameters are five (in GA4, six) query-string keys that tell an analytics tool where a visit came from: utm_source names the platform or sender, utm_medium names the channel, utm_campaign names the effort, and utm_content, utm_term and utm_id add detail. Nothing about them is technical — they are plain text appended to a link — which is exactly why they go wrong: a capital letter, a space or a medium spelled three ways splits one campaign into several rows, and a medium GA4 does not recognise sends the whole campaign into the Unassigned channel.
GA4 assigns every session to a default channel group by testing source, medium and campaign name against a fixed list of rules, in a fixed order. The rules are public: a medium matching cpc, ppc, paid or retargeting counts as paid; the source then decides whether that is Paid Search, Paid Social, Paid Shopping or Paid Video, based on Google's lists of search engines, social networks, shopping sites and video platforms. Email needs a source or medium of email; social posts need social; anything else that matches nothing is Unassigned. This builder runs the same rules on what you type and tells you the channel before the campaign ships — the mistake is cheap to fix here and expensive to fix in a report.
The matching is case-sensitive and exact. utm_medium=Email is not email, so it misses the Email rule and lands in Unassigned; utm_medium=e-newsletter misses it too, because the rule accepts only email, e-mail, e_mail or e mail. A paid medium has to start with paid, contain cp, or be exactly ppc or retargeting — paid_social and paid-social both work, social_paid does not. The builder lower-cases everything by default and replaces spaces, and it says so in the checks, so a team can agree on one convention and see it enforced. Turn lower-casing off only if you have a reason, and expect the warning.
Two things the tool deliberately does not do. It does not shorten links — a shortener is a third-party service that sees every click, and it would break the promise that nothing you type leaves your browser. And it does not guess your property's custom channel groups; the prediction is the default grouping every GA4 property starts with. Google Ads is a special case worth knowing: with auto-tagging on, GA4 uses the gclid and ignores manual UTMs unless the property setting to let manual tagging override is enabled, so the preset says so rather than letting you believe the tags are doing the work.
Frequently asked questions
- Do I need UTMs on Google Ads if auto-tagging is on?
- For GA4, no — gclid carries more than UTMs can. For any other analytics tool, or when a redirect drops the gclid, yes. If you add both, set GA4's 'Override automatic tagging (GCLID) with manual tagging' setting deliberately; by default manual values win, so a wrong utm_campaign hides the real campaign name.
- What source and medium does GA4 expect for Google Ads?
- google / cpc. GA4's Paid Search channel rule matches medium cpc, ppc, retargeting or paidsearch on a search-engine source; anything else lands in Unassigned. The preset fills exactly that, and the channel card confirms it.
- Where do I put the parameters in Google Ads?
- In the Final URL suffix at account, campaign or ad level (for example utm_source=google&utm_medium=cpc&utm_campaign={campaignid}), not in the final URL itself. The suffix survives tracking templates and lets you use ValueTrack parameters such as {campaignid} and {keyword}.
- Which UTM parameters are required?
- For GA4 to attribute a session to a campaign it needs utm_source and utm_medium; without them the visit is classified by referrer or as Direct. utm_campaign is not technically required but without it campaign reports show (not set). utm_id, utm_term and utm_content are optional detail — utm_id matters if you import cost data, because it is the join key.
- Why does my campaign traffic show as Unassigned in GA4?
- Almost always because utm_medium matches none of GA4's default channel rules. Values like social_paid, newsletter, banner_ad or Social (capitalised) match nothing. The checks list here tells you when a medium will land in Unassigned and which common values do match: cpc, paid_social, email, social, display, affiliate, referral. Unassigned can also come from sessions with only a source and no medium.
- Are UTM parameters case-sensitive?
- Yes, in GA4 and in most tools. Email, email and EMAIL are three different mediums, three rows in your reports, and only the lower-case one matches the Email channel rule. The builder lower-cases every value by default and tells you when it changed something.
- Should I use utm_medium=cpc or paid_social for Facebook ads?
- Either lands in Paid Social, because GA4 treats any medium matching cpc, ppc, retargeting or paid.* as paid and then looks at the source: facebook is on the social list, so the result is Paid Social. paid_social is the more descriptive choice; the important thing is to use one value consistently.
- Do I need UTMs on Google Ads links?
- Not for GA4 itself: auto-tagging appends a gclid and GA4 reads the campaign, ad group and keyword from it, with more detail than UTMs can carry. If you add UTMs too, GA4 ignores them by default and uses the gclid, unless you enable “Allow manual tagging to override auto-tagging” in the property. UTMs on Google Ads links are still useful for other tools that do not read gclid.
- Does the tool shorten the URL or store it?
- No to both. Shortening needs a third-party service that records every click, and storing links would mean keeping your campaign plans on a server. Everything here runs in your browser; use your own domain's redirect or a shortener you control if you need a short version.
- What does the bulk mode do?
- It takes one campaign name per line — optionally with content and term after a | — and builds every URL with the shared source, medium and ID, then shows the GA4 channel for each and exports the table as CSV or Excel. Useful for a newsletter with many links, an influencer list, or a QR-code batch.
UTM Builder by platform
- UTM Buildergeneral
- Facebook Ads UTM BuilderMeta (Facebook & Instagram)
- Email UTM BuilderEmail