If you are running Reddit Ads, browser-only tracking is usually not enough.

Ad blockers, privacy controls, cookie restrictions, checkout flows, app flows, and missing identifiers can all weaken conversion reporting. PostHog already has many of the events and user properties you need. The Reddit Conversions API destination lets you send those PostHog conversion events directly to Reddit Ads.

The goal is not just to send more events. The goal is to send better conversion signals: the right event names, stable IDs, useful match keys, accurate value and currency, product details where relevant, and a unique conversion ID for deduplication.

This guide shows how to configure the Reddit Conversions API destination in PostHog and how to map the fields that matter for attribution and campaign optimization.

If you’re looking for PostHog integrations with other advertising platforms, see:

If you’d prefer expert assistance instead of handling the setup yourself, fill out the Contact Us form and we’ll create and deploy the right tracking solution for your business.

What You Need Before You Start

Before creating the destination, make sure you have:

  • A PostHog project with the conversion events already captured.
  • Access to the relevant Reddit Ads account.
  • The Reddit Ads account ID.
  • A Reddit Conversion Access Token.
  • A list of PostHog events you want to send to Reddit.
  • A mapping between PostHog event names and Reddit conversion event types.
  • A decision on whether you are also using the Reddit Pixel.
  • A plan for deduplication if both Pixel and Conversions API send the same event.

Do not start by sending every PostHog event to Reddit. Reddit only needs conversion events that help measurement, attribution, or optimization.

Good candidates include:

  • Lead submitted.
  • Sign up completed.
  • Product viewed.
  • Add to cart.
  • Purchase.
  • Demo booked.
  • Trial started.
  • Subscription started.

Step 1: Confirm Your PostHog Events Are Clean

The Reddit destination can only send the data you already have in PostHog.

Before mapping anything, check the source events in PostHog:

  1. Open Activity.
  2. Search for the conversion event you plan to send.
  3. Open a few recent event examples.
  4. Confirm the event has the properties Reddit needs.

For ecommerce events, look for:

value
currency
product_id
products
quantity
order_id

For lead or signup events, look for:

email
external_id
rdt_cid
conversion_id

Across all events, check whether PostHog has:

$ip
$raw_user_agent

These fields improve matching quality when they represent the actual end user. Be careful with server-side or third-party events, because the IP address may belong to a server or integration provider instead of the visitor.

Step 2: Open the Reddit Conversions API Destination

In PostHog, go to:

Data pipeline -> Destinations

Search for:

Reddit Conversions API

Then click Create.

PostHog’s native destination [Doc] is designed to send conversion events from PostHog to Reddit Ads through Reddit’s Conversions API [Doc]. This is usually cleaner than building and maintaining a custom webhook or server function from scratch.

Step 3: Add Your Reddit Ads Account Details

The destination requires two pieces of Reddit Ads information:

  • Reddit Ads account ID.
  • Conversion Access Token.

In Reddit Ads, find the account ID in the ads dashboard. PostHog’s documentation notes that the account ID may or may not include the t2_ prefix, so copy it from Reddit rather than guessing.

Then create or copy the Conversion Access Token from Reddit Ads.

Back in PostHog, paste both values into the destination configuration.

Treat the access token like a secret. Do not paste it into public docs, screenshots, tickets, or client-facing notes.

Step 4: Decide Which Events to Send

Reddit supports eight standard conversion events, and custom events can also be passed.

The standard Reddit events are:

PageVisit
ViewContent
Search
AddToCart
AddToWishlist
Purchase
Lead
SignUp

Map your PostHog events to the closest Reddit event type.

Examples:

PostHog eventReddit event type
Product ViewedViewContent
Product AddedAddToCart
Order CompletedPurchase
Lead SubmittedLead
User Signed UpSignUp
Search PerformedSearch

Use custom events when the conversion does not fit Reddit’s standard list.

Examples:

DemoBooked
TrialStarted
SubscriptionStarted
QuizCompleted
ApplicationSubmitted

If a standard event fits, use it. Standard events are easier for Reddit Ads to interpret and are usually better for optimization and reporting.

Step 5: Configure Event Filters

In the destination mapping, filter events so only the intended conversion events are sent.

For example, do not send every $pageview, autocaptured click, or internal admin event. Send the events that matter.

Good filters might be:

event = "Product Added"
event = "Order Completed"
event = "Lead Submitted"

or:

event = "form_submitted"
properties.form_type = "demo_request"

Filtering matters because sending noisy or irrelevant events can damage reporting quality. Reddit should receive clean conversion signals, not every interaction in your PostHog project.

