How to Set Up Facebook Conversion API + Events Deduplication & Hash User Data

Jun 4, 2024
Feb 11, 2021
Also available in

Facebook Pixel allows you to track what users are doing on your site, collect remarketing audiences and create lookalikes. If the Facebook pixel is implemented correctly, it will feed relevant information to FB machine learning algorithms. FB ML will use pixel data to show your ads to people who are most likely to convert. 

For several years now, we could track events on the site via javascript code, Facebook SDK inside apps, or upload offline events. But how can you track users who installed Ad Blocker or track events outside the site? Or how can you extend a cookie lifetime? It can be done by implementing Facebook conversion API. This article will show you how to set up Facebook conversion API via Google Tag Manager Server Container.

What is Facebook Conversion API?

Let’s take a look at what Facebook Conversion API is and how we can use it to improve event tracking, attribution, and data collection on Facebook. Facebook Conversion API allows sending any events from your server to Facebook server.

Facebook CAPI has the same purpose as a Facebook pixel, but they have different technologies behind them. The policies and restrictions made FB CAPI more tailored to the needs of the modern tracking environment. As for Facebook Conversion API, it doesn’t involve the user’s browser for sending tracking information. Everything is done through the cloud server. It makes user data more secure and accurate.

If we take a closer look at the link of Facebook ads, we will see that at the end of almost any URL, FB appends its additional parameter fbclid. The pixel code on the landing page stores the value of this parameter in a cookie and then sends it along with any Facebook event. Along with click id (fbclid) Facebook uses browser ID (fbp). Fbp and fbc cookies helps FB determine what kind of user landed on your site and who converted. 

FB can match users through other parameters such as email, phone number, first/last name, etc. The more user data you send to Facebook Conversion API, the higher the match rate you receive.

What are the main benefits of Facebook conversion API?

Facebook server-side tagging or Facebook conversion API was available on Facebook for a couple of years. But starting from 2021, FB started to push Conversion API harder. If you have a dedicated Facebook representative helping with your Ad account, he will most likely call you and recommend setting up a Facebook conversion API. 

These are the most important reasons  to consider implementing Facebook Conversion API:

  1. It can help you track users who installed AdBlocker, those using Safari (or any other browser with intelligent tracking prevention algorithms) or people opted out of FB tracking in iOS 14/15. It is possible because the requests are sent from a server, not from the user browser. And third-party cookies will not be blocked. With the help of user parameters you send together with FB CAPI events, FB will match events to users in their database. As a result, you will have more reliable data. 
  2. An extended cookie lifetime. With the help of Facebook conversion API, you will extend the Facebook cookie lifetime to 6 months. If you are not using FB conversion API, Safari will limit cookie lifetime to 1-7 days.
  3. The Conversions API gives you more control over your data and a better understanding of the customer journey.
  4. You can use Facebook Conversion API to track events that happen not on the site. For example, phone calls or offline sales.

How it works

We will use the server Google Tag Manager container to set up Facebook Conversion API. Inside the Google Tag Manager server and web containers, you will need to set up server-side GA4, or use Data Tag/Data Client and configure events for those actions that you want to track with Facebook conversion API. 

To sum up, you will need these things to configure Facebook conversion API:

  • Configured Google Tag Manager web container
  • Configured Google Tag manager Server Container
  • Server-side Google Analytics 4 or Data Tag/Data Client to deliver data to sGTM.

In case you want to learn more about the Tag Manager server container and what benefits it offers, check this article

👇 This video shows how to set up Facebook Conversion API using Google Analytics 4

How to set up Facebook Conversion API

2. Send data to the server GTM container. The two most popular sending data to sGTM are Google Analytics 4 and Data Tag/Data Client.

3. Go to your Google Tag Manager Server Container. Add Facebook Conversion API tag from the Template Gallery. 

Facebook Conversion API tag for server GTM

4. Create a Facebook Conversion API Tag inside sGTM. Choose Tag -> Click new -> Choose Facebook Tag that you’ve added in the previous step.

Add your Facebook pixel ID and Facebook API Access Token (I recommend adding it as a variable since you will need these values for each Facebook event you want to track). If you don’t know your Facebook API Access Token, this documentation will help you find it.

Facebook conversion API inherit from client
Facebook conversion API inherit from client trigger

5. You have 2 options for configuring our Facebook conversion API tag: 

  • Override. In this case, you’ll need to set up FB events manually. We will cover how to manually set up FB server events in step #6.
  • Inherit from client. In this case, we will match your GA4/Data tag events into Facebook standard events. If we can’t match the GA event to the standard FB event, we will record it as a custom event. Everything will be done automatically, you don’t need to set up FB events. 

