Reddit has become a channel agencies actually buy rather than experiment with, and its measurement stack has grown up alongside: a browser pixel, a server-side Conversions API, an Events Manager, a helper extension. If you have set up Meta tracking a hundred times, Reddit feels immediately familiar, which is the problem. It is similar enough to configure from memory and different enough that configuring it from memory leaves holes.
Everything below is from Reddit’s own help documentation, linked at the foot of the post. The gaps worth your attention are deduplication, the seven-day server window, and a reporting cap on custom events that quietly hides your data rather than losing it.
Three ways in, and which to pick
Reddit supports a manual pixel install, Google Tag Manager, Shopify, partner integrations, and a direct server-side integration. In practice the decision is between two of them.
- The guided GTM flow.Reddit has a setup path in Events Manager that links a Google Tag Manager account, generates a conversion access token and publishes web and server containers for you. Reddit notes that if you already have the Reddit Pixel set up via GTM, this enhances the existing configuration rather than disrupting the conversion sharing you already have — which is the reassurance most people want before running a wizard against a live account.
- Direct Conversions API. You call the Conversions endpoint from your own server. Reddit recommends this if you want more flexibility and control over your data. If you go this route, generate a conversion token rather than relying on one that expires, because a token quietly expiring is the classic way server-side tracking dies months later with nobody watching.
For an agency running this across client sites, the GTM route is usually the pragmatic answer for the same reason it is on every other platform: it is the one you can deploy without a developer in the client’s release cycle.
The eight standard events
Reddit supports eight standard events, and custom events in addition:
- PageVisit
- ViewContent
- Search
- AddToCart
- AddToWishlist
- Purchase
- Lead
- Sign Up
Standard events are fired with rdt('track', 'EventName'), and one detail saves a specific afternoon of confusion: the base code logs a PageVisit by default. Add your own PageVisit call on top of the base pixel and you are counting every page view twice. If your PageVisit numbers are suspiciously close to double your analytics sessions, that is the first thing to check.
Deduplication is required, not advisable
This is the most important difference from how people habitually treat pixel-plus-server setups. Reddit’s documentation states that event deduplication is required if you use the Reddit Pixel and the Conversions API together, and its guidance is to use a consistent conversion ID across both.
Read that as an instruction rather than a best practice. Running both without a shared identifier does not give you better coverage with a bit of noise. It gives you inflated conversion counts, and inflated counts feed bidding, so the platform optimises against a number that is too high in a way that is invisible from the dashboard. Every purchase looks like two purchases, your cost per conversion halves on paper, and the campaign reads as a winner.
The implementation detail: the same conversion ID has to be present on the browser event and the server event for the same action. Generate it where the action happens — the order ID is usually the natural candidate — and pass it to both paths. If the two halves generate their own identifiers, you have two events with two IDs and no deduplication, which is the same as not configuring it.
The general shape of this problem is the same one Meta has, and if you want the longer treatment of why double counting is so hard to notice, fixing duplicate events between pixel and CAPI covers it.
What to send with each event
Reddit’s GTM guidance sets out minimum metadata, and it varies by event:
- AddToCart and ViewContent: a product ID.
- Purchase: product ID, plus currency and value.
- Any event sent on both paths: the conversion ID, for deduplication.
Separately, Reddit strongly recommends sharing the IP address and click ID, and suggests including the email address and user agent. Those are match signals rather than reporting fields: they are how Reddit connects a conversion to the person who saw the ad. Omitting them does not produce an error, it produces quietly worse attribution, which is the same failure pattern as a low match quality score on Meta.
If you are sending an email address, hash and normalise it the way the platform requires rather than inventing your own scheme. Sending something in the right field in the wrong format is worse than sending nothing, because it looks configured.
Three constraints that catch people
Server events expire after seven days
Reddit states that Conversions API events must be sent within seven days of when they occurred. That is a real constraint for any batch or nightly upload pattern, and especially for offline conversions that depend on a CRM stage change. If your pipeline has a human step in it — a sales rep marking a lead qualified — a deal that sits for eight days before anyone touches it is no longer reportable. Build the window into the process rather than discovering it as a gap.
Reporting lags by up to three hours
Reddit notes that Conversions API events post to the dashboard within three hours of being sent. Harmless once you know, actively misleading if you do not: half the “the server events are not arriving” panics are somebody checking twenty minutes after deployment. Verify with the test tooling, not by refreshing the dashboard.
Only twenty custom events appear in reporting
You can create as many custom conversion events as you like, but Reddit states that only the twenty most recent are visible in Events Manager and reporting. That is a reporting ceiling rather than an ingestion one, and it is a nasty shape of problem for an account that has accumulated custom events over time, because the thing you are looking for may simply not be displayed. If a custom event you know is firing does not appear, count how many you have before assuming it broke.
Verifying it, properly
- Use Events Manager together with the Reddit Pixel Helper to trigger events and watch them arrive in real time. Reddit notes that third-party cookies must be enabled in your browser for event testing — which, given most browsers now restrict them by default, is a step people skip and then misdiagnose as a broken pixel.
- For Conversions API testing, set a test ID in your tags so events are not processed, confirm they are arriving, then remove the test ID before going live. A test ID left in place is a complete and silent outage: events are accepted and discarded.
- Place a real order and confirm the Purchase fires exactly once, with the correct currency and value, and with the same conversion ID on both the browser and server event.
- Check PageVisit volume against your analytics. Roughly double means you have added a PageVisit the base code was already sending.
When it stops working later
The failure modes here are the same family as every other platform, and they are worth writing down because Reddit tracking is usually set up once and then unattended:
- An expiring conversion access token on a direct server integration.
- A site change that removes the order ID the conversion ID was built from, which breaks deduplication without breaking either event.
- A consent banner recategorising the pixel so it stops firing for a slice of traffic.
- A test ID reintroduced during a later round of debugging and left behind.
If you are running catalogue ads
Reddit supports mapping a product catalogue to a signal source, which is what connects the product IDs in your events to the products in your feed. This is the same relationship that causes so much trouble on Meta, and it fails the same way: the events fire, the catalogue exists, and the two do not refer to the same identifiers.
The mismatch is usually a variant-level identifier on one side and a product-level one on the other, or an ID with a prefix added by whatever generates the feed. Nothing errors, because each system is internally consistent. You simply get poor matching, which surfaces as weak catalogue performance rather than as a tracking fault, and gets blamed on creative. If you are running catalogue ads on Reddit, check that a product ID taken from a live AddToCart event appears verbatim in the feed before concluding anything about performance. The Meta version of this problem is covered in why your catalogue match rate is low, and the diagnosis is identical.
One honest limitation
Taglertmonitors Meta and Google Ads accounts. It does not monitor Reddit, so nothing in this post is something we will catch for you, and it would be convenient but untrue to imply otherwise. If Reddit is a meaningful line in your media plan, the checks above belong in a recurring manual review — which is exactly the kind of thing a tracking health SOP exists to make routine.
Where we do help is the rest of the account. Most agencies running Reddit are running considerably more Meta and Google spend alongside it, and those are the two we recheck every thirty minutes and alert on. The Reddit column is one you will still be checking by hand.
Sources
Stop finding out about broken tracking from your client.
Taglert monitors your pixels and conversion tracking 24/7 and alerts you the moment something breaks.
Start your free trial- First scan in ~5 minutes
- 30-day money-back guarantee
- No credit card
