Server-Side

How Meta CAPI Event Deduplication Works

By Hira Ads Pro·2 min read·October 12, 2026

When you send the same conversion through the Meta Pixel and the Conversions API, Meta needs to know it is one lead, not two. That is deduplication. Get it wrong and every lead is counted twice, and campaign optimisation drifts.

How Meta matches events

Meta treats a browser event and a server event as duplicates when:

  • The event name matches (for example both are Lead)
  • The event ID matches: eventID in the Pixel and event_id in the Conversions API

Matching events must also arrive within Meta’s deduplication window, so send server events promptly.

Generate one ID per action

Create the ID once, at the moment the action happens, and reuse it for both sends:

// Browser: after the form is accepted
const eventId = 'lead_' + leadId;
fbq('track', 'Lead', { content_name: 'quote_request' }, { eventID: eventId });
dataLayer.push({ event: 'generate_lead', event_id: eventId });
// Server: same ID in the Conversions API payload
{
  "event_name": "Lead",
  "event_id": "lead_123",
  "event_time": 1760000000,
  "action_source": "website",
  "user_data": { "em": ["<sha256 email>"], "fbp": "fb.1....", "fbc": "fb.1...." }
}

Using the lead or order ID from your database is ideal: it is unique and available on both sides.

Common mistakes

  • Different IDs: the browser generates a random ID and the server generates another
  • Different event names: Lead in the Pixel, lead or generate_lead in CAPI
  • The ID is put in the wrong place: inside custom data instead of the event ID field
  • Server events sent hours later in a batch, outside the deduplication window
  • Two Pixels or two CAPI integrations (for example a plugin and server-side GTM) both sending the same event

How to test

  1. Open Events Manager → Test Events for your dataset.
  2. Submit a test lead on your site.
  3. You should see the event from both browser and server, with one marked as deduplicated.
  4. Check the Overview tab over the next day: the event should show both integrations with a healthy deduplication rate.

Do not forget match quality

Deduplication stops double counting, but server events still need good customer information parameters to be matched to people. Send hashed email or phone where you have consent, plus fbp, fbc, IP address and user agent.

Read the wider context in Meta Pixel vs Conversions API, or have it set up as part of conversion tracking.

Want this set up properly on your site?

Request an audit and get a clear plan before any changes are made.

Request an Audit →