Most. Help

Reddit Conversions API: The Complete Guide

Published Sep 13, 202610 min readIntermediate
Hand-drawn round chat window sending an orange event tag along a dotted server pipe into a funnel with a check mark, meaning the Reddit Conversions API
What you'll learn
  • What the Reddit Conversions API does and how Reddit treats its server events
  • Which credentials, fields, and match keys a working v3 event requires
  • How deduplication, testing, and error handling fit together
  • Where to look when events are rejected, counted twice, or mismatched
Intermediate

Reddit Conversions API: The Complete Guide

The Reddit Conversions API is Reddit's server-side channel for conversion data: your server, tracker, or CRM posts events straight to Reddit instead of relying on a browser tag. This page is the front door to our Reddit CAPI cluster: what the API does, what a working event needs, how deduplication and validation fit together, and where each specific problem - a rejected payload, a double count, a mismatched report - has its own deep-dive guide.

What Is the Reddit Conversions API?

The Reddit Conversions API is Reddit's documented intake for conversion events sent directly from your systems. Reddit describes it for web, app, and offline event sources, which makes it the channel that still reports conversions an affiliate funnel produces on offer pages you do not control - the tracker records the sale, and the server event is what carries it to Reddit. Once delivered, server events feed the same measurement and optimization layer as Reddit Pixel events.

Reddit imposes three shape-giving constraints on any integration. Events must be sent within seven days of the conversion, so a delayed postback is recoverable but not indefinitely. The rate ceiling sits at 1,000 requests per second, 10,000 events per second, and 1,000 events per request - far above one funnel's volume, relevant only when batching a tracker's backlog. And when the Reddit Pixel and the API both report the same events - the configuration Reddit recommends - event deduplication is required, not optional.

The screen-by-screen setup path, token mistakes included, lives in the dedicated guide: Reddit Conversions API setup.

What You Need Before Setup

Reddit's setup needs exactly two values. The Pixel ID identifies the data source that receives your conversions and slots into the endpoint URL. Authorization comes from the conversion access token, which Reddit's best practices recommend over a developer token because it is non-expiring and simple to generate, and it is shown only once at creation, so copy it immediately.

Both values live in Reddit's Events Manager under Configure data source, Conversions API, Set up manually - the walk with screenshots lives in Reddit Conversions API setup, and the token and Pixel ID have their own credentials guide. Store them server-side: a token in a client-side bundle is a credential leak, not a shortcut.

Sending Events: The v3 Payload

The target is https://ads-api.reddit.com/api/v3/pixels/<pixel_id>/conversion_events, authenticated with the token as a bearer header. Each entry in the events array carries the fields a conversion needs, and Reddit's reference sample shows the shape:

  • event_at - the conversion timestamp; the seven-day window applies to it;
  • action_source - where the conversion happened, such as WEBSITE, PHYSICAL_STORE, or an app source; PHYSICAL_STORE events should not carry device identifiers;
  • type - an object holding tracking_type (PURCHASE, LEAD, PAGE_VISIT, 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);
  • metadata - revenue and identity for the conversion: conversion_id, currency, value;
  • user - match keys such as ip_address and external_id;
  • event_source_url - recommended for WEBSITE events: Reddit extracts the domain for reporting, and a click ID in the URL serves as a fallback identifier.
json
{
  "data": {
    "events": [
      {
        "click_id": "3184742045291813272",
        "event_at": 1790000000000,
        "action_source": "WEBSITE",
        "event_source_url": "https://www.example.com/checkout?rdt_cid=3184742045291813272",
        "type": { "tracking_type": "PURCHASE" },
        "metadata": { "conversion_id": "order-8842", "currency": "USD", "value": 49.9 },
        "user": { "ip_address": "192.0.2.1", "external_id": "7c73f2ae-a433-4d7b-9838-f467da98f48e" }
      }
    ]
  }
}

A well-formed request returns a confirmation message about successfully processed conversion events; anything else is a documented error code with a documented fix - the error-handling section below. The field-by-field walkthrough lives in this cluster's events and parameters deep-dive.

Match Keys: What Reddit Matches On

Match keys are the identifiers Reddit uses to tie a conversion back to an ad engagement, and Reddit's guidance is explicit: share as many as possible, strongly recommend the IP address and the click ID, and add email, phone number, and user agent. A UUID is recommended when integrating CAPI with the pixel. Identifiers may go unhashed or pre-hashed; hashed values follow strict canonicalization - lowercase email with dots and plus-suffixes stripped, digit-only phone with country code, 64 lowercase hex digits for every digest.

The click ID deserves its own discipline: Reddit appends rdt_cid to your landing page URL at click time, and the delivery layer must pass it as click_id. Where each identifier sits, how canonicalization differs per network, and what silently fails are covered in match keys, the general discipline lives in CAPI user data hashing and normalization, and the click-ID persistence chain is in link tracking and click ID loss.

Deduplication: conversion_id Before Sessions

