TL;DR
Set up a consistent UTM naming convention first, use a URL builder to generate tagged links, and verify the data lands in GA4 correctly before any campaign goes live. From scratch, the full setup takes around two hours. You need a Google Analytics 4 property, a shared spreadsheet, and optionally a link shortener or UTM management tool.
What You Need Before You Start
- A Google Analytics 4 property with at least Editor permissions (free)
- Access to every channel you plan to track: email platform, paid ad accounts, social scheduling tools
- A shared spreadsheet in Google Sheets or Excel for your UTM master list
- Optional: Google Tag Manager installed on your site (free) if you want to track additional link interactions
- Optional: a link management tool like UTM.io for teams managing more than 50 campaigns a month
- A working knowledge of your traffic sources: know whether you run email, paid search, paid social, organic social, or affiliate before you build your taxonomy
- 30 minutes of uninterrupted time to define your naming rules before you touch a single URL
Step 1: Understand the Five UTM Parameters and What Each One Does
Before you generate a single link, know exactly what each parameter captures. Mixing them up is the number one cause of polluted data.
utm_source— the platform or vendor sending traffic. examples:google,facebook,newsletterutm_medium— the marketing channel type. examples:cpc,email,organic_socialutm_campaign— the specific campaign name. examples:spring_sale_2026,product_launch_q2utm_content— used to differentiate ads or links within the same campaign. examples:banner_v1,cta_blue,top_linkutm_term— used for paid search keywords. examples:crm+software,best+email+tool
Only utm_source, utm_medium, and utm_campaign are required for GA4 to attribute traffic correctly. The other two are optional but worth using when you run A/B creative tests or keyword-level paid campaigns.
You should now see: a clear mental map of which parameter answers which question. source = who sent them, medium = how they got there, campaign = why you were running that activity.
Step 2: Define Your Naming Convention Before You Build Anything
This is the step most marketers skip and then regret. If one person writes Email and another writes email and a third writes e-mail, GA4 treats those as three separate sources. Your reports become meaningless.
Set these rules and document them in a shared doc before anyone builds a link:
- Case: lowercase only, always.
facebooknotFacebook - Spaces: replace with underscores.
spring_salenotspring sale(spaces break URLs) - Dates in campaign names: use ISO format.
2026_q2notQ2 26 - Medium taxonomy: agree on a fixed list. a short example:
cpc,email,organic_social,paid_social,affiliate,display,push - Source taxonomy: one name per platform.
googlenotgoogle_adsoradwords
Write these rules in a shared Notion page, Google Doc, or directly in the first tab of your UTM spreadsheet. Anyone building links must read this before they start.
You should now see: a one-page naming guide that any team member can reference in 30 seconds.
Step 3: Build Your UTM Master Spreadsheet
Your spreadsheet is the single source of truth for every tagged link your team creates. It prevents duplicate campaign names, inconsistent spelling, and the nightmare of not knowing which link is live in which channel.
Create a Google Sheet with these columns:
| Column | Purpose |
|---|---|
| Date Created | when the link was built |
| Campaign Name | exact utm_campaign value |
| Source | exact utm_source value |
| Medium | exact utm_medium value |
| Content | utm_content if used |
| Term | utm_term if used |
| Destination URL | the page being linked to |
| Full Tagged URL | the complete URL with all parameters |
| Short URL | the branded short link if applicable |
| Owner | who built it |
| Status | draft, live, paused, expired |
Add a second tab with your approved source and medium taxonomy. Anyone building a link picks from the dropdown, not from memory.
You can also use a simple Google Sheets formula to auto-assemble the tagged URL from the individual columns so nobody is typing parameters by hand:
=A2&"?utm_source="&B2&"&utm_medium="&C2&"&utm_campaign="&D2
Extend that formula with IF statements to append utm_content and utm_term only when those cells are not empty.
You should now see: a spreadsheet where any tagged link your team has ever built is findable in under 10 seconds.
Step 4: Generate Your First Tagged URL Using Google’s Campaign URL Builder
Go to Google’s Campaign URL Builder at ga-dev-tools.google/campaign-url-builder/. It is free, no login required.
Fill in the fields:
- Website URL: paste the destination page. example:
https://yoursite.com/pricing - Campaign Source: type your approved source value. example:
facebook - Campaign Medium: type your approved medium value. example:
paid_social - Campaign Name: type your campaign name. example:
may_retargeting_2026 - Campaign Content: optional. example:
carousel_v2 - Campaign Term: for paid search only
The tool generates the full URL below the form. Copy it directly into column H of your UTM spreadsheet.
One thing to check: if your destination URL already has query parameters (like ?ref=homepage), the builder handles this correctly by appending UTM params with &. Verify the generated URL does not have two ? characters in it. That breaks tracking.
You should now see: a complete tagged URL in the builder output, starting with your destination URL and ending with all the parameter pairs you entered.
Step 5: Test the Link in GA4 Before You Publish
Never push a tagged link live without testing it. A broken or misconfigured link sends traffic to your site but attributes it incorrectly, and you will not notice until weeks later when you pull the report.
Here is how to test:
- Open GA4. Go to Reports > Realtime.
- Open a new browser tab in incognito mode (so your own session does not get filtered).
- Paste your tagged URL into the incognito tab and hit Enter.
- Go back to GA4 Realtime. Within 30 seconds you should see one active user.
- Click on that user. Look at the Traffic source card. It should show your exact
utm_source,utm_medium, andutm_campaignvalues.
If you see (direct) / (none) instead, the URL likely has an encoding error. Check for spaces in parameter values or a double ? in the URL.
You should now see: your test session appear in GA4 Realtime with the correct source, medium, and campaign attributed.
Step 6: Shorten and Brand Your Tagged URLs
Raw UTM URLs are long and ugly. They break in some email clients. They also expose your campaign strategy to anyone who looks at the URL bar.
Use Bitly or your own custom short domain to create a branded short link. Bitly’s free tier lets you create up to 10 branded links per month. For higher volume, their Starter plan is around $8 per month.
If you are running email campaigns through Mailchimp, HubSpot, or ActiveCampaign, those platforms have built-in link tracking. Turn it off or your links will end up double-tagged. Only use the platform’s native tracking if you are not adding your own UTM parameters, not both.
One rule: always shorten the UTM-tagged URL, not the clean URL. The redirect from the short link should land on the full tagged destination. Test the short link with the same Realtime method from Step 5.
You should now see: a short URL in your spreadsheet that, when clicked, correctly passes through all UTM parameters to GA4.
Step 7: Set Up a Traffic Acquisition Report in GA4
GA4 does not surface UTM data prominently out of the box. You need to know where to find it.
Go to Reports > Acquisition > Traffic Acquisition. The default view shows Session default channel group. Change the primary dimension to Session source / medium using the dropdown above the table. You can also add a secondary dimension of Session campaign to see campaign-level breakdowns.
To build a custom report that always shows this view, go to Explore > Blank and create a new exploration:
- Dimensions:
Session source,Session medium,Session campaign,Session content - Metrics:
Sessions,Engaged sessions,Conversions,Revenue(if e-commerce)
Save this exploration. Share the link with your team so everyone checks the same report instead of building their own with different settings.
For a deeper look at how GA4 attribution models affect your channel data, see our guide on understanding GA4 attribution models.
You should now see: a report showing sessions broken down by your UTM values, not just generic channel buckets.
Step 8: Create a Governance Process for Your Team
A naming convention document is only useful if people actually follow it. The process breaks down the moment a freelancer or new hire builds links without reading the rules.
Put these guardrails in place:
- Add a “UTM Link Request” column to your project management tool (Asana, Notion, Linear). Anyone who needs a link fills in a form. One designated person builds and approves the link.
- Run a monthly audit. Pull the Traffic Acquisition report for the past 30 days and scan for anomalies: sources with capital letters, medium values that do not match your taxonomy, campaign names with spaces.
- Lock the taxonomy tab in your Google Sheet so no one can accidentally edit the approved lists.
- Include UTM tagging in your campaign launch checklist. No campaign goes live without a verified short link in the UTM spreadsheet.
You can also look at campaign tracking workflows for small teams for templates that combine link building, QA, and reporting into one repeatable process.
You should now see: a documented process your team can follow without needing you to review every link manually.
Step 9: Set Up Cross-Domain Tracking If You Use Multiple Domains
If your marketing site is on yoursite.com but your checkout is on store.yoursite.com or a completely separate domain, UTM data breaks at the domain boundary. GA4 treats the second domain as a referral and your original source attribution is lost.
Fix this in GA4:
- Go to Admin > Data Streams > your web stream > Configure tag settings.
- Click Configure your domains.
- Add all domains that are part of the same user journey. example:
yoursite.comandstore.yoursite.com.
If you use Google Tag Manager, you can configure cross-domain measurement under the GA4 configuration tag settings directly in GTM. See the Google Tag Manager setup guide for GA4 for the exact menu path.
You should now see: sessions that cross domains still attributed to the original UTM source rather than showing yoursite.com as a referral source in your reports.
Common Mistakes To Avoid
- Using capital letters in parameter values. GA4 is case-sensitive.
Facebookandfacebookappear as separate sources. Lowercase everything, always. - Tagging internal links. If you add UTM parameters to links between pages on your own site, GA4 resets the session source at that click. Internal links should never have UTM parameters.
- Using the same campaign name for different channels. If your Spring Sale runs on email and paid social, tag them as separate campaigns or use utm_medium to differentiate. Combining them makes channel-level analysis impossible.
- Forgetting to tag links in PDF documents. PDFs opened from Google Drive or email clients often generate direct traffic. If you put a link in a PDF, tag it.
- Letting platforms auto-tag AND using manual UTMs at the same time. Google Ads uses gclid for auto-tagging. Manual UTMs override auto-tag data in some configurations. Pick one approach per platform and stick with it.
- Never auditing your existing links. Old campaigns stay live in email archives, blog posts, and social bios. An annual link audit finds dead or mislabeled links before they quietly pollute months of data.
When To Level Up
The spreadsheet plus URL builder approach works well for teams running up to 20 or 30 distinct campaigns a month. Once you are past that, managing links in a shared sheet becomes slow and error-prone. People start making copies of links without updating the master list. Naming drift creeps back in.
At that point you should move to a dedicated link management platform. Tools like UTM.io, RallyMind, or a custom Airtable base with an automation layer give you enforced naming rules, team permissions, link templates, and audit logs. Some integrate directly with your ad platforms so links are generated automatically when you create a new ad set.
The signal that you have outgrown your spreadsheet is when you spend more than an hour a week reconciling UTM data or when you regularly find untagged traffic in your reports that you cannot explain. That hour of wasted time is worth more than any paid tool’s monthly subscription.
Browse the tools listed under /category/growth/ to find link management and campaign attribution platforms reviewed for small marketing teams.
Frequently Asked Questions
Do UTM parameters affect SEO?
UTM parameters do not directly affect your SEO rankings. Google’s crawlers understand these are tracking parameters and they are typically excluded from indexing. However, if someone copies and shares a UTM-tagged URL on a third-party site, that parameter string can appear in search results, which looks messy. Use canonical tags on landing pages to point to the clean URL.
What happens if I forget to tag a link?
Traffic from that link will typically show up as direct or, if it comes from a known referrer, as the referring domain. You lose the campaign-level attribution. For email campaigns especially, most email clients strip referrer headers, so untagged email traffic almost always shows as direct.
Can I use UTM parameters with Google Ads?
Yes, but be careful. Google Ads has its own auto-tagging system using the gclid parameter, which sends richer data to GA4 than manual UTMs can. If you are using Google Ads, keep auto-tagging on and use manual UTMs only for channels that do not support auto-tagging like Meta Ads, LinkedIn, or email.
How long does UTM data stay in GA4?
GA4’s default data retention is two months for user-level data and 14 months for event data. You can extend event data retention to 14 months in Admin > Data Settings > Data Retention. Export monthly reports to BigQuery or Google Sheets if you need data older than 14 months.
Should I tag every single link or only paid links?
Tag every link you control: paid ads, email campaigns, social posts, QR codes, PDF documents, partner links, and offline campaign URLs. The only links you should never tag are internal links between pages on your own site.
Bottom Line
Getting UTM parameters right comes down to three habits: define your naming rules once and document them, build every link in a central tracker that your whole team can see, and test every link in GA4 Realtime before it goes live. none of these steps are technically hard. the discipline is the hard part. a single rogue link built outside the system can create an untrackable source in your reports for months. run a monthly audit, enforce lowercase, and audit any traffic source you cannot explain. once this workflow is running smoothly, your reports will finally reflect what your campaigns are actually doing. for more tools that help you track and attribute growth across channels, start with the resources at /category/growth/.