GA4

How to track Facebook Ads in Google Analytics 4

GA4Alyona Samovar6 min read

How to track Facebook Ads in Google Analytics 4

To track Facebook Ads in Google Analytics 4, add UTM parameters to every ad URL, then read the traffic in GA4’s acquisition reports under the source and medium you chose. For cost, GA4 now has a direct import connection to Meta. Without the tags, clicks from Facebook and Instagram ads arrive as referrals from several Facebook domains, or as direct traffic, and cannot be told apart from organic posts.

This guide covers the tagging, where the data appears, the cost import, why GA4 and Ads Manager never show the same conversions, and what to do when you need spend and results below the campaign level.

What GA4 needs from a Facebook ad

What GA4 needs from a Facebook ad

GA4 does not connect to Meta Ads Manager the way it connects to Google Ads. It learns about a click from the landing page URL. An untagged ad click arrives with a referrer such as l.facebook.com, m.facebook.com or lm.facebook.com, or with no referrer at all from the mobile app. GA4 then reports it as a referral or as direct.

UTM parameters fix that. With utm_source, utm_medium and utm_campaign in the URL, the session is named after your campaign whatever the referrer was.

Step 1. Add UTM parameters in Meta Ads Manager

Step 1. Add UTM parameters in Meta Ads Manager

Meta’s own steps (Add URL parameters to your Meta ads, checked October 2026):

  1. Create an ad in Ads Manager, or open a draft, and continue to the Tracking section of the ad.
  2. Under Tracking, enter your parameters in the URL parameters field, or click Build a URL parameter.
  3. Click Apply.

Enter the parameters without the question mark, separated by ampersands:

utm_source=facebook&utm_medium=paid_social
&utm_campaign={{campaign.name}}
&utm_id={{campaign.id}}
&utm_content={{ad.name}}

The values in double braces are Meta’s dynamic parameters. Meta fills them in when the ad is delivered, so the campaign name in GA4 is the campaign name in Ads Manager and nobody has to type it twice. Google recommends the same approach for GA4: “Use Dynamic UTMs such as utm_campaign={{campaign.name}} whenever possible.”

Three details from Meta’s page that cause most tagging mistakes:

  • The URL parameters field wins. If the same parameter is in the Website URL field and in the URL parameters field, only the second one ends up in the final URL.
  • No empty values. Remove a parameter you do not fill.
  • Meta may add parameters itself. Since January 2024, ad traffic can get a campaign source of Facebook or Instagram and a campaign medium of paid added automatically, along with ad, ad set and campaign IDs. Click one of your own ads and read the landing page URL to see what your account sends.

Which values to use

Choose once and use the same values in every campaign:

Parameter Recommendation Why
utm_source facebook (and instagram if you want them apart) Both are on Google’s list of social sites
utm_medium paid_social, paid or cpc All match GA4’s pattern for paid mediums
utm_campaign {{campaign.name}} Same name in both tools
utm_id {{campaign.id}} Lets the cost import match on an ID

With a social source and a paid medium, GA4 puts the sessions into the Paid Social channel. A medium such as fb_ads matches nothing and sends the traffic to Unassigned. The rules are listed in the guide to the GA4 default channel group, and naming conventions in the guide to UTM tags.

The Turning Point

OWOX Data Marts

See your first report built in real time. 15 minutes.

  1. Connect your data warehouse
  2. Pick your metrics
  3. Get a live Google Sheets report

In the time it takes to write a ticket. Then imagine never writing that ticket again.

Book a Demo

We'll use your actual use case

Step 2. Find Facebook Ads traffic in GA4

Step 2. Find Facebook Ads traffic in GA4

Open Reports, Acquisition, Traffic acquisition, and switch the first column from Session default channel group to Session source / medium. Your tagged traffic is the row with your values, for example facebook / cpc. Add Session campaign as a second dimension to split it by campaign.

The User acquisition report shows the same for new users, under First user source / medium.

GA4 User acquisition report by First user source / medium, with the row facebook / cpc boxed between google / cpc and youtube.com / referral. Tagged ad clicks get their own row.

For anything the standard reports do not show, such as key events by campaign and ad, build a free-form exploration with Session campaign and Session manual ad content as dimensions.

Step 3. Import Facebook Ads cost data into GA4

Step 3. Import Facebook Ads cost data into GA4

Sessions and revenue are now in GA4. Spend is not. GA4’s campaign data import brings it in, and Meta is one of five platforms with a direct connection: you authorise the account in GA4 and it pulls cost, clicks and impressions daily, with up to 24 months of history (Import campaign data, checked October 2026).

