Skip to content

Server-side events · Platform reference

Reddit Conversions API (CAPI) checker

Reddit's Conversions API sends conversion events from your server to a Reddit Pixel ID, with match keys such as the Reddit click ID, IP address and email. Events must arrive within seven days. When the Reddit Pixel sends the same events, they need a shared conversion ID to be deduplicated. Events most often show as received but not attributed because a conversion ID was reused across different events (Reddit marks them as duplicates), the event was sent outside the dedup window, or a test ID was left on in production.

Read from the official documentation on 9 November 2026. Sources are listed at the end.

Check your own setup

rdt_cid rides on your landing URL. Paste the curl -sIL output of your tracking link into our redirect chain checker and it shows whether rdt_cid survives every hop to the final page. If it doesn't, your server has no click ID to send to Reddit. It doesn't validate the Reddit CAPI JSON payload, conversion IDs or test IDs. Our CAPI event checker reads Meta payloads only.

Open the Redirect Chain Checker

Endpoint and authentication

POST https://ads-api.reddit.com/api/v3/pixels/{pixel_id}/conversion_events (body: {"data": {"events": [...]}})

Conversion access token generated in Events Manager under the business that should receive the conversions. Reddit recommends it over a developer access token because it doesn't expire. The Pixel ID must match the business account's Pixel ID

Standard event names

In a v3 payload the event goes in type.tracking_type, in UPPER_SNAKE_CASE. v2 and the help center use the PascalCase names (PageVisit, Purchase); v3 rejects those spellings.

EventUse it for
PAGE_VISITv2: PageVisit. Someone lands on a page
VIEW_CONTENTv2: ViewContent. Someone views a specific page or piece of content, such as a product page. Reddit suggests sending a product ID
SEARCHv2: Search. Someone submits a search on your site
ADD_TO_CARTv2: AddToCart. Someone adds an item to the cart. Reddit suggests sending a product ID
ADD_TO_WISHLISTv2: AddToWishlist. Someone adds an item to a wishlist
PURCHASEv2: Purchase. Someone completes a purchase. Reddit suggests sending product ID, currency and value
LEADv2: Lead. Someone submits information showing interest
SIGN_UPv2: SignUp. Someone submits a sign-up, registration or subscription form
CUSTOMv2: Custom. Set type.custom_event_name to your own name: case-sensitive, up to 64 UTF-8 characters, and it must not match a standard event. Only the 20 most recent custom events show on the dashboard. For dedup, the custom name must match on Pixel and CAPI

Required and recommended fields

FieldWhat it needs
event_atRequired. Integer Unix epoch in milliseconds (v3; v2 event_at_ms is gone). Events must be sent within seven days after they occur
action_sourceRequired in v3. Where the event happened: WEBSITE, APP, PHYSICAL_STORE or OTHER. PHYSICAL_STORE events must not include device identifiers, click ID, UUID or MAIDs
type.tracking_typeRequired. One of the UPPER_SNAKE_CASE values above; CUSTOM also needs type.custom_event_name
click_idThe Reddit click ID. Strongly recommended. If it is missing, v3 reads the click ID from event_source_url
event_source_urlRecommended for WEBSITE events: the page URL, with the click ID in it. Used for domain detection and as the click ID fallback
metadata.conversion_idA unique ID per conversion (e.g. order number), the same on Pixel and CAPI. The dedup key; can be sent unhashed or SHA-256 pre-hashed
metadata.value / metadata.currency / metadata.item_countvalue is a double in the base unit of the currency (v3; value_decimal is gone). Strongly recommended for revenue events
user.data_processing_optionsLimited Data Use: {"modes": ["LDU"], "country": "...", "region": "..."}; country is required when set (replaces v2 user.opt_out)

Match keys and hashing

KeyNormalise and hash
user.emailUnhashed or pre-hashed. To pre-hash: lowercase, remove dots from the local part, drop everything after a plus sign, then SHA-256 as 64 lowercase hex ([email protected] hashes like [email protected])
user.phone_numberE.164 like +15554441234. To pre-hash: drop any extension, remove every non-digit, make sure it starts with +, then SHA-256 as 64 lowercase hex
user.ip_addressRaw. Reddit says to pass IP at a minimum for device matching
user.user_agentRaw
user.screen_dimensionsObject with width and height
user.idfa / user.aaidStandard format with dashes; if pre-hashed, IDFA uppercase hex and AAID lowercase hex before SHA-256. Placeholder zero IDs are accepted with a warning
user.external_idAdvertiser-assigned, unique to one user; Reddit recommends sending it with the click ID
user.uuidGenerated by the Reddit Pixel. Send it if you also run the Pixel; needed for session-based dedup

Click ids

Click idWhere it comes from
rdt_cidThe Reddit click ID arrives on the landing URL as ?rdt_cid=. Reddit recommends sending it with every conversion event. Reddit says to persist it for CAPI

Deduplication

Time limits and batch sizes

How to test before you trust it

Why events arrive but don't attribute

Sources

Platforms change these rules without notice. If a source says something different from this page, the source wins.

Other platforms

All platforms