How to Set Up UTM Parameters for Facebook Ads
Stop guessing which campaigns are driving results. Set up UTM tracking in under 10 minutes â no tools to buy, no code to write.
UTM parameters are free tags you add to your Facebook ad URLs that tell Google Analytics exactly which campaign, ad set, and ad drove each visit. Use Meta’s dynamic parameters ({{campaign.name}}, {{adset.name}}, {{ad.name}}) so you set it up once and it auto-populates for every ad. Takes 10 minutes. Costs nothing.
Why You Need UTM Parameters for Facebook Ads
Facebook Ads tracking has been unreliable since iOS 14.5 gutted pixel-based attribution. Meta’s own reporting shows modeled data â estimates, not facts. UTM parameters give you a second, independent source of truth inside Google Analytics that Meta doesn’t control.
Here’s what UTMs solve: you’ll see exactly which campaign, which ad set, and which specific ad sent a visitor to your site. Not modeled. Not estimated. Actual click-level data flowing into GA4 where you can cross-reference it with on-site behavior, conversions, and revenue.
Without UTMs, your GA4 traffic from Facebook shows up as generic “facebook / cpc” with no campaign detail. With UTMs, you see the full picture â campaign name, targeting group, and creative variant. That’s the difference between guessing and knowing.
What Are UTM Parameters?
UTM (Urchin Tracking Module) parameters are five standardized tags you append to any URL. When someone clicks a link with UTM parameters, Google Analytics reads those tags and attributes the visit accordingly.
| Parameter | Purpose | Facebook Dynamic Value |
|---|---|---|
utm_source |
Where the traffic comes from | facebook |
utm_medium |
The marketing channel type | paid-social |
utm_campaign |
Which campaign sent the click | {{campaign.name}} |
utm_content |
Which ad or creative variant | {{ad.name}} |
utm_term |
Which targeting / ad set | {{adset.name}} |
The magic is in the dynamic parameters â those {{campaign.name}} placeholders. Meta automatically replaces them with your actual campaign, ad set, and ad names when someone clicks. You set the template once, and it works for every ad you ever run.
Step-by-Step Setup
Open Google Campaign URL Builder
Go to Google Campaign URL Builder (search “Google Campaign URL Builder” â it’s a free tool). This tool generates the properly formatted UTM URL for you so you don’t have to manually type parameters.
Enter Your Website URL
In the “Website URL” field, enter your landing page URL â for example: https://yourstore.com/collection/summer. This is the page people land on after clicking your ad.
Fill in UTM Parameters with Dynamic Values
Use these exact values:
- Campaign Source:
facebook - Campaign Medium:
paid-social - Campaign Name:
{{campaign.name}} - Campaign Content:
{{ad.name}} - Campaign Term:
{{adset.name}}
The tool generates a complete URL with all parameters appended. Copy this URL.
Add the URL to Your Facebook Ads
In Meta Ads Manager, go to your ad level. In the “Website URL” or “Destination” field, paste the full UTM-tagged URL. Alternatively, use the “URL Parameters” field at the ad level â paste just the parameter string (everything after the ?) and Meta will append it to your destination URL automatically.
Verify in Google Analytics
After your ads run for a few hours, go to GA4 â Reports â Acquisition â Traffic Acquisition. You’ll see your Facebook traffic broken down by campaign, ad set, and ad name instead of the generic “facebook / cpc” bucket.
Dynamic vs. Static UTMs â Why Dynamic Wins
You could manually type campaign names into each UTM. Don’t. That approach breaks the moment you have more than a few ads â you’ll forget to update them, typos will split your data, and scaling becomes a nightmare.
Dynamic parameters solve this completely. Meta’s {{campaign.name}}, {{adset.name}}, and {{ad.name}} placeholders auto-populate from your actual Ads Manager names. Name your campaigns clearly in Ads Manager, and your GA4 data organizes itself.
Other useful dynamic parameters you can use:
{{campaign.id}}â Campaign ID number{{adset.id}}â Ad set ID number{{ad.id}}â Ad ID number{{placement}}â Where the ad was shown (Feed, Stories, Reels, etc.){{site_source_name}}â Platform (fb, ig, an, msg)
Naming Convention Matters
Your UTM data is only as useful as your naming convention. If your campaigns are named “Campaign 1” and “Test v2 final REAL,” your GA4 will be just as messy.
Use a consistent structure. Something like: [Objective]_[Audience]_[Offer] for campaigns, [Targeting-type]_[Audience-detail] for ad sets, and [Format]_[Hook]_[Version] for ads. When these names flow through dynamic UTMs into GA4, your data tells a clear story.
Common Mistakes to Avoid
Using spaces in UTM values. Spaces break URLs. Use hyphens or underscores instead. Dynamic parameters handle this automatically since Meta uses your Ads Manager names.
Inconsistent capitalization. GA4 treats “Facebook” and “facebook” as different sources. Pick lowercase for everything and stick with it.
Forgetting to use URL Parameters field. If you paste the full UTM URL into the Website URL field and then change landing pages, you’ll lose your UTMs. Using the separate “URL Parameters” field at ad level is cleaner â it appends automatically to whatever landing page you set.
Not naming campaigns clearly. Dynamic UTMs pull your Ads Manager names verbatim. If your campaign is named “asdfgh test,” that’s what shows up in GA4. Name things properly from the start.
Want Us to Fix Your Tracking?
UTMs are the starting point. If your pixel, CAPI, and attribution are a mess, we’ll find every gap in a free Brutal Truth Audit.
Book Your Free Audit