Skip to content

BlogHow To Guides

Reddit Conversion Tracking: Pixel, CAPI and CRM Events

Reddit reports what the Pixel and the Conversions API tell it, inside the windows set on your account. What to count for lead generation and for a store, how the two sources deduplicate on one conversion ID, what a CRM stage can and cannot do in Reddit, how to verify it in Events Manager, and which number deserves the budget.

Reddit conversion tracking: the Reddit Pixel and the Conversions API sending a lead and a won deal back to Reddit Ads
Contents
  1. Quick summary
  2. What to count
  3. Pixel, CAPI, click ID
  4. Install the Pixel
  5. Add the Conversions API
  6. Deduplication
  7. CRM events
  8. Verify in Events Manager
  9. Attribution settings
  10. Which number to trust
  11. Common mistakes
  12. How LeadJourney does it
  13. Further Reading
Summarise this article with AI

Opens the page with a ready prompt in:

Nothing is sent until you pick a service.

Reddit Ads Manager will show you a cost per lead the day the Pixel fires. What it cannot show you on its own is which of those leads your sales team qualified, which one signed in week six, and what the buyer who found you in a thread and came back through Google three weeks later was worth. Reddit reports what the Pixel and the Conversions API tell it, inside the attribution windows set on your account. Everything else has to be sent, or it does not exist for Reddit.

This is the whole system at working depth: what to count for a lead generation business and for a store, how the Pixel and the Conversions API fit together, how CRM events get back to Reddit and where Reddit's own limits stop them, how to check all of it in Events Manager, and which of the three numbers you end up with deserves the budget decision. The install mechanics have their own guide, and so does the server side.

Quick Summary: Reddit Conversion Tracking

In short

Reddit conversion tracking runs on two sources: the Reddit Pixel, a JavaScript tag in the head of every page that sends events such as Lead, SignUp and Purchase from the browser, and the Conversions API, which sends the same events server to server and loses fewer of them to ad blockers and browser privacy limits. Run both, give each event the same conversion ID in the two copies, and Reddit counts it once. Later CRM stages, a qualified lead or a won deal with its value, can go through the Conversions API too, but only within seven days of when they happened, and Reddit only credits them inside the account's attribution window, which defaults to 28 days after a click and one day after a view. A deal that closes after that has to be read in your own attribution, not in Ads Manager.

The sections below take it in order: decide what counts, install the Pixel, add the Conversions API, deduplicate, send CRM events, verify, then read the numbers with the settings behind them in mind.

What to Count: Lead Generation Versus E-commerce

Decide which events exist and what each one means before anybody touches code. Reddit has eight standard events (PageVisit, ViewContent, Search, AddToCart, AddToWishlist, Purchase, Lead and SignUp) plus custom events with a name you choose. Reddit defines Lead as a person who "submits information expressing interest in an advertised product/offer" and SignUp as a person who "submits a form, like a subscription, registration, or sign-up form."

Only five events can be a conversion goal today: Purchase, Lead, SignUp, Add to Cart and Page Visit. ViewContent, Search and AddToWishlist stopped being goals in spring 2025 and still work for insight and retargeting. Custom events cannot be a goal at all. That one rule shapes most of what follows.

What a lead generation business and a store count on Reddit

If you ran Reddit's onsite lead forms

Reddit is ending them. Its Ads API changelog dates the sunset of the Lead Generation Forms API to 21 September 2026 and says existing ads using onsite forms will be paused on 30 September 2026. Lead generation campaigns now send people to a form on your own site, with SignUp, Lead or Clicks as the goal (Clicks only when neither the Pixel nor the Conversions API is set up). From now on the lead is counted by your Pixel or your Conversions API, and the separate Reddit Leads metric is history. What that changes is in our guide to Reddit lead generation ads.

How Reddit Sees a Conversion: Pixel, CAPI and the Click ID

Four pieces carry every conversion Reddit counts, and they depend on each other more than the setup screens suggest.

  • The Reddit Pixel

    JavaScript in the head of every page you measure, including the ad's landing page. The base code sends a PageVisit on load; every other event is an rdt('track') call. It picks up Reddit's click ID from the URL by itself.

  • The Conversions API

    Your server, a server-side GTM container or a partner posts events to Reddit's v3 endpoint with an access token. Nothing in the browser can block it, and it can carry events that never happen on a page.

  • rdt_cid, Reddit's click ID

    Appended to the landing page URL automatically on every ad click. The Pixel shares it on its own. For the Conversions API you have to keep it yourself and send it as click_id.

  • Match keys

    Email, phone number in E.164, external ID, the Pixel's UUID, IP address and user agent. Reddit accepts them unhashed or hashed with SHA-256 and asks for the email at a minimum.

