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 Facebook Machine Learning algorithms (FB ML). 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.
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.
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:
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:
We have a blog post about the Tag Manager server container and what benefits it offers on our blog as well.
👇 This video shows how to set up Facebook Conversion API using Google Analytics 4
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.
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 (we 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.
5. You have 2 options for configuring our Facebook conversion API tag:
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 GA4 or Data Tag sends to your Server Container.
On the screenshot below we want to set up a Facebook event ViewContent when someone opens the product page on our site. Make sure you also send with your GA4 event / Data tag from the web container the additional data you want to use for the server event. The example below also uses standard FB ecommerce parameters and user data.
To do that we created a new tag inside the Server container, set it to override, selected standard event ViewContent, added API Access Token, Facebook Pixel ID. We also added User Data and additional . And made a new trigger event name equals view_item and Client Name equals GA4.
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.
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 tips on how to easily implement Facebook conversion API, check this article.
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.
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.
Make sure your Facebook web event tags and your GA4 tags (or Data tag) are running on the same triggers, otherwise they will have different event id's.
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.
Sometimes there are glitches with Facebook test events because of which deduplication is not displayed in the interface, in this case check that event id on events are the same, if so - deduplication will work without problems.
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, but you don't have to worry about that, Facebook's tag will hash out all the data automatically before it's sent.
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.
Ideally you should have the user data added to the data layer, but if this is not possible - try to collect it from the page using custom javascript code and send it along with the conversions or events you are interested in.
For example all Stape plugins for CMS (for Shopify, WordPress, Magento, BigCommerce) add a data layer which also contains user data.
So you can easily take it from data layer and add this data to Facebook events on a web container:
Then add the transfer of the required data to the server container (in payload GA4 or Data tag - depending on what you use):
And finally also add this data to your server-side Facebook event:
This way you will achieve better match quality of your Facebook events and as a result potentially improve the performance of your advertising campaigns as Facebook will better understand your audience and will better optimise your advertising campaigns.
That’s it. We 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.
Stape has lots of options! Click on Try for free to register and check all the benefits.