Running the Reddit Pixel and the Conversions API together is the recommended configuration, and deduplication is required in it. Reddit's 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 recommended method passes a unique conversion_id from both the pixel and the server event; reusing one ID across too many events marks real conversions as duplicates. Without an ID, Reddit falls back to session-based dedup - a session being a stream of events from one user with no more than five minutes between neighbors - which needs a UUID or external ID on every event and only processes events that arrived within two days; the dedup log stays queryable for seven.

The mechanics are the same family as pixel and CAPI event deduplication in Meta's ecosystem: shared key, consistent naming, both channels live.

How to Validate Events Before Spending

Reddit's verify-events workflow is explicit:

  1. Copy the test ID from Events Manager and set it as test_id in the POST request.
  2. Send a test conversion and expand the event: check the received Pixel ID, conversion ID, match keys, and metadata.
  3. Remove the test_id field before deploying to production.

Mind the test rate limit of 10 events per second - batched requests are not displayed in the testing view.

Warnings are not failures: malformed-but-recognizable values are accepted, but each warning is a match key working below strength, and unresolved issues surface in Diagnostics, taking up to 24 hours to clear. The validation habit is the same as in Meta's ecosystem - test events before scaling.

Test without writing code

For a one-off manual check, the free Pixel Activator sends valid test events to Reddit without any server setup. When delivery must recur from a tracker or CRM with deduplication built in, connect Most.

Error Handling and Rate Limits

Reddit documents five failure families, each with a distinct fix:

ResponseWhat Reddit reportsThe fix
400Invalid conversion events, none processed; or payloads above the 1,000-events-per-call capFix the payload values; split the batch
401No bearer token provided, or an invalid tokenCheck the Authorization header and the token value
403Token not authorized for that Pixel ID; missing adsconversions scopeMatch token and pixel; add the scope for developer apps
429Rate limit hit; default user agents get throttledUnique descriptive user-agent, exponential backoff, batching
500Transient downtime, no events processedRetry later

Every family, its exact message, and its fix are tabulated in Reddit Conversions API errors.

Attribution Windows and Discrepancies

Attribution typeDefault windowOptions
Click-through28 days1, 7, or 28 days
View-through and click-through (recommended)28-day click + 1-day viewView window never longer than the click window

Both are edited in Events Manager under Attribution Settings. When Ads Manager and your tracker disagree, Reddit's own troubleshooting names the usual suspects: Reddit attributes conversions to the day the ad was viewed or clicked while third-party tools often use the completion day, attribution windows differ between platforms, view-through conversions may not exist in your tracker, reports ignore the UTC timezone, redirects strip UTM parameters, and ad blockers suppress third-party tracking.

The full checklist walks through each cause in Reddit Ads conversion discrepancy.

Automating Delivery: Keitaro, Pixel Activator, and Most

If your funnel runs through Keitaro, the tracker captures rdt_cid at click time and posts conversions toward Reddit's endpoint with the mapping in one place; the wiring pattern is documented in the Keitaro Reddit integration, and the Meta-side twin in the Keitaro Facebook CAPI integration. For manual single-shot tests, Pixel Activator remains the fastest zero-setup entry point. And when delivery must always happen - retries, deduplication, hashing, round-the-clock routing from a tracker or CRM - that is the job Most performs in the background.

For teams delivering through server-side Google Tag Manager, the payload rules translate directly - see Reddit Conversions API via server-side GTM.

Reddit Conversions API: Frequently Asked Questions

Frequently asked questions

Sources

Sources

Conversion delivery tools
  • Manual testing and validation: Pixel Activator fires free test events while you tune parameters.
  • Automated delivery: Most routes conversions from your tracker or CRM continuously, with deduplication and retries handled.
Was this guide helpful?
Author
Most Team
Справочная служба

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

Related guides

Limited Data Use Meta: data_processing_options in Server Events

Meta's Limited Data Use flag exists so your server events can carry a US state-privacy signal - and it is three documented fields inside each event. This guide explains what data_processing_options does, the exact LDU values and country and state codes, the empty-array semantics most setups miss, and when sending the flag is the right call.

5 min

Meta Domain Verification: What It Proves and What It Enables

Domain verification is Meta's way of checking that you actually control the domain your campaigns point at - and it decides who may edit how your links appear. This guide covers what verification proves, the two documented methods, the link-editing control it unlocks, and an honest note on where the old AEM event priorities stand today.

5 min

Pixel Disabled Diagnostics: Reading the Data Side

The pixel looks dead - or the account shows a restriction - and the temptation is to guess. This guide walks the data side instead: what Events Manager and Test Events can prove, how to separate a delivery failure from a quality problem, which fixes restore correct sending, and what to document while you work.

6 min

Bot Traffic Filtering Before It Reaches Your Pixel

A bot that converts into a lead poisons three systems at once: the tracker's reports, the network's approve rate, and the platform's optimization. This guide wires bot traffic filtering before the Conversions API hop - what to filter at the tracker, how the filtered labels flow into your event policy, and how to prove the stream stays clean.

6 min