Campaign URL Builder for GA4: Step-by-Step Setup
Setting up a campaign URL builder for GA4 is straightforward until Google Ads auto-tagging silently overrides your manual UTMs. Here's how to avoid that.
Priya Anand
Content Strategist
UTM Tools & Link Management Blueprint Guide
Why GA4 changes the UTM setup conversation slightly
GA4 reads UTM parameters the same way Universal Analytics did, mapping utm_source, utm_medium, and utm_campaign to session-level source and medium dimensions. What's changed is how GA4 handles some of the automatic tagging behavior from ad platforms, particularly Google Ads, and how strict it is about certain default channel groupings if your UTM values don't match expected patterns.
That means the mechanics of building a tagged URL haven't changed, but a few setup details specific to GA4 are worth getting right from the start rather than discovering later when a campaign's traffic shows up miscategorized in reports.
Step 1: decide your destination URL first
Before touching any UTM fields, confirm the exact destination URL you want to tag, including whether it should be the homepage, a specific landing page, or a page with existing query parameters (like a product filter). Adding UTM parameters to a URL that already has other query parameters requires an ampersand rather than a question mark to join them, and getting this wrong breaks the URL entirely rather than just the tagging.
Step 2: fill in utm_source and utm_medium consistently
utm_source should identify exactly where the traffic is coming from (google, facebook, a specific newsletter name), and utm_medium should identify the channel type (cpc, email, social, referral). GA4 uses combinations of these two fields to assign default channel groupings automatically, so inconsistent values here (typing "Facebook" one time and "facebook" the next) can cause the same actual channel to be split into two different default groupings in reports.
Decide on a fixed list of source and medium values before building any links, and stick to it across every campaign. Our complete guide to UTM parameters has more detail on standard values that align well with GA4's default channel grouping logic.
Step 3: name the campaign clearly in utm_campaign
utm_campaign should be specific enough to distinguish this campaign from every other campaign you'll run, ideally including something like the date or a version number if you expect to run similar campaigns repeatedly, such as spring_sale_2026 rather than just sale. This becomes especially important in GA4 reports where campaign names are how you'll filter and compare performance across time.
If your team runs many campaigns, a documented naming convention prevents this field from becoming inconsistent across different people building links for the same overall initiative.
Step 4: the Google Ads gotcha, don't skip this
If any of your GA4 traffic comes from Google Ads, this step matters more than any other in this guide. Google Ads has auto-tagging (gclid) turned on by default, which GA4 uses to pull in Google Ads-specific campaign data automatically. If you leave utm_source blank and rely only on gclid, that's fine and works as intended. But if you try to add manual UTM parameters to the Final URL field in Google Ads directly, the auto-tagging can conflict with or override those manual UTMs, and if utm_source is left blank on a URL where gclid is present, GA4 falls back to gclid entirely and ignores any manual UTMs you added.
The fix: place any manual UTM parameters in the Final URL suffix field within Google Ads, not the Final URL field itself. The Final URL suffix field is specifically designed to append UTM parameters without interfering with gclid auto-tagging. Our Google Ads UTM builder page walks through this exact field distinction with examples, since getting this wrong is one of the most common reasons Google Ads campaigns show up miscategorized or missing entirely from GA4's campaign reports.
Step 5: verify the tagged URL actually works
Before distributing a tagged link broadly, click it yourself (or open it in an incognito window) and confirm it lands on the correct destination page with the URL parameters intact in the address bar. This catches basic errors like a missing ampersand or a typo in the base URL before they reach real traffic. It's also worth checking GA4's Realtime report for a test session showing the expected source and medium values before considering the setup complete.
Step 6: use a shortener if the channel needs it
A fully tagged URL with five parameters can run well past 100 characters, which is fine for email or a web page but awkward for SMS, printed QR codes, or anywhere character count matters. If shortening is needed, make sure the shortener you use preserves the destination and query parameters exactly rather than stripping them, and ideally handles both tagging and shortening in one step to avoid an extra manual copy-paste that risks introducing an error.
Our free UTM naming convention template and a combined tagging-and-shortening tool like UTMLoop both help keep this step from reintroducing the exact inconsistency problems a good GA4 setup is meant to avoid.
Step 7: save the values for next time
Once a campaign's UTM values are finalized, save them somewhere your team can reference for future similar campaigns, whether that's a shared document, a spreadsheet template, or a tool with built-in history. This is the step most teams skip and the one that causes the most drift over time, since without a saved reference, the next person building a similar link is starting from memory rather than from what actually worked and stayed consistent before.
For teams generating GA4-tracked links regularly, a live demo of a builder with saved history and dropdown-based selection makes this step effectively automatic rather than something someone has to remember to do manually.
A common mistake: forgetting the ampersand on parameterized pages
One mistake shows up often enough to call out specifically: adding UTM parameters to a destination URL that already has its own query parameters, like a product filter or a pre-selected pricing tier, and joining them with a question mark instead of an ampersand. A URL like yoursite.com/products?filter=sale already has one query parameter, so appending UTM tags needs to start with an ampersand (yoursite.com/products?filter=sale&utm_source=facebook) rather than a second question mark. Using a second question mark breaks the URL structure, and depending on how the destination page is built, it can silently drop either the original filter parameter or the UTM tags rather than throwing a visible error.
This is easy to miss because the link often still loads a page, just not with both sets of parameters intact, so the mistake isn't obvious until someone notices the filter didn't apply or the UTM data never showed up in GA4. Always test a tagged link that includes existing query parameters by clicking it and checking the address bar before distributing it, rather than assuming the concatenation worked correctly just because a page loaded.
Troubleshooting when GA4 shows no data at all
If a tagged campaign shows zero sessions in GA4 days after launch, work through a short checklist rather than guessing. First, confirm the link was actually clicked by checking whatever platform hosts it, since a campaign with no clicks yet simply has no data to show. Second, click the link yourself and verify in the address bar that the UTM parameters survived the redirect if a shortener is involved, since some shorteners strip query parameters unless specifically configured to preserve them. Third, check GA4's data processing delay, since standard reports can take up to 24 to 48 hours to populate fully, while the Realtime report should show a test session within minutes if tagging is working correctly.
If all three of those check out and data still isn't appearing, the most common remaining cause is a Google Ads-specific conflict: manual UTM parameters placed in the Final URL field rather than the Final URL suffix field, causing gclid auto-tagging to take over entirely and report the traffic under Google Ads' own campaign data rather than your manual UTM values. Re-check that field placement specifically before assuming the tracking setup itself is broken.
Frequently Asked Questions
Does GA4 read UTM parameters differently than Universal Analytics?
The core mechanics are the same, but GA4's default channel grouping logic depends more heavily on consistent utm_source and utm_medium values, so inconsistency has a more visible impact on reporting than it may have before.
Why did my Google Ads campaign show up wrong in GA4 despite adding UTMs?
This usually happens when manual UTM parameters are added to the Final URL field instead of the Final URL suffix field in Google Ads, causing gclid auto-tagging to override or conflict with the manual tags.
Should utm_source be left blank for Google Ads campaigns?
If you're relying entirely on Google Ads' automatic gclid tagging, leaving it blank works fine. If you want manual UTM control, add the parameters via the Final URL suffix field specifically rather than leaving utm_source blank and expecting both to work together.
How do I verify my GA4 UTM setup is working before launching a full campaign?
Click the tagged link yourself in an incognito window to confirm the destination and parameters are correct, then check GA4's Realtime report for a test session showing the expected source and medium values.
Join 14,000+ marketing growth leaders
Receive our bi-weekly breakdown of campaign analytics setups, attribution rules, naming tactics, and link-stitching blueprints. Direct to your inbox.
Continue reading blueprints
All Articles5 Advanced Link Management Strategies Most Teams Skip
Most teams stop at tagging links correctly. The teams getting more out of their link data are doing five things almost nobody else bothers with.
Open Source URL Shorteners: When Self-Hosting Makes Sense
Self-hosting a URL shortener trades a monthly bill for maintenance responsibility. That's a good trade for some teams and a bad one for most.