Step 6: Map User Parameters

User parameters help Reddit match a conversion event back to a Reddit user or ad click.

Use the fields you reliably have:

email
ip_address
user_agent
external_id
rdt_cid

In the original setup, email, first name, and last name were normalized and SHA-256 hashed before being sent. That is a sensible default for identifiers such as email because it keeps the value standardized and reduces exposure of raw personal data.

Example mappings:

email: {sha256Hex(lower(person.properties.email))}
ip_address: {event.properties.$ip}
user_agent: {person.properties.$raw_user_agent}
external_id: {person.properties.user_id ?? event.properties.user_id}

If your user ID lives in a product-specific property, map that instead:

external_id: {person.properties.sb_user_id ?? event.properties.app_user_id}

For third-party integrations, IP addresses may live somewhere else. For example:

event.properties.subscriber_attributes.$ip

Use every reliable match key you have, but do not invent values. A missing email is better than a fake or incorrectly transformed email.

Step 7: Map the Reddit Click ID (rdt_cid)

The Reddit click ID connects a conversion back to a Reddit ad click.

PostHog may store it on the person as:

person.properties.rdt_cid
person.properties.$initial_rdt_cid

A practical mapping is:

{person.properties.rdt_cid ?? person.properties.$initial_rdt_cid}

If your site captures the click ID under a different name, use that property instead.

Examples:

event.properties.rdt_cid
person.properties.initial_rdt_cid
event.properties.url_params.rdt_cid

Do not assume rdt_cid is present. Test Reddit ad clicks and inspect the resulting PostHog person and event properties. If the click ID never reaches PostHog, Reddit will have less context for attribution.

Step 8: Map Event-Specific Parameters

Different conversion types need different event metadata.

For revenue or ecommerce events, include:

value
currency
products
item_count
conversion_id

Value

Map the conversion value as a number:

{toFloat(event.properties.value ?? event.properties.revenue ?? event.properties.price)}

Use net revenue, gross revenue, or another value definition consistently. Do not mix definitions across events.

Currency

Map the currency code:

{event.properties.currency}

Use standard currency codes such as:

USD
EUR
GBP
CAD

Products

For product ads, dynamic product ads, ecommerce reporting, or product-level optimization, send product details where available.

Example product mapping:

{event.properties.products ? arrayMap(product -> ({
'id': product.product_id,
'category': product.category,
'name': product.name
}), event.properties.products) : event.properties.product_id ? [{
'id': event.properties.product_id,
'category': event.properties.category,
'name': event.properties.name
}] : null}

Use the product ID Reddit expects. In ecommerce, this is often the SKU, GTIN, or variant ID rather than the parent product ID.

Item Count

Map the number of items in the conversion:

{event.properties.item_count ?? event.properties.quantity}

For purchases, item count should reflect the total number of items in the order. For add-to-cart, it should reflect the quantity added.

Conversion ID

Use a unique ID for each conversion:

{event.uuid}

or, if you have a stronger business-level ID:

{event.properties.order_id}

conversion_id matters because Reddit requires deduplication when both Reddit Pixel and Conversions API send the same event. If you are sending the same conversion through both browser and server signals, the conversion ID is the field that helps prevent double counting.

Step 9: Create Separate Mappings for Each Conversion Action

You can usually use one Reddit destination with multiple mappings.

Example structure:

  • Mapping 1: Product Viewed -> ViewContent
  • Mapping 2: Product Added -> AddToCart
  • Mapping 3: Order Completed -> Purchase
  • Mapping 4: Lead Submitted -> Lead
  • Mapping 5: User Signed Up -> SignUp

This keeps the Reddit account connection in one place while allowing each conversion action to have its own filters and metadata.

Step 10: Test the Destination

Before enabling the destination permanently, test it.

In PostHog:

  1. Use a recent real or test conversion event.
  2. Run the destination test.
  3. Check for errors.
  4. Confirm required fields are present.
  5. Confirm value and currency are formatted correctly.
  6. Confirm product fields are valid, if used.
  7. Confirm conversion_id is present.

Then verify in Reddit Ads.

Reddit’s documentation lists Events Manager as a verification path for manually triggered events. For Conversions API implementations, Reddit also recommends using reporting endpoints when you need deeper verification.

For a practical first QA pass, check:

  • Reddit Events Manager shows activity.
  • The expected event type appears.
  • Purchase or lead events are not duplicated.
  • Event volume roughly matches PostHog.
  • Test conversions do not look like production revenue if you used fake values.

Step 11: Enable the Destination