The dependency to notice: the Conversions API only matches as well as the identifiers you kept. Reddit's own best practice is to share the IP address and the click ID, add the email, phone number and user agent, and send the UUID too when the Pixel runs beside it. A server that never stored the rdt_cid from the landing page is left matching on whatever the form collected. See click IDs and the Conversions API in the glossary if the terms are new.

Step 1: Install the Reddit Pixel

Reddit lists four ways to put the Pixel on a site: the base code pasted into the head, Google Tag Manager (by hand with Reddit's official tag template, or by linking your container from Ads Manager, which publishes it for you), the Reddit Ads app on Shopify, and partner integrations such as the Reddit for WooCommerce plugin. Events are then added with the event setup tool (point and click, no code), with rdt('track') calls in your own code, or as tags in GTM. For lead generation the minimum is the base code everywhere plus Lead or SignUp on the form's success state; for a store, Purchase on the confirmation with its value and currency. Whichever route you take, install it once per page: Reddit warns that a second copy duplicates tracking and inflates the metrics.

Two e-commerce facts decide the plan. Reddit's Shopify app is a codeless pixel plus a catalog sync, and Reddit's own help article says the Conversions API is not supported through it. The Reddit for WooCommerce plugin shares events through both the Pixel and the Conversions API by default. Every method, with the code, the GTM fields and the Shopify custom pixel, is in our Reddit Pixel setup guide.

Step 2: Add the Conversions API Next to the Pixel

Reddit's recommendation is both, "which we recommend for best performance". The Pixel is a browser script, so ad blockers, tracking protection and privacy settings take a share of its events, and it only sees what happens on a page. The Conversions API sends from a server, which Reddit calls more resilient to signal loss, and it accepts events from a website, an app, a physical store or another channel.

  • A direct integrationYour backend posts events to the v3 endpoint with a bearer token. Reddit recommends a conversion access token, which does not expire and is generated by a business admin in Events Manager.
  • Google Tag Manager, server-sideAds Manager can link your GTM account and publish a web and a server container for you, then map standard Google tag events such as generate_lead, sign_up and purchase to Reddit's events. The server container needs Google Cloud billing and a GA4 measurement ID.
  • A partnerReddit lists Conversions API partners including Segment, Tealium, mParticle, Rudderstack, Hightouch, Census, Elevar, ActionIQ, MetaRouter, Adobe and the WooCommerce plugin.

Three rules hold whichever route you pick. Events must be sent within seven days of when they occurred, and Reddit asks for as close to real time as possible. One request carries at most 1,000 events. And the server needs the click ID: the Pixel shares rdt_cid automatically, but for the Conversions API you persist it yourself (in a cookie, local storage, a hidden form field or the server session) and send it as click_id. In v3 you can also send the page as event_source_url, and Reddit reads the rdt_cid out of it when click_id is missing. Payloads, tokens and error handling are in the Reddit Conversions API guide.

Step 3: Deduplicate on One Conversion ID

Sending the same Lead from the browser and from the server is the point, and it doubles your count unless Reddit can pair the two copies. It pairs them one of two ways.

  • Conversion ID (recommended)The same string in the Pixel's conversionId and in the Conversions API's metadata.conversion_id. An order number works for a purchase, a lead ID for a lead. Reddit keeps the copy with more metadata and match keys.
  • Session based (the default)Without a conversion ID, Reddit uses the UUID or external ID on the events and picks one source per session, a session being events no more than five minutes apart.
One Lead, sent twice, counted once
// Browser: the Reddit Pixel, on the form's success state
rdt('track', 'Lead', {
  conversionId: '<LEAD_ID>'
});

// Server: the Conversions API (v3), the same event and the same ID
// POST https://ads-api.reddit.com/api/v3/pixels/<PIXEL_ID>/conversion_events
// Authorization: Bearer <CONVERSION_ACCESS_TOKEN>
{
  "data": {
    "events": [
      {
        "event_at": <EVENT_TIME_IN_MS>,
        "action_source": "WEBSITE",
        "click_id": "<RDT_CID>",
        "type": { "tracking_type": "LEAD" },
        "metadata": { "conversion_id": "<LEAD_ID>" },
        "user": {
          "email": "<EMAIL>",
          "ip_address": "<CLIENT_IP>",
          "user_agent": "<USER_AGENT>"
        }
      }
    ]
  }
}

The conditions are strict. Both copies must be the same event type (and carry the same name, for a custom event), and they must be sent within two days. Deduplication runs every hour and can take up to 24 hours after both copies arrive. It only works within one channel: Pixel events are deduplicated against Conversions API events whose action_source is WEBSITE, and against nothing else. And a conversion ID reused across many events marks all of them as duplicates, which means none of them is attributed.

What we run on our own demo form

LeadJourney's demo form sends Reddit one Lead event. The Pixel fires it with the lead's ID as conversionId, and our server sends the same event through the Conversions API with the same ID, so Reddit counts the request once. The server copy is the one that still arrives when an ad blocker stopped the Pixel.

Step 4: Send CRM Events, and Know Where Reddit Stops

Everything so far measures what happens on the site. For a lead generation business the outcome happens later, in the CRM: the lead is qualified, becomes an opportunity, closes or does not. The Conversions API is the way to tell Reddit, and we found no Reddit documentation of CRM stages as such. What exists is the standard events (Lead, and Purchase with a value) and custom events with a name, under four constraints that decide what is worth sending.

  • Seven days to sendA Conversions API event must be sent within seven days after it occurred. For a CRM stage, read that as seven days from the stage change: a qualified lead leaves the CRM the week it is qualified, not in a monthly batch.
  • 28 days of credit at mostReddit credits a conversion to the click or view before it, inside the account's attribution window. The longest click window is 28 days, so a deal won 60 days after the last Reddit click is not credited in Reddit's reporting, however and whenever you send it.
  • A seven-day window for optimisationDelivery is optimised on a separate window, set on the campaign or ad group and fixed once published: seven days after a click, or seven days after a click plus one day after a view. A stage that usually lands weeks after the click falls outside it.
  • Custom events are not goalsA custom event such as Qualified Lead shows in reporting (the 20 most recent custom events are visible), but it cannot be picked as a conversion goal. Only Purchase, Lead, SignUp, Add to Cart and Page Visit can.

Put together, the honest setup for a lead generation account looks like this:

  1. Count the form on the site. The Pixel and the Conversions API send it with one conversion ID, as Lead or as SignUp.
  2. Send the stage that predicts revenue as the optimisation signal. Usually the qualified lead: it tends to happen within days, often enough for an ad group to collect the roughly 20 optimisation events Reddit says it needs to leave the learning phase, and it separates the leads sales wants from the ones it does not. For Reddit to optimise on it, it has to be a standard event, so give it the Lead name and move the raw form fill to SignUp or a custom event. One meaning per event name, or the count means nothing.
  3. Send the won deal as a Purchase with its value, for the deals that close inside the window. Those are the ones Reddit can put revenue and a ROAS on.
  4. Read the long tail somewhere else. A deal that closes in month four is real revenue from a Reddit click, and Reddit will never show it. That is what your own attribution is for.

Which stage becomes which Reddit event

You cannot backfill last month

A CRM export of last month's won deals is no use to Reddit. Events older than seven days are outside the send limit, deduplication with the Pixel needs both copies within two days, and neither Reddit's help center nor its API documents a file upload for offline conversions. Build the send into the stage change, or it will not happen in time. The reasoning behind sending the qualified lead rather than the form fill is in sending CRM data back to the ad platforms.

Why the platform should learn from the qualified lead, not the form fill.4:35 minutes

Step 5: Verify It in Events Manager

A setup nobody tested is a guess. Reddit gives you three instruments, and each catches a different class of mistake.

  • Event TestingEnter a page URL and watch events arrive in real time with their match keys, metadata and conversion ID. For the Conversions API, copy the test ID into the request's test_id and remove it before production. Third-party cookies must be on in the testing browser, and the table stops at 100 events.
  • The Pixel HelperA Chrome extension that lists every Pixel event on the page with a green, yellow or red status, its metadata, match keys and errors, and checks that the Pixel ID starts with t2_ or a2_.
  • Event activity and diagnosticsCounts per event over time, before deduplication, split into Pixel and Conversions API. A banner appears when more than 10% of an event type is rejected, a warning when an event has not arrived for six hours from the Pixel or 48 hours from the server.

Then open an event's details. The match keys tab carries Reddit's match quality score, 0 to 10 per event type, computed on the last seven days and shown once at least 100 events arrived in that period. The deduplication tab shows source coverage (the share of events carrying a conversion ID) and the deduplication rate, updated hourly. Reddit calls a rate of around 50% healthy and expects the Conversions API to report slightly more events than the Pixel; Reddit also says a high rate may point to one conversion ID being used over and over.

Last, click your own ad. Reddit's test ad URLs behave like real ads, the charge included, and the destination should open with rdt_cid in the URL. A test conversion shows in Ads Manager within 24 hours at most, and conversion metrics in general can take up to three hours to update. The Pixel Helper and Event Testing are walked through step by step in the Pixel setup guide.

The Attribution Settings Behind Every Reddit Number

Two different windows sit behind Reddit's conversion counts, and most arguments about Reddit's numbers come from mixing them up.

Reddit's reporting window and optimisation window, side by side

The account setting is described in Reddit's API as used for reporting, and the dashboard can show one window or compare several side by side; Reddit says changing the dashboard window "doesn't affect how your campaigns are optimized or delivered." Two more behaviours shape the count. Reddit dates a conversion to the day of the click or view, not the day it happened, so a past day's numbers keep rising while it sits inside the window. And it adds modeled conversions, machine learning estimates of conversions lost to signal loss, to metrics such as clicks, views, eCPA, value and ROAS when it is highly confident; hovering over a column header tells you whether a metric may include them.

Windows, view-through conversions and multi-touch credit are covered properly in Reddit Ads attribution. For the concept itself, see attribution window.

Which Number to Trust: Ads Manager, GA4 or the CRM

Once tracking works you will have three numbers for the same month, and they will not agree. They are not supposed to. Each answers a different question.

What each source counts for a Reddit campaign, and what it cannot see

Reddit lists the reasons the first two disagree itself: clicks against fully loaded visits, ad blockers, the missing referrer from its iOS and Android apps, redirects that strip UTM parameters, Ads Manager running on UTC, conversions dated to the click day, different windows, and view-through conversions an analytics tool may not count. None of those is a bug. Tag every ad with UTM parameters so GA4 files the visits correctly (how to set them up for Reddit), treat Ads Manager as the view Reddit optimises on, and make the budget decision on CRM revenue joined back to the Reddit click. Why the platforms never match the CRM goes through the same gap for Meta and Google.

That join is the part nobody gets by default. HubSpot's Reddit Ads integration, in beta, shows which contacts and deals are attributed to Reddit campaigns, which helps if HubSpot is your CRM. What none of the three sources does alone is follow one person from a Reddit click through a Google search and an AI answer to a won deal and send the result back to Reddit. That matters more on Reddit than elsewhere, because a thread read today often turns into a branded search, an AI search visit or a typed URL weeks later, and last click hands the deal to that. Whether the channel pays off on that basis is the subject of Reddit Ads ROI.

Eight Mistakes That Break Reddit Conversion Tracking

In rough order of how often they turn up in accounts that say Reddit does not convert.

  1. The Pixel installed twice. Base code in the theme plus a GTM tag, or the Shopify app plus a snippet somebody pasted earlier. Reddit warns it duplicates tracking and inflates metrics, and the Shopify app's own setup asks you to disconnect an existing Pixel first.
  2. A redirect that drops the query string. The rdt_cid and the UTM parameters arrive on the landing page URL, and a redirect that strips them costs the click ID and the campaign in one go. Reddit asks landing pages to keep URL parameters through redirects. Stripped UTMs have the same cause everywhere.
  3. One conversion in two tags with different metadata. Reddit asks for all of a conversion's metadata in one event. A Lead tag with a value and a second Lead tag without one causes deduplication issues.
  4. A conversion ID that is missing, fixed or recycled. Missing, and Reddit falls back to session-based deduplication, which needs a UUID or external ID on every event. The same ID on many events, and all of them are marked as duplicates and not attributed. Reddit also flags null, empty and all-zero values.
  5. Server events sent in a nightly batch days later. Deduplication with the Pixel needs both copies within two days, and nothing older than seven days is accepted.
  6. Expecting the Shopify app to send Conversions API events. It does not. It is a codeless Pixel plus catalog sync, so server events on Shopify need another route.
  7. A custom event chosen as the thing to optimise. Custom events report, they cannot be a conversion goal, and the goal is fixed once the ad group is saved.
  8. A test ID left in production. Events carrying test_id are marked as not to be processed and show up only in Event Testing, which looks exactly like a Conversions API that stopped working.

How LeadJourney Connects the Reddit Click to the Deal

LeadJourney is one script on your site or in your GTM container, live in about 21 minutes without a developer, running server-side and first-party on your own domain at 95%+ tracking accuracy. On the first visit it issues the LeadJourney Click ID, our own visitor identifier, kept in the browser in local storage and a first-party cookie for months, and every later session is stored under it. The ad platforms' click IDs are properties of those sessions: gclid, fbclid, msclkid, li_fat_id, and now Reddit's rdt_cid, captured server-side on every Reddit click.

The Reddit Ads integration connects your Reddit Ads account and imports campaigns, ad groups, ads and daily spend. When the visitor becomes a lead, LeadJourney follows the lead through your CRM (HubSpot, Salesforce, Microsoft Dynamics 365, Zoho CRM, Pipedrive, Attio, Close, GoHighLevel, ActiveCampaign and Odoo natively, anything else by webhook, Zapier or the API) or through a Shopify or Stripe order. The CRM stages you map, for example a qualified lead as a Lead event and a won deal or a paid order as a Purchase with its value, go back through Reddit's Conversions API with the value, the click ID, hashed email and phone, and a conversion ID that deduplicates against a Reddit Pixel you keep running.

LeadJourney's own reports carry no attribution window. The journey runs from the first click to closed won however long it takes, under first click, last click, linear, position based, time decay and other models, so the month-four deal Reddit cannot credit still shows the Reddit click that started it. ChatGPT, Gemini, Claude, Copilot, Perplexity, Grok and DeepSeek are reported as sources of their own, which matters for Reddit: threads are cited by AI engines and by Google, so a Reddit exposure often comes back as an AI search or branded search visit. What LeadJourney does not do is worth saying too: no view-through attribution, no incrementality tests and no media mix modelling. Processing runs in Frankfurt under a GDPR data processing agreement.

Read verified reviews on Trustpilot, G2 and leadjourney.io/testimonials.

Further Reading

FAQ

Frequently Asked Questions

What marketers ask when they set up Reddit Ads conversion tracking for the first time, or stop trusting the one they have.

How do I track conversions from Reddit Ads?

Install the Reddit Pixel in the head of every page, add the events that matter (Lead or SignUp for a form, Purchase with its value for an order), then add the Conversions API so the same events also go server to server, with one conversion ID in both copies so Reddit counts each conversion once. Check it with Event Testing in Events Manager and the Pixel Helper extension before you spend. If the real outcome happens later in a CRM, send that stage through the Conversions API within seven days of the stage change.

What is the Reddit conversion pixel?

It is the Reddit Pixel: a JavaScript snippet placed in the head of your pages, including the ad's landing page. The base code sends a PageVisit on every load, and you add rdt('track') calls for the other seven standard events (ViewContent, Search, AddToCart, AddToWishlist, Purchase, Lead and SignUp) or for custom events with a name of your own. It can carry match keys such as the email and metadata such as value and currency, and it uses first-party cookies by default.

Do I need the Reddit Conversions API if I already have the Pixel?

Reddit recommends running both. The Pixel runs in the browser, so ad blockers and privacy settings take some of its events; the Conversions API sends from your server and can carry events that never happen on a page, such as a CRM stage. When both send the same event, give them the same conversion ID so Reddit deduplicates them. On Shopify, note that Reddit's own app does not send Conversions API events.

Can I send CRM conversions to Reddit Ads?

Yes, through the Conversions API, as a standard event (Lead, or Purchase with a value) or as a custom event. Three limits apply: an event must be sent within seven days of when it occurred, Reddit only credits it inside the account's attribution window (28 days after a click at most), and custom events can be reported on but not chosen as a conversion goal. A deal that closes months after the click will not appear in Reddit's reporting, however you send it.

What is Reddit's default attribution window?

For reporting, 28 days after a click and one day after a view, set once for the whole account in Events Manager under Attribution Settings. Click and view windows can each be 1, 7 or 28 days, and the view window can never be longer than the click window. Optimisation uses a separate window on the campaign or ad group: seven days after a click, or seven days after a click plus one day after a view, fixed once the campaign is published.

Why does Reddit report more conversions than GA4?

Mostly because they count different things. Reddit includes view-through conversions and modeled conversions, dates every conversion to the day of the click or view, and uses its own attribution window. GA4 counts sessions under its own model, misses visits from Reddit's apps that carry no UTM parameters because the apps pass no referrer, and cannot see a view at all. Reddit also runs on UTC. Neither is wrong; they answer different questions.

What happened to leads from Reddit's lead gen forms?

Reddit is ending onsite lead forms. The Lead Generation Forms API was sunset on 21 September 2026, and existing ads using onsite forms are paused on 30 September 2026. Lead generation campaigns now send people to a form on your own website, measured with the Pixel or the Conversions API, with Lead, SignUp or Clicks as the goal. The separate Reddit Leads metric and the lead download belong to the old product.

Reddit revenue

Ready to see which Reddit campaigns close deals?

LeadJourney captures the Reddit click ID server-side on every visit, follows each lead through your CRM or your shop, and sends the stages you map back to Reddit's Conversions API with the value. Live in 21 minutes, 14-day free trial without a credit card.

LeadJourney dashboard showing lead sources, campaign performance and attributed revenue side by side