# Conversion Deduplication

> Preventing one conversion from being counted twice. AnyTrack merges duplicates before it sends them, and an ad platform merges a browser event with a server event only when one system sends both with a shared event ID.

**Conversion deduplication** stops one real-world conversion from being counted twice. It happens in two places:

- **In AnyTrack, before sending.** The same conversion can arrive twice, for example from the Tracking Tag and from an integration webhook. AnyTrack merges the two into one conversion and sends it once.
- **At the ad platform.** When one conversion reaches a platform twice, from the browser pixel and from the server-side [Conversion API](/glossary/conversion-api), the platform merges the pair **only when both events carry the same event ID**.

## How AnyTrack sends conversions to each platform

- **Meta:** with the Conversion API on, the Tracking Tag fires only `PageView` on the Meta Pixel. Every conversion goes through the Conversion API, with an `event_id`. Meta receives each conversion once, so it has no pixel and server pair to merge.
- **TikTok:** AnyTrack sends each conversion from the TikTok pixel and from the Events API, with a shared `event_id`. TikTok merges the pair into one conversion.

## Why conversion deduplication only works within one system

Platform deduplication works only when the **same system** sends both events with the same event ID. Between two different vendors it structurally cannot work — each vendor generates its own `event_id`, and matching also relies on `external_id` and `fbp`, which likewise diverge. A purchase *may* happen to dedup if both vendors key on the order ID, but that is not guaranteed.

**The rule: one sender per pixel.** Disable every other system sending the same conversions — the store platform's native Meta data sharing, pixel apps, GTM containers, hardcoded pixel snippets, or a second tracking vendor. This is standard practice across the industry, not an AnyTrack limitation — competing vendors document the identical instruction for their own setups.

## Diagnosing double-counting when deduplication fails

Open Meta **Events Manager** and read each event's source: server conversions should show Conversion API as their only server-side origin. A second source visible on the same events is the double-counter.

## The cross-Property deduplication exception

AnyTrack does **not** deduplicate across [Properties](/glossary/property). In a [cross-domain](/glossary/cross-domain-tracking) funnel sharing one Meta pixel, Events Manager over-counts by design (the conversion-side Property sends all conversions; originated ones are also synced back and sent by the source Property) while Ads Manager still attributes correctly. A single pixel shared by two Properties tracking *separate, unrelated* domains does not duplicate — each Property sends only its own site's conversions.
