Work eventabee Guides How event deduplication works

How event deduplication works

Browser and server events share an event_id — destinations dedupe automatically.

Updated

Operational

The point of running a server-side pipeline alongside browser pixels isn’t to replace the browser events — it’s to catch the ones the browser drops. When both paths succeed, destinations need to see it as one event. That’s what event_id is for.

The pattern

  1. The Web Pixel generates an event_id (UUIDv7) and stamps every browser-side event with it.
  2. The same event is sent server-side via eventabee with the same event_id.
  3. Destinations (Meta, Google, TikTok, Pinterest, Snapchat) dedupe on event_id when they see both.

If the browser event fails (blocker, ITP, network), only the server event arrives. The destination sees one event. Either way, the destination counts the conversion once.

What you need to do

Nothing, as long as you use eventabee’s Theme App Embed. The embed’s Web Pixel and the server-side ingest share event IDs automatically.

If you have an additional browser-side tag (say, Meta’s native pixel installed by your theme), you’ll get duplicates unless you disable either the theme-side tag or eventabee’s browser fan-out for that destination.

How to check dedup is working

  1. Open a browser you control, load the storefront, and trigger a purchase.
  2. In Meta’s Events Manager → Test Events (with test code on both your browser pixel and eventabee), you’ll see two events — one from browser, one from server — sharing an event ID. Meta marks them as deduped.

Per-destination behavior

  • Meta: dedupes on event_id within a 48-hour window.
  • Google: dedupes on transaction_id for purchase events; other events dedupe client-side.
  • TikTok: dedupes on event_id for 10 minutes.
  • Pinterest: dedupes on event_id for ~20 minutes.
  • Snapchat: dedupes on event_id within a short window.

eventabee’s event IDs are generated once and reused across paths, so these windows don’t bite you in normal operation.

Edge cases

  • Refunds reissued as new orders. Shopify treats certain exchanges as a new order. eventabee mints a new event_id, which is correct — that’s a new conversion.
  • Replays. Replayed events keep their original event_id, so replaying a week-old purchase doesn’t double-count at the destination.