How to Connect Perspection to Reddit Conversions API for Server-Side Tracking
Reddit Conversions API Server-Side | Perspection
Step-by-step guide to connect Perspection to Reddit Conversions API. Configure Account ID, Pixel ID, OAuth credentials, and event mapping.
Perspection sends conversion events server-to-server directly to the Reddit Conversions API v2.0, bypassing browser limitations imposed by ad blockers, Safari ITP cookie restrictions, and iOS App Tracking Transparency. The Perspection Reddit connector maps nine standard event types -- Purchase, SignUp, Lead, AddToCart, AddToWishlist, ViewContent, Search, PageVisit, and Custom -- into the Reddit conversion payload schema, automatically hashing user data fields and extracting the Reddit Click ID (rdt_cid) for click-to-conversion attribution. Setup requires six credentials: Account ID, Pixel ID, Client ID, Client Secret, Access Token, and Refresh Token. The connector enforces a 600-call-per-minute rate limit, implements exponential backoff retry on transient failures, and respects CCPA opt-out and consent signals by setting the opt_out flag on outbound events.
How does server-side Reddit conversion tracking work?
Server-side Reddit conversion tracking sends events from Perspection servers directly to the Reddit Ads API, bypassing the visitor's browser. Perspection enriches each event with identity-resolved user data, extracts the Reddit Click ID (rdt_cid) from click parameters, and dispatches the payload to the Reddit Conversions API v2.0 endpoint at ads-api.reddit.com.

