Meta CAPI deduplication
without guesswork

If you send events multiple ways, duplicates are easy to create. Kickin dedupes duplicates and counts only unique successful sends.

14-day free trial. No credit card required.

Works with

GA4
Google Analytics
M
Meta
G
Google Ads

The common failure mode

Teams add CAPI and suddenly reporting looks inflated — or worse, inconsistent. The problem usually isn't "CAPI is bad." It's that event identity and deduping aren't handled cleanly.

How Kickin handles it

Unique sends counted

We count a server-side event when it successfully sends a unique event to Meta or GA4

Auto deduplication

Duplicates are deduped automatically (not counted)

Failed sends excluded

Failed sends and retries are not counted

Why this matters

Clean deduping keeps your signal usable and prevents "phantom improvements" in platform dashboards.

How event_id-based deduplication works

Meta uses event_id to match browser events with server events. Here's the mechanism:

1. Generate a unique event_id

When the conversion happens (e.g., purchase confirmation), create a unique identifier. This should be the same ID used by both the pixel and CAPI.

event_id: "order_12345_1707500000"

2. Send via both channels

The pixel fires client-side with the event_id. CAPI sends server-side with the same event_id. Meta receives both and matches them.

3. Meta dedupes automatically

When Meta sees the same event_id + event_name combination within a 48-hour window, it counts as one conversion — not two.

Common CAPI deduplication mistakes

These are the patterns we see most often when deduplication goes wrong — and how to fix them.

❌ Different event_ids

Pixel uses order ID, CAPI uses a UUID. Meta sees two different events.

✓ Use the same ID generation logic for both

❌ Missing event_id on one channel

CAPI sends event_id, but the pixel never included it. No match possible.

✓ Ensure both pixel and CAPI include the event_id parameter

❌ Timing gap too large

Pixel fires immediately, CAPI sends 3 days later. Outside the 48-hour window.

✓ Send CAPI events as close to real-time as possible

❌ Event name mismatch

Pixel fires "Purchase", CAPI sends "purchase". Case sensitivity matters.

✓ Use identical event names (case-sensitive match)

See also: Server-side tracking, Meta pixel monitoring, Pricing

Frequently Asked Questions

Ready for clean CAPI without the headaches?

Start your 14-day free trial and see deduplication in action.