Once the test passes:

  1. Review all mappings.
  2. Confirm the destination is filtered to conversion events only.
  3. Confirm the account ID and access token are correct.
  4. Confirm deduplication is handled if Reddit Pixel is also installed.
  5. Click Create & enable.

After enabling, monitor the first few hours or days closely.

Compare:

  • PostHog event volume.
  • Reddit received event volume.
  • Reddit attributed conversion volume.
  • Pixel vs CAPI event overlap, if both are active.

You should expect differences between PostHog and Reddit Ads. Not every event will match or attribute the same way. The goal is not a perfect one-to-one report. The goal is cleaner, stronger conversion signals for Reddit.

Common Mistakes to Avoid

Sending every PostHog event to Reddit

Only send conversion events. Reddit Ads does not need your full analytics stream.

Forgetting deduplication

If both Reddit Pixel and Conversions API send the same conversion, you need a stable conversion ID to avoid double counting.

Using the wrong Reddit event type

Map events to standard Reddit types when they fit. Use Purchase for purchases, Lead for lead submissions, and SignUp for signups.

Sending raw or inconsistent user data

Normalize and hash sensitive match fields when appropriate. Keep the same transformation logic across platforms.

Mapping server IPs instead of user IPs

If the event came from a backend system or third-party integration, confirm the IP represents the actual user, not the server.

Missing value and currency

Purchase and revenue events are much more useful when value and currency are included.

Sending parent product IDs when variant IDs are needed

For product-level matching, the ID should represent the item Reddit expects, often the SKU, GTIN, or specific variant ID.

Not checking rdt_cid

If Reddit click IDs are missing from PostHog, attribution quality can suffer. Test a real Reddit ad click path.

Troubleshooting

The destination test fails

Check the account ID, access token, required fields, event type, and expression syntax in PostHog.

Reddit does not show the event

Wait briefly, then check whether PostHog sent the event successfully. Confirm you are looking at the correct Reddit Ads account and event type.

Purchases are duplicated

Check whether the Reddit Pixel and Conversions API are both sending the purchase. Confirm both paths use the same conversion ID for the same transaction.

Match quality is weak

Add more reliable user parameters where available: email, user agent, IP address, external ID, and Reddit click ID.

Values look wrong

Confirm whether PostHog is sending cents or dollars, gross or net revenue, single item price or order total. Normalize the value before sending.

Product data is missing

Inspect the source PostHog event. If product details are not already present in PostHog, the destination cannot create them reliably.

Why This Matters for Reddit Ads Performance

Reddit Ads optimization depends on the conversion signals you send back.

If Reddit only sees weak or incomplete conversion data, it has less context for measurement and campaign learning. If PostHog sends clean conversion events with useful identifiers and metadata, Reddit has a better chance of matching conversions and understanding which traffic produced real outcomes.

This matters most for:

  • Lead generation campaigns.
  • Ecommerce purchase campaigns.
  • Subscription signups.
  • App or SaaS trials.
  • Product ads.
  • Retargeting audiences.
  • Cross-platform attribution analysis.

PostHog becomes the source of truth for what happened on your site or app. Reddit receives the conversion events it needs for ad reporting and optimization.

Frequently asked questions

Yes. You need access to the relevant Reddit Ads account, the account ID, and a Conversion Access Token.

Send meaningful conversion events such as purchases, leads, signups, add-to-cart events, product views, or other actions that matter to campaign optimization.

No. Filter the destination so Reddit only receives conversion events. Sending noisy events can reduce data quality.

Reddit supports eight standard events: PageVisitViewContentSearchAddToCartAddToWishlistPurchaseLead, and SignUp. Custom events can also be passed.

rdt_cid is the Reddit click ID. It helps connect a conversion event back to a Reddit ad click when the value is captured and preserved.

Yes, especially if you use both the Reddit Pixel and Conversions API. A stable conversion ID helps Reddit deduplicate the same conversion across sources.

In most setups, yes. Normalize email addresses to lowercase and hash them with SHA-256 before sending when the destination allows or expects hashed identifiers.

Yes. For ecommerce and product ads, include product IDs, names, categories, item counts, value, and currency when available.

Reddit and PostHog use different attribution logic, matching rules, windows, and filters. Some difference is normal. Check event delivery, match parameters, click IDs, and attribution settings before assuming tracking is broken.

Yes. Use custom events when a standard Reddit event does not fit the conversion action, such as DemoBooked or TrialStarted.

Test the destination in PostHog, check Reddit Events Manager or reporting, and compare event volume against PostHog after enabling.

External & Internal References

Related blog posts

Leave a Reply

Your email address will not be published. Required fields are marked *