Reddit Ads Conversion Tracking Setup: A Realistic Guide

14 min read

SS

Simul Sarker

Founder & Product Designer of DataCops

Last Updated

May 29, 2026

Reddit is the only major ad platform where the audience that converts best is the audience most likely to have already blocked your pixel.

The person clicking your Reddit ad on r/homelab has Pi-hole running on their router. The person clicking on r/personalfinance has uBlock Origin in Firefox. The person clicking on r/buildapc bought Brave before it was mainstream. These are not fringe users on Reddit. They are the core engaged audience, the people spending hours in comment threads, the people with strong purchase intent, the people your campaigns are trying to reach.

Reddit's own documentation describes conversion data as a "directional signal." Every guide frames this as boilerplate. It is not. It is an acknowledgment that the platform was built for an audience that systematically disables the tracking mechanism the platform relies on. The pixel fires from rdt.li. That hostname is on every major ad-blocker filter list. On Reddit specifically, the miss rate is not the 25-35% you see on Meta or Google. On technical and finance audiences, the gap between pixel-recorded conversions and actual conversions is closer to 40-60%.

This is the Reddit ads conversion tracking problem in 2026. Not attribution windows. Not event configuration. The audience. Set up the pixel correctly and it will still miss nearly half your highest-intent conversions from the subreddits you most want to reach.

CAPI-first is not optional for Reddit campaigns. It is the only setup that produces usable data.


Quick answers

How do I set up conversion tracking for Reddit Ads?

Two layers running simultaneously. First, install the Reddit Pixel via GTM or direct script in your site header for basic event coverage. Second, configure Reddit Conversions API for server-side event delivery that bypasses browser-level blocking. The Conversions API setup requires an access token from your Reddit App credentials, event formatting per Reddit's server-side spec, and click ID capture via the rdt_cid UTM parameter. Reddit's own documentation recommends this redundant setup. Pixel-only on Reddit produces data that is directional at best and misleading at worst.

What is the Reddit Pixel and how does it work?

A third-party JavaScript tag that loads in the browser from the rdt.li tracking domain. When a visitor hits your landing page, the script fires events: PageVisit, ViewContent, AddToCart, Purchase, Lead. Those events are sent to Reddit's servers alongside cookie data to match back to ad clicks and views. Like every client-side pixel, it depends entirely on the browser executing the script. On Reddit's audience, that dependency fails more often than on any other major platform.

Is Reddit Ads conversion tracking accurate?

Pixel-only: no. The pixel misses 25-35% of conversions on a general audience and 40-60% on technical and finance Reddit audiences where ad-blocker adoption is substantially above average. With CAPI properly configured and deduplicated: significantly better, though still less mature than Meta CAPI or Google Enhanced Conversions. Reddit themselves do not claim pixel accuracy. They call it directional.

Should I use Reddit Pixel or Reddit CAPI?

Both, with deduplication. Pixel-only misses too much traffic on Reddit's core audience. CAPI-only drops events if click IDs do not persist through the conversion funnel. The redundant setup, pixel as first layer and CAPI as recovery layer, with matching event IDs for deduplication, is the only setup that comes close to accurate measurement.

How does the Reddit attribution window work?

28-day click-through, 1-day view-through by default. Adjustable in campaign settings. Reddit's in-platform reporting is last-click within the platform. View-through attribution inflates numbers substantially on upper-funnel campaigns. For a clean baseline when comparing Reddit's reported conversions to actual order volume, use click-through only and exclude view-through from optimization metrics.

Why are my Reddit Ads conversions not tracking?

Five causes in order of frequency. The pixel is being blocked by uBlock Origin, Brave, or Firefox ETP before it fires. The purchase event is placed on the checkout page instead of the confirmation page. The rdt_cid click ID is not being captured in UTM parameters and therefore cannot match CAPI events to Reddit clicks. The CAPI event is missing required fields: event_at as Unix timestamp, event_type, and user data or click ID. Deduplication is not configured, so both pixel and CAPI are counting the same conversion twice.

