Browser + server tracking

One conversion. One event ID. No double counting.

Use the Meta Pixel and Conversions API together without reporting the same lead or purchase twice.

Shared event ID Matching event name Retry-safe delivery
Browser eventLead · lead_7c91a2
Server eventLead · lead_7c91a2
One conversionMatching name + matching event ID
Browser+Server=Deduplicated
Where tracking breaks

Deduplication fails when the events cannot recognize each other.

Browser and server events are separate requests. They become one conversion only when the identifying details match.

Different event IDs

The Pixel and server create unrelated identifiers for the same conversion.

Different event names

A browser Lead and a server CompleteRegistration do not describe the same event.

The server generates a new ID

The form’s event ID never reaches the webhook or server function.

The browser fires twice

Multiple listeners or repeated renders send duplicate Pixel events before CAPI is involved.

Retries create new conversions

A failed request is retried with a fresh event ID instead of reusing the original.

Several tools send the same event

Native CRM tracking, GTM, plugins, and custom code overlap without a shared plan.

The controlled path

Move from a loose collection of signals to one traceable event.

Simple CAPI keeps the implementation focused: capture the useful data, connect it to the conversion, send it through a protected endpoint, and validate the result.

01

Generate one event ID

Create it at the conversion source before either browser or server delivery begins.

02

Send it with the Pixel event

Use the eventID option with the exact event name.

03

Carry it into the server request

Include the same value in the form, webhook, or backend payload.

04

Reuse it for safe retries

A retry should represent the same conversion, not invent a new one.

05

Inspect both event sources

Confirm browser and server events appear as connected in Events Manager.

Shared event ID example
const eventId = crypto.randomUUID();

fbq("track", "Lead", {}, {
  eventID: eventId
});

await sendToSimpleCAPI({
  event_name: "Lead",
  event_id: eventId
});
Credentials remain outside the installation code.
Practical coverage

Keep both delivery paths tied to the same conversion identity.

Use accurate values, preserve ownership, and validate the event before relying on campaign reporting.

Generate onceSend through both pathsKeep event names identicalReuse on retriesAvoid overlapping toolsValidate in Events Manager
Built for controlled implementation.Keep client credentials out of page code, collect only permitted data, and preserve a clear boundary between client configurations.
Review privacy principles
Frequently asked questions

The parts people usually discover after launch.

Resolve the implementation details before the campaign starts spending money.

What is Meta event deduplication?+

It is the process Meta uses to recognize that a browser Pixel event and a server CAPI event represent the same conversion.

Do browser and server events need the same event name?+

Yes. Use the same event name and the same event ID for the same conversion.

Where should I generate the event ID?+

Generate it as close as possible to the conversion action, then pass that exact value to both delivery paths.

Should retries use a new event ID?+

No. Retry the same conversion with the original ID. A new ID can make the retry look like another conversion.

Can I use only CAPI without the Pixel?+

Yes, but you lose browser-side signals that may be useful. Deduplication is only needed when both paths send the same event.

How do I find duplicate events?+

Inspect Events Manager Diagnostics, compare event source breakdowns, and review whether several scripts or integrations fire the same event.

Continue the setup

Related Meta CAPI guides.

Simple CAPI workspace

Build the event once. Hand off one controlled installation.

Create a client-specific Lead or Schedule endpoint and validate the exact event Meta receives.

Create your endpoint First eligible script is free after account verification.