# Reddit Ads Reference

## Destination Info

* Supports [Track](https://documentation.freshpaint.io/developer/freshpaint-sdk-reference#track) calls
* Supports [HIPAA mode](https://documentation.freshpaint.io/hipaa-mode)
* Refer to this destination as **reddit-ads** in the [Integrations object](https://documentation.freshpaint.io/reference/developer/freshpaint-sdk-reference#using-the-integrations-object)
  * If you've configured multiple Account IDs, you can choose a specific one by suffixing the Account ID, such as: **`reddit-ads::0123456789012345`.** You can retrieve this value from the Reddit Ads configuration page for the Account ID of interest. &#x20;
* Connection Modes:

<table><thead><tr><th width="200.33333333333331" align="right"> </th><th data-type="checkbox">Client-side</th><th data-type="checkbox">Server-side</th></tr></thead><tbody><tr><td align="right">Web</td><td>false</td><td>true</td></tr><tr><td align="right">Mobile</td><td>false</td><td>true</td></tr><tr><td align="right">Server</td><td>false</td><td>true</td></tr></tbody></table>

This is a reference document for the Reddit Ads destination. For information on how to set up this integration, see the [reddit-ads-quick-start-guide](https://documentation.freshpaint.io/integrations/destinations/direct-response-ads/reddit-ads/reddit-ads-quick-start-guide "mention").

## Events

When you send an event to the Reddit Ads destination from Freshpaint, Freshpaint will create an event in the Reddit event manager by hitting Reddit Ad's conversions API.

### Conversion Goals

Reddit allows you to optimize ad groups for specific conversion events.&#x20;

The following Freshpaint Events map to Reddit conversion goals:

| Freshpaint Event Name | Reddit Conversion Goal |
| --------------------- | ---------------------- |
| Purchase              | Purchase               |
| Lead                  | Lead                   |
| Signup                | Signup                 |
| Add to Cart           | Add to Cart            |
| Page Visit            | Page Visit             |

Note: Freshpaint normalizes your event name before sending it to Reddit as the `tracking_type`. Variations like `sign_up`, `sign-up`,or `sign up` will all map correctly to `SignUp`. See the Track Events section below for details.

{% hint style="danger" %}
&#x20;**Deprecation Notice:** As of June 1, 2025, Reddit no longer supports optimizing for `Add to Wishlist`, `Search`, or `View Content` conversion goals. You can still send these events through Freshpaint for retargeting and journey insights, but they cannot be selected as a conversion goal in campaign setup.
{% endhint %}

### Track Events

When you send an event to the Reddit Ads destination, you can track conversions from your ads based on those events. Please refer to [Reddit Ads API Conversions documentation](https://ads-api.reddit.com/docs/v2/#tag/Conversions) for further details on which properties are relevant.

In order for an event to be sent to Reddit, it must have either a click ID (`$rdt_cid`), an email (`email`), or all of the properties `$ip` / `$ip_address`, `$user_agent`, `$screen_width`, and `$screen_height`.

Below are the Required, Recommended, and Optional properties which are mapped to the Reddit Ads request:

<table data-header-hidden data-full-width="true"><thead><tr><th></th><th></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Freshpaint property</strong></td><td><strong>Reddit Ads</strong><br><strong>parameter</strong></td><td><strong>Type</strong></td><td><strong>Requirement</strong></td><td><strong>Description</strong></td></tr><tr><td><code>$rdt_cid</code></td><td><code>click_id</code></td><td><code>string</code></td><td>Required</td><td>A query parameter that connects a page view or conversion event to a specific ad, which Freshpaint captures as <code>$rdt_cid</code> </td></tr><tr><td><code>&#x3C;event_name></code></td><td><code>tracking_type</code></td><td><code>string</code></td><td>Required (either <code>tracking_type</code> or <code>custom_event_name</code> is always sent)</td><td> If event name is one of:<br>- <code>PageVisit</code><br>- <code>ViewContent</code><br>- <code>Search</code><br>- <code>AddToCart</code><br>- <code>AddToWishlist</code><br>- <code>Purchase</code><br>- <code>Lead</code><br>- <code>SignUp</code><br>- <code>Custom</code><br>we will use the event name as the tracking_type. We normalize the value before sending to Reddit (for example, <code>page_visit</code> maps to <code>PageVisit</code>)</td></tr><tr><td><code>&#x3C;event_name></code></td><td><code>custom_event_name</code></td><td><code>string</code></td><td>Required (either <code>tracking_type</code> or <code>custom_event_name</code> is always sent)</td><td>If event name is not one of the standard event names described above, we will set <code>tracking_type</code> to <code>Custom</code> and send the <code>&#x3C;event_name></code> as <code>custom_event_name</code></td></tr><tr><td><code>$time</code></td><td><code>event_at_ms</code></td><td><code>number(float)</code></td><td>Required ( always sent)</td><td>This uses a built in prop to send the event time.</td></tr><tr><td><code>test_mode</code></td><td><code>test_mode</code></td><td><code>boolean</code></td><td>Optional</td><td><strong>This test flag is processed by Reddit.</strong> <br><br>It is a flag indicating whether the conversion events should be processed. This can be set to "true" when testing out the API integration and no data will be posted to the account.</td></tr><tr><td><code>item_count</code></td><td><code>event_metadata[item_count]</code></td><td><code>number(int)</code></td><td>Optional</td><td>The number of items in the event.</td></tr><tr><td><code>value</code></td><td><code>event_metadata[value_decimal]</code></td><td><code>number(float)</code></td><td>Optional</td><td>Value of the transaction in the base unit of the currency (eg. 30.12)</td></tr><tr><td><code>currency</code></td><td><code>event_metadata[currency]</code></td><td><code>string</code></td><td>Optional</td><td>Currency for the value provided. Three character ISO 4217 currency code (eg. USD)</td></tr><tr><td><code>products</code></td><td><code>event_metadata[products]</code></td><td><code>array</code></td><td>Optional</td><td><p>Array of products associated with the event. Each product <strong>must</strong> contain at least an <code>id</code> and a <code>category</code>. A <code>name</code> can optionally be included.<br>Example:</p><p><br><code>[{</code></p><p><code>"id": "someId",</code></p><p><code>"category": "someCategory",</code></p><p><code>"name": "someName"</code></p><p><code>}]</code><br></p><p>Any product that doesn't contain at least id and category will be dropped.</p></td></tr><tr><td><code>conversion_id</code></td><td><code>event_metadata[conversion_id]</code></td><td><code>string</code></td><td>Optional</td><td>A unique conversion ID corresponds to a distinct conversion event. This field is used for deduplication and should <strong>only</strong> be used if the Reddit client side Pixel is also running on the website.</td></tr><tr><td><code>reddit_uuid</code></td><td><code>user[uuid]</code></td><td><code>string</code> </td><td>Optional</td><td>The value from the first-party Pixel '_rdt_uuid' cookie on your domain. Note that it is in the '{timestamp}.{uuid}' format. You may use the full value or just the UUID portion. This field may not be relevant if you are not running the Reddit client side Pixel on your website.</td></tr><tr><td><code>email</code></td><td><code>user[email]</code></td><td><code>string</code></td><td>Optional</td><td>The email address of the user. This value will be cleaned and sha256 hashed before being sent to Reddit. For example,<br>A.b+c@domain -> ab@domain -> sha256(ab@domain)</td></tr><tr><td><code>external_id</code></td><td><code>user[external_id]</code></td><td><code>string</code></td><td>Optional</td><td>An advertiser-assigned persistent identifier for the user. This value will be whitespace trimmed, lowercased and sha256 hashed before being sent to Reddit.</td></tr><tr><td><code>$screen_height</code></td><td><code>user[screen_dimensions][height]</code></td><td><code>number(int)</code></td><td>Optional (always sent)</td><td>The height of the user's screen in pixels. This must be positive and less than 32768.</td></tr><tr><td><code>$screen_width</code></td><td><code>user[screen_dimensions][width]</code></td><td><code>number(int)</code></td><td>Optional (always sent)</td><td>The width of the user's screen in pixels. This must be positive and less than 32768.</td></tr><tr><td><code>aaid</code></td><td><code>user[aaid]</code></td><td><code>string</code></td><td>Optional</td><td>The AAID of the user's device. This value will be sha256 hashed before being sent to Reddit.</td></tr><tr><td><code>idfa</code></td><td><code>user[idfa]</code></td><td><code>string</code></td><td>Optional</td><td>The IDFA of the user's device. This value will be sha256 hashed before being sent to Reddit.</td></tr><tr><td><code>$ip</code> / <code>ip_address</code></td><td><code>user[ip_address]</code></td><td><code>string</code></td><td>Optional</td><td>The IP address of the user. This value will be sha256 hashed before being sent to Reddit.<br><br>You can either allow the Freshpaint collected value or send your own using the <code>ip_address</code> prop.</td></tr><tr><td><code>opt_out</code></td><td><code>user[opt_out]</code></td><td><code>boolean</code></td><td>Optional</td><td>A flag indicating whether the user has opted out of tracking. This defaults to <code>false</code> unless otherwise specified</td></tr><tr><td><code>$user_agent /user_agent</code></td><td><code>user[user_agent]</code></td><td><code>string</code></td><td>Optional</td><td>The user agent of the user's browser.<br><br>You can either allow the Freshpaint collected value or send your own using the <code>user_agent</code> prop.</td></tr></tbody></table>