Browser-based Reddit Pixel tracking depends on JavaScript executing inside the visitor's browser. Three forces degrade browser-side Reddit Pixel accuracy:
Ad blockers: Extensions such as uBlock Origin, Brave Shield, and Firefox Enhanced Tracking Protection block outbound requests to Reddit tracking domains, silently dropping Reddit Pixel events before Reddit Pixel events leave the browser.
Safari Intelligent Tracking Prevention (ITP): Safari caps first-party JavaScript-set cookies at 7 days of expiry. Reddit's
_rdt_uuidcookie expires after 7 days of visitor inactivity, breaking return-visitor attribution chains for Reddit ad campaigns.Apple App Tracking Transparency (ATT): Since iOS 14.5, Apple requires explicit opt-in for cross-app tracking. Roughly 75-96% of users deny the ATT prompt, limiting Reddit Pixel's ability to read device-level identifiers on iOS.
Perspection eliminates all three failure points. The Perspection Reddit connector (RedditConnector class) authenticates against the Reddit OAuth token endpoint using Client ID and Client Secret credentials, then posts conversion event payloads to the POST /api/v2.0/conversions/events/{pixel_id} endpoint. Reddit receives the conversion signal regardless of whether the visitor's browser blocked, restricted, or failed to execute the Reddit Pixel JavaScript.
The Perspection Reddit connector maps each incoming event through a standardized transformation pipeline:
Perspection Event Name | Reddit Tracking Type |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Any unmapped event |
|
When Perspection encounters an event name that does not match any entry in the mapping table above, the Perspection Reddit connector sets the Reddit tracking_type to Custom and passes the original event name as the custom_name field. Reddit Ads Manager displays custom events under their original names for campaign optimization and reporting.
Because Perspection operates a first-party tracking domain on behalf of each workspace, the Perspection SDK sets cookies under the merchant's own domain. Safari ITP treats Perspection first-party cookies as genuine first-party storage, extending cookie lifetime beyond the 7-day cap and preserving the rdt_cid click identifier that Reddit requires for accurate click-to-conversion attribution.
How do you connect Perspection to Reddit Conversions API?
Open the Perspection dashboard, navigate to Connectors then Destinations, select Reddit, enter the Account ID and Pixel ID from Reddit Ads Dashboard, paste the Client ID, Client Secret, Access Token, and Refresh Token from the Reddit OAuth 2.0 flow, and click Save. Perspection validates the connection by querying the Reddit Ads API account endpoint.
Step-by-step: Generate Reddit Conversions API credentials
Navigate to Reddit Ads Dashboard and sign in with the Reddit account that owns the advertising account.
Open Account Settings and copy the Account ID. Reddit Account IDs follow the format
t2_xxxxxxxx.Navigate to Events Manager in the Reddit Ads Dashboard. If no Reddit Pixel exists, create a new Reddit Pixel. Copy the Pixel ID displayed on the Events Manager page. Reddit Pixel IDs also follow the
t2_xxxxxxxxformat.Open reddit.com/prefs/apps in a separate browser tab. Click "are you a developer? create an app..." at the bottom of the page.
Select "web app" as the application type. Enter a name (for example, "Perspection CAPI"), a description, and the redirect URI required by the Reddit OAuth flow.
After creating the application, Reddit displays the Client ID directly below the application name and the Client Secret labeled as "secret." Copy both values.
Complete the Reddit OAuth 2.0 authorization flow to generate an Access Token and Refresh Token. The OAuth flow requires the
ads.managescope for Conversions API access. Store both tokens securely -- the Access Token expires periodically, and the Perspection Reddit connector uses the Refresh Token to obtain new Access Tokens automatically.
Step-by-step: Configure the destination in Perspection
Log into the Perspection dashboard and select the workspace that should send events to Reddit.
Open Connectors > Destinations from the left navigation.
Under Available Destinations, click the Reddit card labeled "Conversions API."
Enter the Account ID (format:
t2_xxxxxxxx).Enter the Pixel ID (format:
t2_xxxxxxxx).Enter the Client ID from the Reddit developer app page.
Enter the Client Secret from the Reddit developer app page.
Enter the Access Token generated via the Reddit OAuth 2.0 flow.
Enter the Refresh Token generated via the Reddit OAuth 2.0 flow.
Toggle the Live switch to enabled.
Click Save. Perspection creates the destination and displays a "Live" health badge.
Click Test to validate the connection. Perspection queries the Reddit Ads API account endpoint and reports the connection test result and latency in milliseconds.
What credentials does Reddit require?
Reddit Conversions API requires six credentials in the Perspection dashboard: Account ID (advertiser account identifier), Pixel ID (conversion pixel identifier), Client ID (Reddit developer app), Client Secret (Reddit developer app), Access Token (Reddit OAuth 2.0), and Refresh Token (automatic token renewal). All six fields are required, and the Perspection dashboard validates completeness before saving.
Credential reference table
Field | Required | Format | Where to Find | UI Field Type |
|---|---|---|---|---|
Account ID | Yes |
| Reddit Ads Dashboard > Account Settings | Text |
Pixel ID | Yes |
| Reddit Ads > Events Manager | Text |
Client ID | Yes | 24-character alphanumeric | reddit.com/prefs/apps > App > Client ID (under app name) | Text |
Client Secret | Yes | 24-character alphanumeric | reddit.com/prefs/apps > App > Secret | Password (masked) |
Access Token | Yes | JWT format ( | Reddit OAuth 2.0 authorization flow | Password (masked) |
Refresh Token | Yes | 24-character alphanumeric | Reddit OAuth 2.0 authorization flow | Password (masked) |
How Reddit OAuth 2.0 authentication works in Perspection
The Perspection Reddit connector authenticates against the Reddit token endpoint at https://www.reddit.com/api/v1/access_token using the client_credentials grant type. The Perspection Reddit connector encodes the Client ID and Client Secret as a Base64 Basic Authentication header and requests a short-lived bearer token. Reddit returns an Access Token and an expiration window.
The Perspection Reddit connector refreshes authentication tokens automatically before each API call. Advertisers do not need to manually rotate tokens after the initial setup. However, if the Reddit developer app is deleted, the Client ID revoked, or the advertiser's Reddit account changes, the Perspection Reddit connector returns an authentication error. The Perspection dashboard displays a "Down" health badge, and the Destination Health monitoring panel surfaces the specific error message.
Security considerations
Client Secret and tokens are stored encrypted. The Perspection dashboard masks Client Secret, Access Token, and Refresh Token fields with password-type inputs. Perspection stores credential values in the data plane database under the
destinations.destinationstable with theconfigJSONB column.Principle of least privilege. Request only the
ads.managescope when generating the Access Token. Perspection does not require read access to Reddit user profiles, subreddits, or comment data.Token rotation. If the Access Token or Refresh Token is compromised, generate new tokens via the Reddit OAuth flow and update the credentials in the Perspection dashboard. Revoking the Reddit developer app invalidates all tokens immediately.
What are the current capabilities of the Perspection Reddit connector?
The Perspection Reddit connector supports nine standard conversion event types (Purchase, SignUp, Lead, AddToCart, AddToWishlist, ViewContent, Search, PageVisit, Custom), automatic rdt_cid click ID extraction for conversion attribution, SHA-256-hashed user data transmission (email, phone), event metadata including value/currency/contents, consent-aware opt-out handling for CCPA compliance, 600-call-per-minute rate limiting, and exponential backoff retry with 3 attempts on transient failures.
Data Perspection sends to Reddit
The Perspection Reddit connector transforms each event into the Reddit Conversions API payload schema. The following table documents every field the Perspection Reddit connector populates:
User data parameters
Perspection Field | Reddit API Parameter | Format | Purpose |
|---|---|---|---|
external_id |
| Raw string | Cross-device identity matching |
email_hash |
| SHA-256 hash (64 hex chars) | Primary identity matching |
phone_hash |
| SHA-256 hash (64 hex chars) | Secondary identity matching |
client_ip_address |
| IPv4/IPv6 string | Geographic and session matching |
client_user_agent |
| Full UA string | Device identification |
rdt_cid (click ID) |
| Reddit Click ID string | Click-to-conversion attribution |
Event metadata parameters
Perspection Field | Reddit API Parameter | Purpose |
|---|---|---|
value |
| Conversion monetary value |
currency |
| ISO 4217 currency code (defaults to workspace currency or USD) |
quantity / item_count |
| Number of items in conversion |
event_id |
| Unique event identifier for deduplication |
product_ids |
| Product catalog IDs for Dynamic Product Ads |
search_term |
| Search query for Search events |
page_url |
| Page URL where event occurred |
Reddit Click ID (rdt_cid) extraction
The rdt_cid parameter is the Reddit equivalent of Facebook's fbclid or Google's gclid. When a user clicks a Reddit ad, Reddit appends the rdt_cid query parameter to the landing page URL. The Perspection SDK captures rdt_cid from URL parameters and stores the value in the click IDs JSONB field.
The Perspection Reddit connector extracts rdt_cid using the base connector's extractClickIds() method, which reads from three sources in priority order:
JSONB click_ids field (primary source -- new storage format)
Individual event columns (fallback -- legacy storage format)
Event properties object (fallback -- raw SDK events)
When rdt_cid is present, Reddit can attribute the conversion directly to the specific ad click. Without rdt_cid, Reddit falls back to probabilistic matching using hashed email, hashed phone, IP address, and user agent -- a lower-accuracy attribution method.
Consent and privacy handling
The Perspection Reddit connector respects user consent signals and privacy regulations. Before dispatching each event, the Perspection Reddit connector evaluates four consent conditions:
CCPA opt-out (
consent.ccpa_opt_out === true)Ad storage denied (
consent.ad_storage === 'denied')Ad user data denied (
consent.ad_user_data === 'denied')Explicit opt-out property (
properties.opt_out === true)
When any of the four conditions evaluates to true, the Perspection Reddit connector sets the event_metadata.opt_out flag to true in the Reddit payload. Reddit processes opt-out events for aggregate reporting but excludes opt-out events from user-level targeting and personalization. Perspection never silently drops events based on consent status -- all events dispatch to Reddit with the appropriate opt-out flag, preserving aggregate conversion counts while respecting privacy preferences.
For detailed consent enforcement configuration, see the Consent Enforcement and Compliance guide.
Rate limiting and retry behavior
The Perspection Reddit connector enforces a rate limit of 600 API calls per minute, matching the Reddit Conversions API rate limit. The Perspection base connector tracks remaining capacity and resets the counter every 60 seconds.
Scenario | Perspection Action |
|---|---|
Rate limit exceeded | Event re-queued for dispatch after reset window |
HTTP 200 (Success) | Event logged as delivered |
HTTP 429 (Rate Limited) | Exponential backoff retry (3 attempts, 500ms base delay) |
HTTP 5xx (Server Error) | Exponential backoff retry (3 attempts, 500ms base delay) |
HTTP 4xx (Client Error) | Non-retriable -- logged and routed to Dead Letter Queue |
The exponential backoff schedule follows the pattern: first retry after 500ms, second retry after 1,000ms, third retry after 2,000ms. If all three retry attempts fail, the event routes to the Dead Letter Queue for manual investigation.
Connection validation
The Perspection Reddit connector validates the connection by sending a GET request to the Reddit Ads API account endpoint at https://ads-api.reddit.com/api/v2.0/accounts/{account_id}. When the Perspection dashboard user clicks the Test button, the Perspection Reddit connector authenticates with the stored OAuth credentials and checks that the Account ID resolves to a valid Reddit advertising account. The Perspection dashboard reports "Connection test successful!" with the response latency, or displays the specific Reddit API error message if validation fails.
Event mapping configuration
Beyond the default event name mapping table, Perspection provides a visual and JSON-based event mapping editor for customizing how Perspection events translate to Reddit conversion events. The mapping editor supports:
Event name remapping: Map a custom source event name (for example
product_viewed) to a specific Reddit tracking type (for exampleViewContent).Property remapping: Map source properties to Reddit-specific metadata keys using dot-notation paths (for example
properties.pricemapped tovalue).Event ignoring: Mark specific source events to skip dispatch to Reddit entirely.
Visual and JSON modes: Toggle between a drag-and-drop visual editor and a raw JSON editor for advanced configurations.
To configure event mapping, expand the Reddit destination card in the Perspection dashboard, scroll to the Event Mapping section (visible after saving the destination), and add mapping rules. The mapping configuration saves separately from the destination credentials.
What the Reddit connector does not currently support
For transparency, the following capabilities are not yet available in the Perspection Reddit connector:
Baseline Pixel comparison. Unlike the Meta CAPI connector, the Reddit connector does not include a Baseline Pixel ID field for comparing Perspection-recovered conversions against an existing Reddit Pixel implementation.
EMQ scoring. The Perspection Reddit connector does not calculate an Event Match Quality score for Reddit events. EMQ scoring is currently available for Meta CAPI destinations only.
Test Event Code. Reddit Conversions API does not provide a test event routing mechanism equivalent to Meta's Test Event Code. Validate Reddit events using the Reddit Events Manager in the Reddit Ads Dashboard.
Methodology
All Reddit Conversions API configuration details in this guide were verified against the Perspection production dashboard and Reddit Ads Manager as of February 2026.
"The single highest-impact action for improving Reddit conversion attribution is capturing the
rdt_cidclick parameter. When a user clicks a Reddit ad, Reddit appendsrdt_cidto the landing page URL. Perspection's first-party domain setup preserves therdt_cidvalue in a first-party cookie beyond Safari ITP's 7-day expiry, enabling accurate click-to-conversion attribution even when 14 or more days elapse between the ad click and the purchase. Withoutrdt_cid, Reddit falls back to probabilistic matching using hashed email and IP address -- a method that typically captures only 40-60% of conversions that deterministic click-based matching would attribute. Advertisers running Reddit campaigns alongside Meta or Google should configure Perspection to collect all platform click IDs simultaneously, as the Perspection SDK capturesrdt_cid,fbclid,gclid,ttclid, and 13 other click ID formats in a single page load." -- Perspection Engineering Team
Sources & References
Reddit Ads -- Conversions API, https://business.reddithelp.com/helpcenter/s/article/Conversions-API
Reddit Ads Help Center, https://business.reddithelp.com/
Perspection Product Guide -- Event Match Quality, /library/event-match-quality-guide
Perspection Product Guide -- Destination Health, /library/destination-health-failed-events-guide