How do I install the Reddit Pixel via Google Tag Manager?

Create a new tag in GTM using the Custom HTML template. Paste the Reddit base pixel code from your Conversions dashboard. Set the trigger to All Pages. Create separate event tags for Purchase, Lead, and other conversion events using the event-specific Reddit pixel code, triggered by the GTM triggers you have already configured for those actions. One important limitation: GTM is a client-side tool. The pixel fires client-side regardless of whether you use GTM or direct script placement. GTM does not solve the ad-blocker problem. It organizes the client-side implementation. For that problem, you need the Conversions API.

What is the Reddit Conversions API?

A server-to-server integration that sends conversion events from your server directly to Reddit's API endpoint, bypassing the browser entirely. Because it does not rely on JavaScript running in the visitor's browser, browser extensions and privacy settings cannot block it. You match events to users via click IDs from rdt_cid UTM parameters, hashed email, or IP and user-agent matching. Reddit's CAPI documentation is at ads.reddit.com and requires OAuth credentials from a Reddit App.


Why Reddit is structurally different from other platforms

On Meta, the privacy-browser user is a minority. On Google Search, intent-signal means the conversion action often happens regardless of tracking. On Reddit, the relationship inverts.

The communities with the highest purchase intent on Reddit are the same communities where sophisticated browser privacy tools are the norm. r/netsec, r/privacy, r/pihole, r/degoogle, r/homelab, r/buildapc, r/personalfinance, r/legaladvice. These are not random cross-sections of the internet. They are concentrated populations of exactly the people who know how ad tracking works and have taken active steps to prevent it.

Brave browser co-founder Brendan Eich built Mozilla before building a browser specifically designed to block the tracking infrastructure that Reddit ads depend on. uBlock Origin, which blocks rdt.li by name, has over 40 million active users with above-average representation in technical communities. Firefox Enhanced Tracking Protection is on by default for every Firefox user. Pi-hole DNS-level blocking is a common home network setup among the exact demographics that make Reddit's tech, finance, and enthusiast audiences valuable.

The result: a meaningful share of your highest-intent Reddit conversions happen invisibly. The pixel never fired. The event never reached Reddit's servers. The conversion happened. Your Ads Manager shows nothing.

This is structural, not fixable with better pixel configuration. The only fix is moving event delivery off the browser entirely.


The complete Reddit conversion tracking setup

Step 1: Create your Reddit Pixel and event structure

In Reddit Ads Manager, navigate to Conversions in the left sidebar. Click "Add Conversion Event." Select your event types: PageVisit for every page, ViewContent for product pages, AddToCart for cart adds, Purchase for order confirmations, Lead for form submissions.

Reddit generates a pixel ID and base code. The base code fires on every page and sends PageVisit. Event-specific code fires on the relevant pages. You can implement this via direct script placement, GTM, or through platform integrations for Shopify and WooCommerce.

For Shopify: install the Reddit Pixel in your theme's head section via a custom code block, or use the Reddit app from the Shopify App Store. The app handles basic pixel installation but does not configure CAPI. Do not rely on the app for complete tracking.

For WooCommerce: install via plugin or manual header code addition. Configure the Purchase event to fire on the order confirmation page, not the checkout page.

Step 2: Capture Reddit click IDs in UTM parameters

Reddit click IDs travel as the rdt_cid parameter appended to ad destination URLs. For CAPI matching to work, this value must persist through your funnel from landing page to conversion event.

In every Reddit Ad campaign, your destination URL needs {rdt_cid} in the UTM string: yourdomain.com/product?utm_source=reddit&utm_medium=paid&rdt_cid={rdt_cid}.

Reddit automatically populates {rdt_cid} with the actual click ID value when the ad is served. Your server then needs to capture this value when the visitor lands and store it in a session cookie or your database. When the conversion event fires via CAPI, include the stored click ID in the click_id field.

If rdt_cid does not persist through the funnel, your CAPI events cannot be matched to Reddit ad clicks. Unmatched CAPI events have drastically lower attribution quality.

