Most. Help

Reddit Conversions API Setup: Pixel ID, Token, and Deduplication

Published Sep 13, 20269 min readIntermediate
Hand-drawn round chat-window sending an orange event tag along a dotted server pipe into a funnel, meaning Reddit Conversions API setup
What you'll learn
  • Where to get the Reddit Pixel ID and a non-expiring conversion access token
  • How to build a valid v3 conversion event: endpoint, payload, and action source
  • Which match keys Reddit matches on, and how to hash them correctly
  • How to deduplicate pixel and server events with conversion_id
Intermediate

Reddit Conversions API Setup: Pixel ID, Token, and Deduplication

What Reddit's Conversions API Covers

The Reddit Conversions API setup is Reddit's documented path for server-side delivery: your server posts conversion events directly to Reddit instead of relying on a browser pixel. Reddit documents it for web, app, and offline event sources, which matters for affiliate funnels where the conversion lands on an offer page you do not control - the tracker records the conversion, and the server event is what carries it to Reddit. The general background on why this channel survives browser restrictions is in server-side tracking.

Three constraints from Reddit's own documentation shape any setup. First, events must be sent within seven days after they occur, so a delayed postback is recoverable but not indefinitely. Second, there is a rate ceiling of 1,000 requests per second, 10,000 events per second, and 1,000 events per request - far above what a single funnel produces, but relevant when you batch a tracker's backlog after downtime. Third, if you run the Reddit Pixel alongside the API - which Reddit recommends for best performance - event deduplication is required, not optional.

Get the Pixel ID and a Conversion Access Token

Open Reddit's Direct Integration guide and select Configure data source, then Conversions API and Set up manually. If neither the pixel nor the API exists yet for the business account, Reddit offers a Conversions API Only path instead. Copy the Pixel ID from the same screen - it identifies which business account receives the conversions, and it becomes part of the endpoint URL.

The token is generated on the same screen with Generate Access Token. Give it a name, generate, and copy it immediately: Reddit warns that the value cannot be retrieved later, and a lost token means generating a new one. Reddit's best practices recommend this conversion access token over a developer access token because it is non-expiring and simpler to generate - no two-month rotation schedule like the cost-sync tokens in Meta's ecosystem.

Store both values server-side. They will sit in your delivery script or tool configuration, and a token in a client-side bundle is a credential leak, not a setup shortcut.

Post the Event to the v3 Endpoint

The target is https://ads-api.reddit.com/api/v3/pixels/<pixel_id>/conversion_events, where the Pixel ID slots into the URL. The request authenticates with the conversion access token as a bearer token - Reddit's reference sample sends an Authorization: Bearer <token> header with Content-Type: application/json. A well-formed request returns a confirmation message about successfully processed conversion events. Each entry in the events array carries:

  • event_at - the conversion timestamp, which is what the seven-day window applies to;
  • action_source - where the conversion happened, such as WEBSITE, PHYSICAL_STORE, or app sources; it drives source-level reporting, and Reddit notes that PHYSICAL_STORE events should not carry device identifiers;
  • type - an object carrying the tracking_type field, such as PURCHASE or LEAD, or CUSTOM with a custom_event_name of up to 64 case-sensitive UTF-8 characters (only the 20 most recent custom events show on the dashboard);
  • event_source_url - recommended for WEBSITE events: Reddit extracts the domain from it for reporting, and a click ID in the URL serves as a fallback when the click_id parameter is missing.

The whole payload nests the events array under a top-level data object - the shape comes straight from Reddit's reference sample, trimmed to the fields this guide covers:

json
{
  "data": {
    "events": [
      {
        "click_id": "3184742045291813272",
        "event_at": 1514764800000,
        "action_source": "WEBSITE",
        "event_source_url": "https://www.example.com/checkout?rdt_cid=3184742045291813272",
        "type": { "tracking_type": "PAGE_VISIT", "custom_event_name": "PromotionEvent" },
        "metadata": { "conversion_id": "H72B9A4YXQ", "currency": "USD", "value": 10.99 },
        "user": { "ip_address": "192.0.2.1", "external_id": "7c73f2ae-a433-4d7b-9838-f467da98f48e" }
      }
    ]
  }
}

