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

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 a cloud server to the selected Facebook pixel.

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. Facebook uses fbclid to 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 or those using Safari (or any other browser with intelligent tracking prevention algorithms). It is possible because the requests are sent from a server, not from the user browser. And third-party cookies will not be blocked. 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 to set up Facebook Conversion API?

We will use the Google Tag Manager server container to set up Facebook Conversion API. Inside the Google Tag Manager server container, you will need to set up server-side tracking for Universal Analytics and configure UA 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 
    • Universal Analytics base code and events that are working from the server.

In this article, I won’t cover how to create and set up a Google Tag Manager Web container. I will start with setting up the Google Tag Manager server container. In case you want to learn more about the Tag Manager server container and what benefits it offers, check this article. So, let’s get started.

    1. Follow all steps from this article to set up the Google Tag Manager server container and start sending Universal Analytics and GA4 from the server
    2. Go to Google Tag Manager Server Container. Download our custom Facebook tag template from the GitHub repository and import it into Google Tag Manager Server Container Tag Template.  Click on Templates -> Tag Templates -> New. Then, in the right upper corner, click on dots and choose import.
Import Tag
Import GTM Server Tag

3. Create Facebook Conversion API Tag inside Google Tag Manager Server Container. Choose Tag -> Click new -> Choose Facebook Tag that you’ve imported 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. Configure trigger for Facebook Conversion API base tag: click new trigger -> custom trigger -> event name equals page_view.

Filling the Test ID field, in your Facebook tag
trigger for facebook event

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

      • Inherit from GA client. In this case, we will match your Universal Analytics or GA4 events into Facebook standard events. If we can’t match the GA event into 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. 
      • 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 #5.

5. If you’ve selected the override option, you’ll have to use Universal Analytics (or GA4) events to trigger Facebook server events.  Facebook pageview event should trigger on a custom event page_view. To set up other events go to Google Tag Manager Server Container preview mode, make an action on your site that you want to track inside Facebook and check the event name that UA (or GA4) 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. And made a new trigger event name equals view_item.

facebook conversion API tag server container
Facebook conversion API tag standard event

6. You can pass custom parameters using fields Server Event Data Override and Custom Data. You can also 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. 

7.  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

facebook conversion api tag server container

8. 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 bother 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.

I would say that 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.

test facebook events deduplication
facebook event deduplication details

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? We create 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. 

send dataLayer from web tag manager to server
datalayer to server container

Conclusion: 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.

Want us to implement Facebook CAPI on your site? Find out how much it'll cost!

If you want to test what the GTM server is and how it works, please register an account.

If you need help setting up a GTM server account on your website, contact us right away!