How to Import Facebook Ads Cost Data Into GA4 (Meta Ads Integration)
GA4 can now pull your Facebook and Instagram ad spend in by itself. Here is how to connect Meta, the UTM tags that make the cost line up with your visits, and when a CSV upload is still the better choice.
The short answer
You no longer need a spreadsheet to see Facebook and Instagram ad spend in Google Analytics 4. GA4 has a built-in Meta connection. You link your Meta ad account once, and GA4 brings in the cost, clicks and impressions of your Meta campaigns every day (Import campaign data). Google says the first run tries to pull at least 24 months of history (Connect Meta to Google Analytics).
There is one catch. GA4 puts that cost next to your visits by matching UTM tags letter for letter. UTM tags are short labels added to the end of an ad’s web address, such as utm_source=facebook, that tell analytics where a visit came from. If your Meta ads don’t carry the same source and medium you enter in the connection, the cost arrives but sits on its own, with no sessions or sales beside it.
A manual CSV upload is still needed for platforms GA4 doesn’t connect to, such as Microsoft Advertising or LinkedIn, and for a few Meta setups. Both are covered below.
What the Meta connection imports
Google renamed the feature. What used to be called cost data import is now campaign data import (Analytics Help). It has two kinds of sources: files or data you supply yourself (a CSV, a Google Sheet, cloud storage or a database) and direct connections to Meta, Pinterest, Reddit, Snap and TikTok.
The Meta connection fills three GA4 metrics for your paid Meta traffic: Ads cost, Ads clicks and Ads impressions. The data is a daily total per campaign, not user-level data (Connect Meta). GA4 does not learn who saw your ads.
It works in one direction: Meta’s cost comes into GA4. It does not replace your Meta pixel, which sends website events to Meta so Meta can count results and optimize delivery. So “GA4 vs Meta pixel” isn’t a choice. Keep the pixel for Meta, and use the GA4 connection to compare Meta’s cost with what those visitors did on your site. The pixel event codes cheat sheet lists the standard event names if you are setting up the pixel too.
GA4 joins imported rows to your traffic on source, medium and date, and uses campaign name and ID for more detail. Google is strict: the values in the import must exactly match the values GA4 recorded, and “Facebook” and “facebook” are not the same (Analytics Help). When nothing matches, the cost still shows under its source and medium, but with no sessions or key events next to it, so you can’t work out cost per result. (Key events are what GA4 now calls the actions you count as conversions, such as a purchase or a sent form.)
Before you connect: tag every Meta ad
Google lists three things to have ready (Connect Meta):
- A Meta business account and a Meta ad account.
- At least the Editor role in the GA4 property.
- UTM tags in the destination URLs of your Meta ads.
utm_sourceandutm_mediumare required.utm_campaignandutm_idare optional but recommended.
In Ads Manager you add tags at the ad level, in the Tracking section’s URL parameters field (Meta Business Help). Meta can fill in values for you with dynamic parameters, such as {{campaign.name}} and {{campaign.id}} (dynamic URL parameters). A simple setup looks like this:
utm_source=facebook&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_id={{campaign.id}}
The dynamic UTM parameter builder for Meta ads builds this string, checks the syntax and shows which GA4 channel each placement will land in.
Pick the source and medium on purpose
The connection asks for one Medium and up to five source values: Facebook, Instagram, Audience Network, Messenger and Threads. You can use one source for all Meta traffic and type it into all five fields, or tag each placement separately (Connect Meta).
Choose values GA4 already understands. GA4 puts a visit in Paid Social when the source is on its list of social sites and the medium contains “cp”, is “ppc” or “retargeting”, or starts with “paid” (default channel group). facebook, fb, instagram and ig are all on GA4’s downloadable list of social sources (PDF). A medium of just social puts paid clicks in Organic Social, which hides your ad traffic among free posts.
If you tag each placement with Meta’s {{site_source_name}} value, you get fb, ig, an, msg and th (dynamic URL parameters). The last three are not on GA4’s social list, so those visits won’t count as Paid Social. For most small accounts, one source such as facebook is simpler. The UTM naming convention guide has a full list of safe values.
Don’t lean on Meta’s automatic tags
Meta says that since January 1, 2024 it may add some parameters by itself, such as a campaign source of Facebook or Instagram and a campaign medium of paid (Meta Business Help). The help page doesn’t show exactly how they are written in the link, and GA4 treats capitals as different values. Add your own tags instead: Meta says parameters you add in Ads Manager override ones set elsewhere.
Two more details. Name-based values like {{campaign.name}} keep the name the campaign had when it was first published, even if you rename it (dynamic URL parameters). So send utm_id={{campaign.id}} too, since an ID stays the same when a campaign is renamed. Tag new ads from the start, so every click carries the same values.
Connect Meta to GA4, step by step
These steps follow Google’s Meta setup article.
- Clear out old imports first. If you uploaded Meta cost by CSV before, delete those datasets before you connect. Google warns that overlapping data can create duplicates (Analytics Help).
- Open Data import. In GA4, go to Admin › Data collection and modification › Data import.
- Create the import source. Click Create import source, give it a name, choose the data type Campaign data and pick Meta as the source. Click Next.
- Sign in to Meta. On Set up connection, click Connect, sign in with your Meta login in the pop-up and click Log in.
- Choose the account and enter your tags. On Configure the data, pick the Meta business and the ad account. Enter your source values and your medium exactly as they appear in your ad links. Click Next.
- Review and finish. Check the fields, click Finish, then Done.
Google says an import can take up to 30 minutes, and the data can take up to 24 hours to show in reports. Plan for the second number.
Be careful in step 5. After you create the connector, you can’t change the ad account, source or medium. To fix any of them, you delete the connector and make a new one (Connect Meta). Settle your tagging before you start.
Where to see Meta cost in GA4
Once the data has arrived, look in three places:
- Reports › Acquisition › Non Google campaign. Cost, clicks and impressions per campaign, next to sessions and key events.
- Advertising › Planning › All channels. Meta spend compared with your other channels.
- Reports › Data import › Campaign data import validation. Google added this report on August 10, 2026 (What’s new in Analytics). Use it to compare total cost, clicks and impressions with Ads Manager.
The import’s details page under Data import also shows a match rate: the share of imported rows that joined with your GA4 traffic. Google calculates it on the most recent two years of data (Analytics Help). A low match rate almost always means a tagging difference.
Currency is handled for you. Google says it converts Meta’s spend automatically, so totals stay right even if your property’s currency changes later (Connect Meta).
When a CSV import is still useful
The direct connection covers five platforms. A manual campaign data file is still the right tool in these cases.
- Other ad platforms. Microsoft Advertising, LinkedIn, X, Amazon and smaller networks have no direct connection. A CSV is the way in.
- Meta traffic with more than one medium. The connection takes one medium. If some Meta ads use
paid_socialand otherscpc, Google suggests using another import source (Analytics Help), or you retag the ads to one medium. - No access to the ad account. Agencies sometimes get exported reports from a client but can’t sign in to their Meta account. A CSV built from the export works without that login.
- History older than two years. The connection aims for 24 months. A CSV accepts any date newer than 2013 and not in the future, though the match rate only looks at the last two years.
What the file needs
Google’s rules for a campaign data file (Analytics Help):
- One row per campaign per day, dates as
YYYY-MM-DD, withutm_sourceandutm_mediumfilled in. - At least one metric: cost, clicks or impressions.
- A currency whenever you import cost. Google made this a requirement on July 28, 2026 (What’s new).
- No
utm_termorutm_contentcolumns.
Google’s export tips suggest a daily breakdown and about 12 months of data for a first upload (gather campaign data). The cost data import CSV builder for GA4 turns a platform report into this layout. It converts the dates, adds up keyword and ad rows into one total per campaign per day, and adds the currency column. Then upload it under Data import with the source Manual CSV upload. GA4 allows up to 120 uploads per property per day and 1 GB of campaign data across all import sources (About Data Import).
Why Meta Ads and GA4 don't match
Even with the cost lined up, the results in Ads Manager and GA4 will differ. That is normal. The two tools count different things.
- Different credit rules. Meta’s standard attribution counts conversions up to 1 or 7 days after a link click, and 1 day after someone only saw the ad (Meta Business Help). GA4 gives key events to traffic sources with its own model, which is data-driven by default (GA4 Help).
- A click is not a visit. Meta counts the click. GA4 only sees a session if the page loads and the Google tag runs. People who leave before that, or who decline analytics cookies, can be missing from GA4. The Consent Mode guide explains how consent changes what GA4 records.
- Untagged or mistagged ads. Visits from ads without your UTM tags land in other channels, often Unassigned. The GA4 Unassigned traffic fix walks through those causes.
Use Ads Manager to steer Meta delivery, and GA4 to compare Meta with your other channels on the same rules.
Cost not showing? Quick checks
- Wait 24 hours after connecting before you judge.
- Compare values letter by letter. The source and medium in the connection must match a real ad link, capitals included.
- Tag every ad. New, duplicated and boosted ads all need URL parameters. On a boosted post, the tags only apply to clicks on the ad, not to organic clicks on the post (Meta Business Help).
- Use one medium. With mixed mediums, part of your traffic never matches.
- Remove old CSV data. Doubled cost usually means an earlier upload covers the same dates.
- Read the validation report and compare its totals with Ads Manager.
If the source or medium in the connection is wrong, see step 5 above: fix your ad tags first, then rebuild the connector.
Frequently asked questions
Can GA4 import Facebook Ads cost data automatically?
Yes. Meta is one of GA4’s direct campaign data import sources, next to Pinterest, Reddit, Snap and TikTok. Once connected, the import runs daily and fills Ads cost, Ads clicks and Ads impressions for your paid Meta traffic.
How do I connect GA4 to Meta Ads?
In GA4 go to Admin › Data collection and modification › Data import, click Create import source, choose Campaign data and then Meta. Sign in to Meta, pick the business and ad account, enter your utm_source and utm_medium values, then finish. You need the Editor role or higher. Google’s setup article shows each screen.
Which utm_source and utm_medium should Facebook Ads use for cost import?
Any values work, as long as your ad links and the connection use exactly the same ones, including capitals. For the visits to land in GA4’s Paid Social channel, use a source on GA4’s social list, such as facebook, and a paid medium, such as paid_social (channel rules). Use one medium for all paid Meta traffic.
How much past Meta cost data does GA4 import?
Google says the connection tries to pull at least 24 months of past Meta Ads data. After that, the import runs daily.
Why don't Meta Ads results match GA4?
The two tools give credit differently. Meta’s attribution settings can count people who only saw an ad. GA4 credits key events to traffic sources with its own model and only sees visits that load your tag. Untagged ads make the gap bigger.
Can I import cost data from other ad platforms into GA4?
Yes. Pinterest, Reddit, Snap and TikTok connect directly, like Meta. For Microsoft Advertising, LinkedIn, X, Amazon and others you upload a campaign data CSV with one row per campaign per day.