6. If you’ve selected the override option, you’ll have to use GA4 or Data Tag/Data Client events to trigger Facebook server events.  The Facebook pageview event should trigger on a custom event page_view that was claimed by a specific client (for example, if you chose to use GA4 as a data source for the Server GTM, then you should use the page_view event when the client name equals GA4).

To set up other events, go to sGTM preview mode, make an action on your site that you want to track inside Facebook, and check the event name that UA (or GA4, or Data Tag) sends to your Server Container.

On the screenshot below I want to set up a Facebook event ViewContent when someone opens the product page on my site. To do that I created a new tag inside the Server container, set it to override, selected standard event ViewContent, added API Access Token, Facebook Pixel ID. I also added User Data and Events Data. And made a new trigger event name equals view_item_list and Client Name equals GA4.

Facebook conversion API tag example
Facebook conversion API trigger example

7. You can pass custom parameters using fields Server Event Data Override, User Data and Custom Data. You can send users data to increase the matching score on Facebook via field User Data, note that users’ information that you want to send to Facebook conversion API should be hashed. Our Facebook tag automatically hashes needed data.

You can also enable Event Enhancement to use HTTP only secure cookie (gtmeec) in order to enhance event data. When this feature is enabled tag will store user data in cookies and enrich events with user data when user data is not available. This way you can increase event match quality and as the results conversion attribution to campaigns. 

enable event enhancement in facebook capi tag

8.  When you are done setting up all your Facebook events, open Google Tag Manager debug mode and test if Facebook events work correctly. You can also go to your Facebook tag inside the server container and add Facebook test ID. You can find the test ID inside the Facebook events manager under the test events tab. For more instructions on how to test Facebook conversion API, check this article. 

test Facebook conversion API

9. Once you’ve set up and verified that Facebook conversion API works correctly, you need to remove FB browser tracking or set up event deduplication. Otherwise, your events will be duplicated. 

Event deduplication for Facebook pixel and conversions API events

Facebook recommends using both Facebook pixel and Conversion API. But if your site will send the same events using both the pixel and Conversions API, events may be duplicated since FB will receive the same information from the browser and the server.

Facebook has a deduplication feature. If they know that the browser and the server events are identical, they can keep only one.

Setting up event deduplication is a must if you want to send all events from both the server and the browser. Without event deduplication, your data won’t be accurate, and it may affect your Facebook campaigns.

To set up FB Conversion API deduplication, you need to send unique event IDs from the browser and the server. The same events from both the browser and the server should have the same event ID.

We created a custom variable that generates a unique ID for each event. You can add it to your web container using this link to the template gallery. Use this variable to send event ID for Facebook pixel inside the web container and Facebook conversion API using server container.  We have a more detailed description of how to set Facebook event deduplication

You can pass unique event ID from the web container to the server container using Google Analytics custom dimension or Data Tag and Data Client

If deduplication is set up correctly, you should see it inside the events manager testing tool. And after you publish all changes to the production, you can click on the event details to see the number of events Facebook received from the browser and the server. How many events they processed and deduplicated.

Facebook event deduplication
Facebook event deduplication results

Send user parameters using Facebook conversion API

To match users who visit your site with their database, Facebook uses User Data for Conversion API. They require to send at least one of the user parameters inside the Facebook conversion API events. 

FB requires to hash some parameters before sending it to Facebook. The more user parameters you send to Facebook, the higher chances they will match a user and the higher event match score you’ll get. 

Sending user parameters from your site to Facebook is a sensitive topic since you’ll share users’ data with 3rd party service. So before sending this data to FB, make sure it complies with the privacy policy. 

If you decide to send user parameters to Facebook CAPI, then where will you get it? You can use either Google Analytics or a Data Tag for the Google Tag Manager web container and Data Client for the server container to address this issue. These two should work together; Data Tag is created to send data from the web container to the server container, while Data Client listens to this tag and retrieves information. We have a more detailed description of sending data from the Google Tag Manager web to the server container.  

Data Tag will automatically hash user data that should be hashed according to Facebook requirements. If you use our Facebook Conversion API tag, Data Tag and Data Client, the Facebook tag will automatically process all needed events and parameters from the Data Tag. No need to send it manually. Just make sure you set up all triggers and variables correctly. With the Data Tag and Data Client’s help, you can send DataLayer from the Google Tag Manager web container to the event data inside the server container. 

data tag send data automatically 


That’s it. I hope you’ve successfully moved Facebook tracking to the server. Facebook Conversions API is a great tool to get a better understanding of who your customer is, see the full customer journey up until the conversion takes place, and feed more data about your users to Facebook machine learning algorithms.

Host your GTM server at Stape