Google sets one condition. All paid traffic from the platform has to carry a single utm_source value and a single utm_medium value. An account where some campaigns say fb / cpc, others Meta / cpc and others facebook / paid cannot use the direct connection. Google’s guidance for that case is to upload the data as CSV, through Google Sheets or from BigQuery instead.

The direct connection is set up in Admin, Product links, Meta links, which opens the campaign data import for Meta. Imports from a file or a sheet go through Admin, Data collection and modification, Data import. The fields, the file route and how to read the match rate are in the guide to GA4 cost data import.

After the import, the Non Google campaign report shows clicks, cost and impressions next to sessions for each tagged campaign.

GA4 Non Google cost report with rows for facebook / cpc, bing / cpc, linkedin / paid and twitter / cpc, each with Non-Google clicks, cost and impressions next to sessions.

Why GA4 and Ads Manager show different conversions

Why GA4 and Ads Manager show different conversions

They will not match, and that is not a setup error. Meta credits conversions to ad interactions within its own attribution window, which can include people who saw an ad and did not click. GA4 counts sessions that reached your site with your tags and credits key events by its own attribution model. Cookie consent, ad blockers and in-app browsers remove some sessions from GA4 that Meta still counts.

Use Ads Manager to manage delivery, and GA4 to compare Facebook with other channels on one set of rules. The differences are worked through in Facebook Ads vs GA4 conversions.

What GA4 does not give you

What GA4 does not give you

  • Cost stops at the campaign. The import has no ad set or ad level, so there is no cost per creative.
  • Imported cost is not in the GA4 BigQuery Export and cannot be used in audiences or exploration segments.
  • Revenue is GA4’s key events only. Orders that were refunded, or deals that closed in a CRM weeks later, are not part of the picture.
  • Each platform is its own import with its own naming rules.

If the weekly question is “which channel got the sessions”, GA4 answers it. If it is “which ad set should get next week’s budget, measured on orders that were not returned”, it does not.

Spend and results at ad level, in your warehouse

Spend and results at ad level, in your warehouse

OWOX Data Marts has Facebook Ads as a data source. It loads the ad-level insights, with spend, impressions and clicks per campaign, ad set and ad, into your warehouse: Google BigQuery, Snowflake, AWS Redshift, AWS Athena or Databricks. GA4 reaches BigQuery through its own export. In the warehouse the two meet in SQL, joined on the campaign ID you put into utm_id and on the date.

An analyst writes that join once and publishes it as a Data Mart. Reports on it go to Google Sheets or Data Studio (the former Looker Studio) on a schedule, so the marketer reads spend, sessions and orders per ad set in one table.

The limits: OWOX Data Marts does not send data into GA4 and does not change what Ads Manager or GA4 report. The join is the analyst’s SQL, and its quality depends on the tagging from step 1. The steps are in loading Facebook Ads into BigQuery and blending GA4 conversions with ad spend.

Your New Normal

Turn your data into decisions.

Governed data marts give you the clean foundation ML needs to actually work.

  • No AI hallucinations
  • Analyst-governed definitions
  • Every number traces to SQL
Get started free

FAQ

Frequently Asked Questions

How do I track Facebook Ads in Google Analytics 4?

To effectively track Facebook ads in GA4, marketers should use UTM parameters to tag ad URLs, enabling GA4 to identify and analyze traffic originating from Facebook. This setup allows for detailed reports on campaign performance, audience behavior, and conversion tracking in GA4, giving a comprehensive view of how Facebook ads contribute to overall marketing goals.

Can GA4 import Facebook Ads costs automatically?

Yes. GA4's campaign data import has a direct connection to Meta, set up under Admin, Product links, Meta links. It pulls cost, clicks and impressions daily, and requires all paid Meta traffic to use one utm_source value and one utm_medium value.

Why do Facebook Ads and GA4 report different conversions?

They count different things. Meta credits conversions to ad interactions within its own attribution window, while GA4 counts sessions that reached your site and credits key events by its own model. Consent choices and ad blockers also remove some sessions from GA4.

Who wrote this

Alyona Samovar

Alyona Samovar · Senior Digital Analyst

Alyona Samovar is a Senior Digital Analyst who spent years at OWOX helping enterprise clients design analytics systems, build BigQuery reporting pipelines, and optimize marketing measurement. She specializes in SQL-based analytics, data modeling, and turning raw marketing data into actionable insights. Alyona writes about practical analytics workflows, BigQuery best practices, and data-driven decision-making.