Deduplicate Pixel and Server Events

If you are already sending events via Facebook Pixel, there are different ways to add server events, which are sent through the conversions API. For example:

  1. You can send different types of events via Pixel and conversions API. For example, you send Purchase events via Pixel, and AddToCart events via conversions API. This way, you separate events completed on the person's browser from events completed outside the browser. If you choose this option, you do not need to worry about event deduplication.
  2. You can send all of your events via both Pixel and conversions API. For example, you send all Purchase and AddToCart events via both Pixel and conversions API. This way, any events missed by the Pixel can be captured via conversions API. In this case, see the following instructions so we can deduplicate your events.

Event Deduplication

Facebook tries to deduplicate identical events sent through the Facebook Pixel and the conversions API. We determine if events are identical based on their ID and name.

For an event to be deduplicated:

  1. In corresponding events, a Facebook Pixel's eventID must match the conversion API's event_id.
  2. In corresponding events, a Facebook Pixel's event must match the conversion API's event_name.

Once your event fulfills both conditions, we keep the first one and remove the following one. If a server and browser event arrive at approximately the same time (within 5 minutes of each other), we favor the browser event.

Deduplication Best Practices

For better matching, we need accurate information from your events coming through both Pixel and conversion API:

  • The eventID inside the optional eventData parameter should be a unique value. Depending on your pixel implementation, you can use:
    • track: send the event for all pixels on the page,
    • trackSingle: send the event for one pixel,
    • an image pixel tag with the eid parameter.
fbq('track', 'Purchase', {value: 12, currency: 'USD'}, {eventID: 'EVENT_ID'});
fbq('trackSingle', 'SPECIFIC_PIXEL_ID', 'Purchase', {value: 12, currency: 'USD'}, {eventID: 'EVENT_ID'});
<img src="https://www.facebook.com/tr?id=PIXEL_ID&ev=Purchase&eid=EVENT_ID"/>
  • The eventID from Facebook Pixel must match the event_id in the corresponding event coming from the conversion API.

  • If we find the same server key combination (event_id, event_name) and browser key combination (eventID, event) sent to the same pixel ID within 48 hours, we discard the subsequent events.

  • If you are sending us your events via both browser and Conversions API along with matching event_ids, keep in mind that events are only deduplicated if they are received within 48 hours of when we receive the first event with a given event_id.

Event Merging

If you are sending events via browser and server, you must first setup the deduplication process described above. Once you have that in place, you may be eligible for an additional feature: merging events.

Event merger leverages event_id and event_name to combine browser and server events, as long as they have arrived within 10 minutes of each other. Events that arrive more than 10 minutes after each other are not merged.

Event merger can get better value for a select set of advertisers. To enable this feature, contact your Facebook representative.