Complete Guide to Facebook Advanced Matching

Cross device tracking is still one of Facebook’s biggest advantage over other competitors. Facebook uses cookies in combination with the Facebook ID to identify users across devices, moreover, on mobile devices they utilize the device identifiers such as Apple’s Identifier for Advertising (IDFA) and Android’s Advertising ID.

However, there are limits to this approach, users might be logged out of Facebook or disable browser’s cookies. In this case, Facebook ads system will lose tracking any website actions users perform, and this is where the new feature “Facebook Pixel Advanced Matching” comes in.

What’s Facebook Advanced Matching ?

It’s a feature in the Facebook smart pixel which enables advertisers to leverage their own customer data such as email address, phone number, etc. So, advertisers can report on more conversions, optimize their ads against more conversion data, and reach more people on Facebook with their website custom audiences or dynamic ads.

How does Facebook Advanced Matching work?

You pass the customer identifiers such as email, phone number that you collect from your website during the check-out, account sign-in or registration process as parameters in the pixel. Facebook will then use this information to match pixel events with Facebook users when the Facebook cookie is not present on the browser that fires the pixel.

To enable this feature, modify the default FB pixel code to pass data into the pixel init call.

In your base pixel code, you will see this line:-

fbq('init', '<FB_PIXEL_ID>');

Replace it with the below code:-

fbq('init', '<FB_PIXEL_ID>', { 
    em: '{{_email_}}',
    ph: '{{p_hone_number_}}',
    fn: '{{_first_name_}}'


{{ _email}} and the rest of info should be replaced with the relevant server variables.


What are the benefits of using Facebook Advanced matching?


facebook-dogecoin-tipping-300x2561. More accurate numbers, you can now track the actions like purchases are driven by logged out users and cookies disablers.

2. More accurate cross-device measurement. For example, some users might click on your Facebook ad and convert from the different device where they are not logged in Facebook, in this case you lose tracking that user.

3.Advanced retargeting strategies, you can now exclude or include users based on their behavior on the website with more accuracy.

Also, according to Facebook, Advanced Matching has helped businesses increase attributed conversions by 10% and increased campaign reach by 20% through retargeting.

What are the drawbacks of Facebook advanced matching?


facebook_like-300x2561.Advanced matching worked only for users who are logged in your website.

2.Users might register through your website with different data than Facebook data. In this case, Facebook won’t be able to achieve a match between the two data sets.

Overcoming the limitations of Facebook advanced matching?




To achieve a match between your website user data matches Facebook user date,  you can use the Facebook login for websites and apps. Facebook Login is a secure, fast and convenient way for people to log into your app or website.

Data Privacy

According to Facebook, any customer data you pass through the Facebook pixel is hashed locally on the browser before it goes to the Facebook servers for matching. This hashing process turns your data into short encrypted messages that cannot be tampered with. We use these hashes to match pixel events with people on Facebook. Then Facebook deletes all matched and unmatched hashes immediately after the matching process ends. We do not collect or store any personally identifiable information on our servers.

The Facebook pixel uses secure https connection, so that any data transmitted from the browser will make it to our servers safely.


  1. Do you know how or otherwise of any good resources that give examples of how to determine the relevant server variables. For example if you are using a standard html form how can I find out what the variable names are? And what about if you are using Google Tag Manager?

    1. Hi Nathan,

      Thanks for your comment.

      You need a write a code to retrieve the id from your backend and pass to the frontend, I think you should consider a developer’s help if you don’t have a coding background, but it should be so simple.

  2. Hi,i am calling completeRegistration event at the time of registration so i get data such as email ,name etc only at that time ,so here they you have mentioned to pass email ,name etc at the time of initialization there a way so that i can pass a placeholder at the of init and then on event i.e completeRegistration just replace it with the actual email id which i am getting from response?