Skip to Content
Meta CAPI

Meta CAPI Conversion Tracking with Google Tag Manager

Meta CAPI: the solution to improve your advertising performance

New tracking obstacles, underperforming Facebook Pixel

The tracking landscape is constantly evolving, bringing a new range of obstacles to data collection: ad blockers, the end of third-party cookies, and browser restrictions such as those from Safari. As a result, the Facebook Pixel is now significantly less effective on its own and no longer provides optimal conversion tracking on Facebook and Instagram. To overcome these challenges and enable advertisers to continue collecting reliable data, the Meta Conversion API (CAPI) has become essential. Read on to understand why implementing Meta CAPI is crucial for your advertising campaigns, along with our recommendations for an effective setup.

Meta Conversion API + Facebook Pixel, and deduplication:

Facebook CAPI and the traditional Facebook Pixel do not collect data in the same way. Unlike the Facebook Pixel, which gathers data directly within the browser and relies heavily on third-party cookies (client-side tracking), Meta CAPI uses server-side tracking. This means Meta CAPI is not dependent on third-party cookies—it sends user data server-to-server, delivering more reliable data.

Currently, Meta recommends using both tracking methods in tandem, thereby enabling a dual setup: Pixel + CAPI. Indeed, the Facebook Pixel remains the most effective source when third-party cookies are present (as in browsers like Chrome). Conversely, Meta CAPI is more effective in browsers that have already eliminated third-party cookies (such as Safari and Firefox). By implementing dual tracking, you achieve the most effective solution currently available to collect robust data for your Meta campaigns, regardless of the user’s browser.

Recommended dual implementation: Facebook Pixel and Meta CAPI

Once both tracking sources are configured, Meta must deduplicate any events received in duplicate.
For this to work, you need to send the same event ID via each tracking method, and Facebook will then deduplicate incoming events, counting each event only once. If an event is missed by the pixel but delivered via the server, Facebook will count that server-side event instead.

Meta-side deduplication of an event tracked via both Pixel and Meta CAPI, using eventID

This setup ensures optimal data tracking—both the volume of conversions and the quality of data are maximized!

Addingwell Meta CAPI Tag: single server‑side tag, deduplication assured

That Meta recommendation to use both implementations, however, has downsides and doesn’t fully exploit the benefits of server‑side tracking:

  • no improvement in web performance: you still need to trigger the pixel from the browser, so site load times are unaffected.
  • no enhancement in data governance: you keep the Facebook SDK in the browser and don’t fully control the data being sent to Meta.

Finally, deduplication remains a concern, requiring you to manage the same event ID across both Pixel and CAPI, which complicates the setup.

To address these issues, the Addingwell Meta CAPI tag was designed to unify dual tracking: via the pixel and via the Meta Conversion API, from a single server‑side tag! This tag simplifies your implementation by allowing you to:

  • trigger both CAPI and the Pixel from a single server‑side tag, removing the need for Facebook SDK in the browser—thus improving web performance and data governance.
  • automatically send identical event IDs for both tracking methods, eliminating the need for manual deduplication setup.
Addingwell tag recommendation: dual implementation (Pixel and Meta CAPI) from server‑side tag

Configuring the Addingwell Meta CAPI Tag

Import the Tag into GTM Server

Click here  to download the Meta Conversion API tag, then click the download icon to obtain the file.

Downloading the Addingwell Meta CAPI tag

Next, go to the Templates section of your server container, and under Tag templates, click New.

Create a new tag for Addingwell Meta CAPI

Then click the three-dot menu in the top right and select Import.

Import Addingwell Meta CAPI tag

Select the template.tpl file you just downloaded, then click Save.

Save the Addingwell Meta CAPI tag

Configure the Tag

Create a new tag in Google Tag Manager Server‑Side and select the newly added Meta CAPI tag. You’ll need two pieces of information to configure it:

Once you’ve retrieved the pixel ID and access token, configure the Meta CAPI tag accordingly.

Configuring the Meta CAPI tag

Event Name Setup Method

Setup methodDescription
Inherit from clientSets the tag to match GA4 events received from the client container to Meta’s standard events. Any GA4 event not listed in the mapping table will be sent as a custom event to Meta.
OverrideAllows you to create your own mapping between GA4 events and Meta events. You can choose to send a standard event or a custom event.

API Access Token

Enter the access token obtained from the pixel settings.

Facebook Pixel ID

Enter the pixel ID retrieved from the Event Manager.

Test Event ID

You may input your test code from the Event Manager, solely to test event delivery to Meta.

It is not recommended to keep the Test Event ID in the Meta Conversion API tag in production. Remember to remove it before publishing your server container.

Send pixel request

Check this option to send a request to the pixel (the violet arrow in the diagram below) using the same event_id as the request sent to the Conversion API, enabling proper deduplication. This aligns with Meta’s advertising tracking guidelines.

With this Addingwell tag, you no longer need separate Meta tags in your client container — only the server container tag is necessary.

Meta CAPI tag diagram

If you enable Send pixel request in the server‑side tag, make sure to remove or at least pause any Facebook Pixel tags in the GTM client container, or events will be sent twice (once from server, once from client). Similarly, if the Facebook Pixel was hardcoded on the site, ask developers to disable the pixel in the site code. Otherwise, duplicate events will occur!

Trigger the Tag

Finally, trigger the Meta CAPI tag on relevant GA4 events using the mapping table.

Common events for an e-commerce site include:

Event Name
page_view
view_item
add_to_cart
begin_checkout
add_payment_info
purchase