Match keys travel inside user, revenue fields and conversion_id inside metadata - the same objects the bullets above reference.

Note that tracking_type values are among the fields that changed between CAPI v2 and v3 - Reddit maintains a migration guide, and sending the same events through both versions causes double-counting, so pick one version and keep the delivery pipeline consistent.

Match Keys: What to Send and How to Hash It

Match keys are the identifiers Reddit uses to tie a conversion back to an ad view or click. Reddit's guidance is explicit: share as many as possible, strongly recommends the IP address and the click ID, and suggests adding email, phone number, and user agent. The click ID (rdt_cid) is appended to your landing page URL when a user clicks a Reddit ad, so the funnel needs to capture it at click time and the delivery layer must pass it as click_id - the same persistence discipline as fbclid handling described in link tracking and click ID loss.

Identifiers may go unhashed or pre-hashed, and if you hash, the rules are strict:

  • Email: lowercase, strip dots from the local part, strip anything after the plus sign, then SHA-256 - Reddit's example shows [email protected] and [email protected] producing the same hash.
  • Phone: country and area code required, extension removed, all non-numeric characters stripped, leading + kept, then SHA-256.
  • Mobile IDs: an IDFA should be uppercase hex digits with dashes, an AAID lowercase with dashes, before hashing.
  • Every hash is 64 lowercase hex digits.

The canonicalization differences between platforms trip up multi-network setups; the general normalization rules are the same as those in CAPI user data hashing and normalization, but verify each network's specifics instead of reusing one payload builder blindly.

Deduplication: conversion_id Before Session Matching

Running both the Reddit Pixel and the Conversions API is the recommended configuration, and the same conversion often fires from both sides. Reddit's deduplication job runs hourly and marks the lower-quality event as a duplicate: the event with more metadata and match keys wins, and among equals the later one is dropped.

The conversion ID method is preferred: generate a unique conversion_id per distinct conversion - an order number for purchases, or a hash of timestamp, event type, and key parameters - and pass the same value from both the pixel and the server event. Reddit warns that reusing one ID across too many events marks real conversions as duplicates and costs attribution.

Without a conversion ID, Reddit falls back to session-based dedup: a session is a stream of events from one user with no more than five minutes between consecutive events, and Reddit picks a single winning source per session. That method requires a UUID or external ID on all pixel and API events, and it only works across the same action source channel. Two practical deadlines apply either way: events must arrive within two days for deduplication to process them, and the dedup log stays queryable for seven days. The mechanics are the same family as pixel and CAPI event deduplication in Meta's ecosystem - shared key, consistent naming, both channels live.

Validate Before Spending

The official guidance is to verify events before sending production traffic. Events with malformed but recognizable values - a phone number with spaces, a display-name email - are still accepted, but warnings appear in the Events Manager event-testing view, and each warning is a match key working below strength. The event deduplication panel shows whether your conversion_id discipline is actually collapsing pairs instead of silently double-counting.

For the delivery pipeline itself, Reddit documents error handling for bad requests, authorization failures, and rate limits; a 429 response means back off and batch rather than retry aggressively. The validation habit is the same as in Meta's ecosystem - test events before scaling - and it catches the classic failure modes early: wrong Pixel ID, a stale token, or a conversion_id scheme that only one side of the pair sends.

If you would rather not own this pipeline, MOST delivers tracker postbacks to Reddit's Conversions API - alongside Meta, TikTok, Pinterest, Snapchat, and OpenAI - handling hashing, retries, and deduplication per network. For a single landing and a manual workflow, the free Pixel Activator covers Reddit delivery the same way.

Frequently asked questions

Sources

Sources

Was this guide helpful?
Author
Most Team
Справочная служба

Официальные руководства и глоссарий для платформы Most и Активатора пикселей.

Topic
Reddit Conversions API: The Complete Guide
Main article of the topic
Related articles

Related guides