> For the complete documentation index, see [llms.txt](https://docs.chord.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chord.co/activate/event-streaming/destinations/advertising/reddit/reddit-conversions-api.md).

# Reddit Conversions API

**Reddit Conversions API** is Reddit's server-side conversion endpoint. This destination sends events to Reddit from Chord's servers rather than the browser, so measurement is unaffected by ad blockers and browser tracking restrictions. For browser-side tracking and click-ID capture, see the [Reddit Pixel](/activate/event-streaming/destinations/advertising/reddit/reddit-pixel.md) destination.

This destination uses **Conversions API v3**.

## Getting started

You need:

* Your Reddit pixel ID, found in the Reddit Ads dashboard under **Events Manager**. It starts with `t2_`.
* A conversion access token, generated in the Reddit Ads dashboard under **Events Manager > Conversions API**. Treat it as a secret.

## Settings

* **Destination Name** (required): a name to tell this destination apart.
* **Pixel ID** (required): your Reddit pixel ID. It starts with `t2_`. Use the same Pixel ID as the Reddit Pixel destination. Sharing it is what lets Reddit deduplicate events across both.
* **Conversion Token** (required): your Reddit conversion access token.
* **Test ID** (optional): when set, Reddit attributes events to this test ID, so they appear in Reddit's test view and not in production reporting. Leave it empty for live traffic.
* **Consent Requirements** (optional): the consent categories a visitor must accept before Chord sends data to this destination. See [Consent](/activate/event-streaming/consent.md).

## Connect

Add **Reddit Conversions API** from the destination catalog, using the settings above. See [Connect a destination](/activate/event-streaming/connect-a-destination.md) for the full steps.

## Deduplication

Every event this destination sends carries Chord's unique message ID in `metadata.conversion_id`. The [Reddit Pixel](/activate/event-streaming/destinations/advertising/reddit/reddit-pixel.md) destination sends the same value in its `conversionId` field. Use the same **Pixel ID** on both destinations. See [Reddit](/activate/event-streaming/destinations/advertising/reddit.md#how-they-deduplicate).

## Event mapping

| Chord event                                                                             | Reddit event      | Notes |
| --------------------------------------------------------------------------------------- | ----------------- | ----- |
| `page`                                                                                  | `PAGE_VISIT`      |       |
| [`Product Viewed`](/collect-data/tracking-plan/product-viewed.md)                       | `VIEW_CONTENT`    |       |
| [`Products Searched`](/collect-data/tracking-plan/products-searched.md)                 | `SEARCH`          |       |
| [`Product Added`](/collect-data/tracking-plan/product-added.md)                         | `ADD_TO_CART`     |       |
| [`Product Added to Wishlist`](/collect-data/tracking-plan/product-added-to-wishlist.md) | `ADD_TO_WISHLIST` |       |
| [`Order Completed`](/collect-data/tracking-plan/order-completed.md)                     | `PURCHASE`        |       |
| [`Email Captured`](/collect-data/tracking-plan/email-captured.md)                       | `LEAD`            |       |
| [`Signed Up`](/collect-data/tracking-plan/signed-up.md)                                 | `SIGN_UP`         |       |

Event types other than `page` and `track` — `identify`, `group`, `screen` — are not sent. Reddit has no equivalent endpoint for them; identity travels on the events themselves.

## Identity and matching

Every event carries whatever identifiers are available, which is what determines how much of your Reddit spend can be attributed. Reddit requires at least one.

| Chord source (priority order)                                                                                                                                  | Reddit field          | Notes                                                                                                                      |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| `properties.email` > `context.traits.email` > `traits.email`                                                                                                   | Email                 | Sent as: SHA-256 hash                                                                                                      |
| `userId`                                                                                                                                                       | Customer ID           | Sent as: SHA-256 hash                                                                                                      |
| `properties.phone` > `context.traits.phone` > `traits.phone`                                                                                                   | Phone number          | Sent as: SHA-256 hash, normalized to E.164                                                                                 |
| The IP address the server received > `context.ip`                                                                                                              | IP address            | Sent as: SHA-256 hash                                                                                                      |
| `context.userAgent`                                                                                                                                            | User agent            | Sent as: Plain text                                                                                                        |
| `properties.rdt_cid` > `properties.click_id` > `properties.clickId` > the click ID Chord saved from the landing page > the `rdt_cid` parameter of the page URL | Reddit click ID       | Sent as: Plain text                                                                                                        |
| `properties.reddit_uuid` > `properties.rdt_uuid` > the `_rdt_uuid` cookie value Chord saved                                                                    | Reddit UUID           | Sent as: Plain text                                                                                                        |
| `context.device.advertisingId`                                                                                                                                 | Mobile advertising ID | Sent as: SHA-256 hash. Sent as `aaid` for Android and `idfa` for iOS or macOS. Not sent if the operating system is unknown |
| `context.screen.width` and `context.screen.height`                                                                                                             | Screen size           | Sent as: Plain numbers                                                                                                     |

All personal data is hashed before it leaves Chord. Values that carry no matching signal — `n/a`, `unknown`, `null`, phone numbers that are too short or all one digit — are dropped rather than hashed, because a hash of a placeholder becomes a permanent false match.

**The Reddit click ID is the strongest signal.** It is set on the landing-page URL when someone clicks a Reddit ad, and the [Reddit Pixel](/activate/event-streaming/destinations/advertising/reddit/reddit-pixel.md) destination stores it in first-party storage for up to 30 days. Running the pixel alongside this destination therefore improves server-side attribution as well.

## Event metadata

| Chord source (priority order)                                                                                                            | Reddit field    | Notes                                                                                              |
| ---------------------------------------------------------------------------------------------------------------------------------------- | --------------- | -------------------------------------------------------------------------------------------------- |
| `messageId`                                                                                                                              | `conversion_id` |                                                                                                    |
| Each product's `id`, `name`, `category`, `quantity` and `item_price`                                                                     | `products`      | `id` is `product_id` > `sku` > `id`. A field with no value is left out. `quantity` defaults to `1` |
| Sum of each product's quantity                                                                                                           | `item_count`    | Sent when the event has products                                                                   |
| `properties.total` > `properties.value` > `properties.price`, then the sum of each product's price times quantity > `properties.revenue` | `value`         | Sent when the event has a value                                                                    |
| `properties.currency` > `properties.meta.i18n.currency`                                                                                  | `currency`      | Defaults to `"USD"`. Sent with `value`                                                             |

Product View Content events send `conversion_id` and `products` only. Every other event sends all five when the event carries the data, so an Order Completed sends the order value, currency, item count and product list.

Currency values are sent as decimal amounts. `149.50` means $149.50.

Chord does not skip an Order Completed with no products, and does not send a transaction ID. Reddit deduplicates on `conversion_id` and the event type.

## Limited data use

Reddit supports Limited Data Use (LDU) for privacy-restricted regions. Chord forwards it only when the storefront explicitly asks for it, by including `modes: ["LDU"]` in the event's properties, either as `properties.modes` or as `properties.data_processing_options.modes`. You can add a `country` and `region` under `properties.data_processing_options`. The country defaults to the address country. LDU is never inferred, because applying it silently would restrict processing for every event.

## Test mode

Setting a **Test ID** attributes events to that Reddit test instead of production reporting, so an integration can be verified without polluting campaign data. Leave it empty for live traffic. Test mode is a per-destination setting, so use a separate destination for testing rather than switching one back and forth.

## Click attribution

Reddit appends its click identifier, `rdt_cid`, to the ad's landing-page URL. It appears there and nowhere else — a visitor who lands on `/product?rdt_cid=...` and buys three pages later has no click id in the URL by the time the purchase happens.

Chord persists the value when the landing page is tracked and attaches it to every later event in the session, so a conversion reported minutes or days after the click still carries the click id Reddit needs to attribute it. The stored value lasts 30 days and is cleared after a completed order.

Nothing is required of you for this to work beyond tracking the landing page. If the **ClickID** row in Reddit's match key coverage reads 0%, the usual explanation is simply that the traffic did not come from a Reddit ad — organic and direct visits have no click id to capture.

## Gotchas

**Revenue metadata is not sent on Product Viewed.** Reddit validates event metadata per event type, marks value, currency and item count as applying to revenue-related events only, and reports anything else as "Unsupported metadata" in Events Manager. `Product Viewed` is not a revenue event, so Chord sends product details and the deduplication ID but no value, currency or item count. The [Reddit Pixel](/activate/event-streaming/destinations/advertising/reddit/reddit-pixel.md) also sends only the deduplication ID for page, search, lead and sign-up events, while this destination sends value, currency, item count and products on them if the event carries the data.

**Reddit's event set is fixed.** Reddit recognizes only the eight standard events in the mapping table above. Chord events with no Reddit equivalent, such as `Checkout Started`, `Product Removed` and `Order Refunded`, are not sent, and the reason is recorded in the destination's logs. Reddit does support a `CUSTOM` event type, but a custom event is discarded unless its name is registered in your Reddit account first, so Chord does not send one. The Reddit Pixel destination skips the same events.

**Refunds are not reported.** Reddit has no refund event on either surface.

**Search terms are not sent.** Reddit's `SEARCH` event takes no query parameter.

**Failures are retried only when retrying can help.** Rate limits and Reddit server errors are retried. A rejected payload or a bad credential is not — those would fail identically on a second attempt, and the error is recorded in the destination's logs instead.

**Both credentials are required.** A missing Pixel ID or Conversion Token fails the event with an explicit error rather than silently dropping it.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.chord.co/activate/event-streaming/destinations/advertising/reddit/reddit-conversions-api.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
