How Do I Integrate Facebook Ads with Google Analytics?
Quick Answer
There is no native integration between Facebook Ads and Google Analytics. To track Facebook ad traffic in GA4, add UTM parameters to every Facebook ad's destination URL. Use a consistent template like utm_source=facebook&utm_medium=cpc&utm_campaign={{campaign.name}}&utm_content={{ad.name}}. Facebook automatically replaces the dynamic placeholders. GA4 then groups all Facebook traffic under the source/medium facebook / cpc.
The UTM Template You Should Use
Use this exact template on every Facebook ad URL:
?utm_source=facebook
&utm_medium=cpc
&utm_campaign={{campaign.name}}
&utm_content={{ad.name}}
&utm_term={{adset.name}}
&utm_id={{campaign.id}}
Facebook auto-fills the {{...}} placeholders with real data when the ad runs. The result in GA4: every visit shows the exact campaign, ad set, and ad that drove it.
How to Add UTM Parameters in Ads Manager
Method 1: Per-Ad URL (Manual)
- In Ads Manager, edit any ad
- Find the Website URL field at the ad level
- Append the UTM string to your URL:
https://yoursite.com/landing-page?utm_source=facebook&utm_medium=cpc&utm_campaign={{campaign.name}}&utm_content={{ad.name}}
- Click Publish
Method 2: URL Parameters Field (Cleaner)
- In the ad editor, scroll to URL parameters below the Website URL field
- Click Build a URL parameter
- Add each UTM as a separate key-value pair:
- Save
This keeps the destination URL clean and the parameters tracked separately.
Method 3: Account-Level Default (Recommended)
- Go to Business Settings > Ad Account Settings
- Find Default URL Parameters
- Paste your standard UTM template
- Save
Every new ad in this account inherits the UTMs automatically. No manual work per campaign.
Available Dynamic Placeholders
| Placeholder | Inserts |
|---|---|
{{campaign.id}} | Campaign ID |
{{campaign.name}} | Campaign name |
{{adset.id}} | Ad set ID |
{{adset.name}} | Ad set name |
{{ad.id}} | Ad ID |
{{ad.name}} | Ad name |
{{placement}} | Placement (Facebook Feed, Instagram Stories, etc.) |
{{site_source_name}} | Site (fb, ig, an, msg) |
{{placement}} to see which placement converts best in GA4.
How to View Facebook Traffic in GA4
- Open GA4
- Go to Reports > Acquisition > Traffic acquisition
- Add a filter: Session source / medium contains
facebook - Group by Session campaign to see which Facebook campaigns drove traffic
- Add secondary dimension Session manual ad content to see which ad
For deeper analysis, build a custom Exploration report grouping by Session source + Session campaign + Session manual ad content.
Comparing GA4 vs Meta Ads Manager Numbers
They will not match. Here's why and how to handle it:
| Metric | Ads Manager | GA4 | Why They Differ |
|---|---|---|---|
| Clicks | Counts ad clicks | Counts sessions | GA4 dedupes multiple clicks from same user; AM counts every click |
| Conversions | 7-day click + 1-day view | Last-click only | AM credits view-through; GA4 doesn't |
| Revenue | Pixel-tracked | GA4-tracked | Different tracking pipelines |
| Attribution window | 7-day click + 1-day view (default) | 30-day default | Different lookback windows |
Verification Checklist
[ ] UTM template defined and standardised
[ ] Default URL parameters set at account level
[ ] All campaigns inherit UTMs
[ ] Test click on a Facebook ad logs in GA4 within 1 hour
[ ] Source/medium = facebook/cpc
[ ] Campaign name populated correctly
[ ] Ad name populated correctly
[ ] GA4 conversion events configured for key actions
[ ] Cross-domain tracking set up (if applicable)
[ ] Internal traffic excluded
[ ] Exclude bot filter enabled
UTM Naming Conventions
Consistent naming makes reports readable. Use this structure:
Campaign name: [Brand]_[Objective]_[Audience]_[Date]
Example: Acme_Sales_Lookalike1pct_2026Q2
Ad set name: [AudienceType]_[Placement]_[BudgetTier]
Example: Lookalike1pct_FBFeed_HighBudget
Ad name: [CreativeType]_[CreativeID]_[Variant]
Example: Video_FB001_VariantA
When GA4 shows utm_campaign=Acme_Sales_Lookalike1pct_2026Q2, you know exactly what's running without checking Ads Manager.
Common Mistakes
Mistake 1: No UTMs at all. Without UTMs, all Facebook traffic appears in GA4 as (direct) / (none) because the Facebook in-app browser strips referrer data. UTMs are mandatory.
Mistake 2: Inconsistent UTM templates. Different campaigns using different templates makes reporting impossible. Standardise once, use everywhere.
Mistake 3: Lowercase vs uppercase. GA4 treats Facebook and facebook as different sources. Always use lowercase.
Mistake 4: Spaces in campaign names. Spaces become %20 in URLs and look messy. Use underscores instead.
Mistake 5: Trying to make GA4 and AM numbers match. They won't. Stop trying. Use each tool for its purpose.
Mistake 6: Forgetting utm_id. Without utm_id, GA4 can't link traffic data back to ad cost data via the Google Ads link (yes, this works for Facebook campaigns too via custom imports).
How to Import Facebook Cost Data into GA4
GA4 doesn't import Facebook costs natively, but you can do it manually:
- In GA4 Admin > Data import
- Create a Cost data import
- Map columns:
utm_source(facebook),utm_medium(cpc),utm_campaign,date,cost,clicks,impressions - Upload a CSV from Meta Ads Manager monthly
- GA4 now shows Facebook ROAS alongside Google Ads ROAS
Tedious but powerful — gives you true cross-channel ROAS in one place.
Skip the UTM Setup
Maintaining UTM templates, naming conventions, and cost data imports for every Facebook campaign is exactly the kind of repetitive work an AI should handle.
Pix-Vu generates UTM-tagged ads automatically, syncs cost data to your reporting tools, and runs cross-channel attribution without you touching a spreadsheet. $99/month.
Try Pix-Vu — 30-day money-back guarantee.
Ready to automate your Facebook ads?
Let AI handle your ad creative, targeting, and optimization. Launch profitable campaigns on autopilot.
Get Started Free