Step 3: Configure Reddit Conversions API

Reddit CAPI requires an access token from a Reddit App. In Reddit's developer portal at reddit.com/prefs/apps, create a new app of type "script." Note your client ID and secret. Use these to obtain an OAuth access token with the ads:conversions scope.

Reddit's CAPI endpoint is https://ads-api.reddit.com/api/v2.0/conversions/events/{account_id}. Send POST requests with the following required fields for each event:

event_at: Unix timestamp of the conversion, required. event_type: the conversion type string, for example "Purchase" or "Lead." click_id: the rdt_cid value captured from the landing page URL. event_metadata: for Purchase events, include value_decimal for revenue and currency. user: at minimum include ip_address and user_agent from the server-side request. Adding hashed email (sha256(email.toLowerCase().trim())) significantly improves match rate.

For deduplication, include an event_id field in both your pixel event and your CAPI event. The value must be identical for the same conversion. Reddit uses this to deduplicate within a 7-day window. Without matching event IDs, the same conversion is counted twice: once by pixel and once by CAPI.

Test events appear in your Reddit Ads Conversion dashboard within a few minutes. Check for "matched" status on test events to confirm click ID attribution is working.

Step 4: Verify deduplication

Open your Reddit Ads Manager. Navigate to Conversions, then click on your conversion event. If your deduplication is working, you should see total conversion volume close to your actual conversion count, not double. A common failure mode is pixel and CAPI both firing without shared event IDs, resulting in doubled conversion reporting and incorrectly optimistic ROAS in your dashboard.

The correct setup shows a total that is close to the CAPI volume alone, since CAPI catches what pixel misses. If your total is significantly higher than your actual order count, your event IDs are not matching and deduplication is not working.

Step 5: First-party collection for the pixel layer

The pixel fires from rdt.li. On audiences where that hostname is blocked, the pixel does not fire regardless of how correctly you implemented the event code. You cannot change Reddit's tracking domain.

What you can control is your own collection infrastructure. If your first-party analytics runs from your own subdomain, you capture the session data and behavioral signals even when the Reddit pixel is blocked. The CAPI event then fires from your server using the session data you collected, with the click ID you stored.

DataCops' first-party analytics runs from datacops.yourdomain.com. Not on any filter list. The session loads on every visit including privacy-browser sessions where rdt.li is blocked. You can use this session data to enrich CAPI events with IP address, user agent, and behavioral context even when the Reddit pixel never fired.

DataCops does not currently support Reddit CAPI natively. Its Conversion API covers Meta, Google, TikTok, and LinkedIn. For Reddit CAPI, you implement the server-side events directly or via a platform integration. DataCops' value here is at the collection layer, ensuring your server has the session data needed to send quality CAPI events to Reddit's API.


Common Reddit conversion tracking failures and fixes

Pixel not firing: the blocker problem

Symptom: PageVisit events showing significantly fewer sessions than your analytics tool. Cause: rdt.li is blocked by uBlock Origin, Brave, and Firefox ETP. Fix: this does not have a client-side solution. Move to CAPI-first, treat pixel data as supplemental.

CAPI events not matching to clicks

Symptom: CAPI events showing as "unmatched" in Reddit's conversion dashboard. Cause: rdt_cid is not being captured on landing or is not persisting to the conversion page. Fix: verify the {rdt_cid} parameter is in your ad destination URLs, that your server captures the value from the URL on landing page load, and that it is stored and retrieved correctly on the conversion page.

Double counting conversions

Symptom: Reddit Ads Manager shows conversion volume higher than actual orders. Cause: pixel and CAPI both firing without shared event IDs for deduplication. Fix: generate a unique event ID for each conversion event, include it in both the pixel JavaScript event and the CAPI API call. Reddit deduplicates events with matching IDs within 7 days.

Purchase event firing on wrong page

Symptom: Purchase events in Reddit's dashboard vastly exceed actual purchase volume. Cause: Purchase event code placed on the checkout page instead of the order confirmation page. Every checkout page visit counts as a purchase. Fix: move the Purchase event code to your thank-you or order confirmation page only.