This list is illustrative and should be adapted to your use case.

For optimal organization, create a Lookup Table variable as follows:

Configuring a lookup table in GTM Server‑Side

In the Meta CAPI tag, set up a custom trigger that checks for events from GA4 (Client Name = GA4) and verifies that your conversion table returns true.

Configuring a custom trigger in GTM Server‑Side

If you’ve followed our recommendations and are triggering the Facebook Pixel from the Meta CAPI server‑side tag, you must remove or pause Facebook Pixel tags in the client container. Also, if the pixel is hardcoded in the site, ask developers to disable it. Otherwise, duplicate data will be sent — both from server and client!

Verify Received Data

Once your Meta CAPI tag is configured, it’s essential to ensure that:

  • your server container correctly sends events to META, both via pixel and CAPI,
  • the volume of events received by Facebook is consistent and deduplication works (the same event from both sources should be counted only once),
  • and data quality is solid, ensuring Facebook can match your key events to actual META users. To facilitate this, include user_data with your events.

Event Volume

Event delivery

First, verify that the Meta CAPI tag triggers correctly for your specified events in the server preview. Confirm the tag appears under Tags fired with a Succeeded status.

Verify Meta CAPI tag firing in server‑side preview

Click the Meta CAPI tag in preview to check that requests were sent to Meta via both the Conversion API and the Pixel. A pixel request will only appear if Send pixel request was checked during configuration.

Verify data sending via Meta CAPI and Facebook Pixel from server

Event volume received by Meta, deduplication

Open your Facebook Events Manager  and go to the Overview tab.
Events received through both Pixel and CAPI sources will be displayed here.

Check data sending via Meta CAPI and Facebook Pixel from server

Since you’ve implemented dual tracking, ensure that:

  • events are coming from both sources (Pixel and CAPI),
  • they are deduplicated, meaning Facebook recognizes and counts only one event if received from both.

Click on a specific event in Overview, for example Purchase, to review details.

Check data sending via Meta CAPI and Facebook Pixel from server

You should see both sources active, with events from the Pixel (Browser) and CAPI (Server).
Event volume via Pixel (browser) should remain stable—CAPI should not negatively impact it.

Server-side CAPI events should exceed Pixel events. An additional 5–20% through CAPI indicates a good setup. If the server volume is significantly higher, investigate your setup further.

If Pixel event volume exceeds CAPI, another Pixel implementation may still be active (e.g., in client GTM or hardcoded on the site). Check with your team and remove duplicates.

Then click View Details and go to Event Deduplication.

Check deduplication of events in Facebook Events Manager

You should see 100% event ID delivery from both Pixel and CAPI, confirming perfect deduplication.
The Overlap metric shows what percentage of events had matching deduplication keys from both sources (e.g., Event ID and FBP).

Event volume in Addingwell via Events Monitoring

In your Addingwell container, go to Events Monitoring. Select your timeframe and click on the Meta CAPI tag.

Check Meta Conversion API requests via Addingwell Events Monitoring

This view shows event details sent from your server to the Meta Conversion API, including success rates (100% in our example).

If not all requests succeeded, investigate errors in Logs by selecting Meta API logs.

View Meta Conversions API error logs via Addingwell container

For example, our most common error (118 cases) involved a non-numeric product price. Update the dataLayer accordingly and review your logs for corrections.

View error logs for Meta Conversions API via Addingwell container

Data Quality

Sending conversion events to Meta is a good start—but you can go further by attaching user data (e.g. email, phone, name) to your events. This helps Meta match events to real users, enhancing attribution and campaign performance.

For server-side implementation best practices, see our documentation on user data.

In Addingwell via Events Monitoring

In your Addingwell container, open Events Monitoring. This shows all user data parameters processed by your GA4 client and available to server‑side events.

For example, select a purchase event to view parameter availability.

Check user parameters on a purchase event in server‑side

You’ll see what percentage of events include user data such as email, and the coverage rate of each parameter.

Check user data in server‑side Meta events

In our example, email is present in 100% of purchase events—indicating high data quality.

In Meta: verifying Match Quality

Meta displays a Match Quality score (0–10) per event, which reflects how complete your user data parameters are. More user-data leads to a higher score.

High-quality data on Purchase yields good scores, while PageView events (with less user data) score lower. The goal isn’t a perfect 10/10 but to identify opportunities to enrich your events with user data to improve matching.

You can check shared parameters (e.g., email, phone) on PageView to see where to improve Match Quality.

Shared parameters in Meta Events Manager

Here’s how to interpret the previous screenshot:

ParameterInterpretation
EmailPresent in 29.05% of PageView events—expected since only logged‑in users have their email sent.
IP AddressAutomatically included in HTTP requests.
User-AgentSent automatically.
Phone NumberSent when user is logged in—expected.
FB Browser ID (fbp)Sent automatically when _fbp cookie is available.
GenderPresent in 25.28% of PageView events—normal if only available when logged in.
Postal CodeSent when user is logged in—expected.
Birth DateSent when user is logged in—expected.
CountrySent when user is logged in—expected.
First NameSent when user is logged in—expected.
Last NameSent when user is logged in—expected.
CitySent when user is logged in—expected.
Click ID (fbc)Sent when user comes from an ad (when _fbc exists)—hence low coverage.

Congratulations

You have completed the Meta CAPI configuration, verified that data is correctly sent to Meta, and ensured high data quality.

If you encountered any issues during this process, feel free to contact our support team.