pixellint

vendor/reddit-conversions-api · vendor documented

Reddit Conversions API v3 payloads

The server-side sibling of the Reddit Pixel. Same conversion, different hop, a documented JSON contract instead of an image request.

What this pack matches

Hosts
ads-api.reddit.com
Paths
…/conversion_events…
Vendor docs
ads-api-reddit.netlify.app/docs/v3/guides/programs/capi/direct-integration

Rules

Codes are stable. A finding in CI, MCP, or the playground lands on the same id.

Field Required What it checks Rule ids Source
pixel_id required It is the Reddit Pixel ID, and it travels in the v3 path. Fix: Put the Pixel ID from Events Manager in the path as `/api/v3/pixels/{pixel_id}/conversion_events`. vendor.reddit-conversions-api.param.pixel_id.missing
vendor.reddit-conversions-api.param.pixel_id.empty
docs
event_at required Reddit CAPI v3 documents `event_at` as Unix time in milliseconds. A 10-digit value is seconds and lands in 1970. Fix: Send milliseconds: a JavaScript `Date.now()` is already in the right unit. vendor.reddit-conversions-api.body.event_at.missing
vendor.reddit-conversions-api.body.event_at.empty
vendor.reddit-conversions-api.body.event_at.invalid
docs
action_source required v3 makes `action_source` required. Reddit documents `WEBSITE`, `APP`, `PHYSICAL_STORE`, and `OTHER`. Fix: Send `WEBSITE`, `APP`, `PHYSICAL_STORE`, or `OTHER`. vendor.reddit-conversions-api.body.action_source.missing
vendor.reddit-conversions-api.body.action_source.empty
vendor.reddit-conversions-api.body.action_source.invalid
docs
type.tracking_type required v3 spells standard events in UPPER_SNAKE_CASE. Custom events use `CUSTOM` plus `custom_event_name`. Fix: Send `PURCHASE` or another documented type. For a custom event, send `CUSTOM` and `type.custom_event_name`. vendor.reddit-conversions-api.body.type.tracking_type.missing
vendor.reddit-conversions-api.body.type.tracking_type.empty
vendor.reddit-conversions-api.body.type.tracking_type.invalid
docs
metadata.currency optional It is an ISO 4217 currency code. Fix: Use the three-letter code, such as `USD`. vendor.reddit-conversions-api.body.metadata.currency.empty
vendor.reddit-conversions-api.body.metadata.currency.invalid
docs
user.ip_address optional It is the visitor IP address. Reddit accepts it unhashed. Fix: Send the browser's public IP, not a digest. vendor.reddit-conversions-api.body.user.ip_address.empty docs
user.user_agent optional It is the visitor user agent. Reddit accepts it unhashed. Fix: Send the browser's user agent string, not a digest. vendor.reddit-conversions-api.body.user.user_agent.empty docs
body.hashed_plaintext_field required This field looks like a SHA-256 digest, but Reddit documents `user.ip_address` and `user.user_agent` as unhashed match keys. Fix: Send the raw IP address or user agent. Hashing it makes the event unmatchable. vendor.reddit-conversions-api.body.hashed_plaintext_field docs

Validate a payload

pixellint validate json @payload.json --rulepack vendor/reddit-conversions-api

Or paste it into the playground. Same engine, in the browser, nothing sent anywhere.

cargo install pixellint · npm install pixellint