CAPI events missing required fields

Symptom: CAPI events rejected by Reddit's API with validation errors. Cause: missing event_at, event_type, or valid user data. Fix: review Reddit's CAPI spec. At minimum include event_at as Unix timestamp, event_type as the correct string, and either click_id or user data (ip_address and user_agent).


The reality of Reddit attribution data

Even with pixel plus CAPI running correctly and deduplicated, Reddit's conversion attribution will not match your actual order volume. Reddit attributes on a 28-day click-through window. A visitor who clicked your Reddit ad, left without converting, saw your retargeting ad on Meta two weeks later, and then converted is recorded in both Reddit's and Meta's attribution reports. Both claim the credit. Neither is wrong by their own methodology.

Reddit's own framing is honest about this. Directional signal means: use these numbers to understand relative performance across campaigns, not to reconcile to your actual revenue.

The useful question Reddit attribution answers: which campaigns, audiences, and creatives drive the most Reddit-attributed conversions, in relative terms? Not: how many sales did Reddit generate in absolute terms?

For absolute revenue attribution, your server-side order data is the ground truth. Match rdt_cid values from your order database to actual orders. That tells you which Reddit ad clicks genuinely drove purchases. Everything in Reddit Ads Manager is supplemental to that server-side attribution.

The cross-channel attribution setup guide covers how to reconcile platform-reported attribution with server-side order data across Meta, Google, Reddit, and other channels.


When DataCops fits into a Reddit ads stack

DataCops does not natively support Reddit CAPI. That is an honest limitation.

Where it fits: first-party session collection on your landing pages. Because DataCops loads from your subdomain, it captures visitor sessions including those from privacy-browser users whose browsers blocked rdt.li. The session data, IP address, user agent, click ID from URL parameters, includes the rdt_cid value you need for Reddit CAPI matching.

Your Reddit CAPI implementation fires from your server using that captured session data. The first-party analytics layer ensures you have complete session coverage even when the Reddit pixel itself was blocked. Bot filtering via fraud traffic validation prevents bot sessions from generating CAPI events that corrupt Reddit's algorithm training.

For Meta, Google, TikTok, and LinkedIn: DataCops Business at $49/month handles all four CAPI platforms with bot filtering built in. Reddit is the one major paid social platform not covered natively.


When DataCops is not the answer for Reddit tracking

If your primary need is native Reddit CAPI integration without custom API implementation: CustomerLabs, Stape with a Reddit CAPI template, or a developer-built direct integration are the paths. DataCops does not currently offer Reddit as a native CAPI destination.

If Reddit is your only paid social channel: a lightweight pixel-plus-CAPI setup via Reddit's native tools plus a developer integration handles your specific need without a broader platform.

If your stack is Shopify and you want managed Reddit tracking alongside Meta: Elevar covers Meta, Google, TikTok, and Pinterest natively but also does not support Reddit CAPI. Neither does most of the managed tracking category. Reddit CAPI is newer and most managed CAPI tools have not added it yet.

If you have a developer who can implement the Reddit CAPI endpoint directly using the spec above: that is the most reliable path for Reddit-specific tracking, paired with first-party collection from DataCops or your own infrastructure for session data.


The privacy-browser user who clicked your Reddit ad from r/buildapc or r/personalfinance was your best prospect. They spent 45 minutes in a thread before they clicked. They had genuine intent. They landed on your page, added to cart, and bought.

Your Reddit pixel never fired. Your Ads Manager shows nothing. Your algorithm optimized away from that audience because the signal said it did not convert.

Of the conversions your Reddit campaigns actually drove last month, how many are visible in your Ads Manager?


Live traffic quality

Updated just now

Visits · last 24h

487
Real users
35873.5%
Bots · auto-filtered
12926.5%

Without filtering, 26.5% of your reported traffic is bot noise inflating dashboards and draining ad spend.

Don't trust your analytics!

Make confident, data-driven decisions withactionable ad spend insights.

Setup in 2 minutes
No credit card