Reddit Conversion Reporting
RepoRisk can report a deliberately narrow set of server-side conversion events to Reddit when a visitor arrived through a Reddit ad and granted Advertising consent on the marketing site. The integration is disabled by default and does not make production requests until an operator explicitly enables it.
Privacy contract
The marketing site captures _rdt_cid and its original capture time only after Advertising consent.
RepoRisk accepts the pair only while it is valid and no more than 30 days old. Missing, malformed,
expired, or revoked attribution is treated as absent and never prevents signup or subscription
processing.
The only fields sent to Reddit for an ordinary event are:
click_idevent_at, expressed in Unix millisecondsaction_source, fixed toWEBSITEtype, limited toSIGN_UPor an approved account-status event
No user profile, contact information, network identifiers, organization identifiers, prices, payment amounts, plan details, or arbitrary metadata are included. Click IDs are encrypted at rest and have a separate keyed digest used only for exact revocation matching. They are not placed in application logs, URLs, checkout tokens, Clerk records, Paddle metadata, API responses, exceptions, or Sentry events.
Reported events
A completed signup can produce one SIGN_UP event. Subscription reporting occurs only when an
accepted, authoritative Paddle webhook genuinely changes account status:
| Account status | Reddit type | Custom event name |
|---|---|---|
trialing | CUSTOM | AccountStatusTrialing |
active | CUSTOM | AccountStatusActive |
past_due | CUSTOM | AccountStatusPastDue |
paused | CUSTOM | AccountStatusPaused |
canceled | CUSTOM | AccountStatusCanceled |
Pending signup, checkout start, plan selection, failed signup, unchanged status, stale webhooks, and duplicate webhooks do not produce conversion events.
Reliability and retention
The business change and conversion intent are committed in the same database transaction. A Celery worker sends eligible events after commit. Unique logical keys, short delivery leases, periodic recovery, and bounded retries protect against duplicates and transient failures. Reddit availability does not affect signup or Paddle webhook correctness.
An event is suppressed before delivery when attribution is revoked, replaced by a newer capture, expired, or when the event itself is more than seven days old. Attribution becomes unusable exactly 30 days after its original capture. The scheduled cleanup scan removes its encrypted click ID and lookup digest while preserving nonsensitive audit information for already-sent events.
Revoking attribution
The public web relay accepts the click ID and exact original capture time, then returns a deliberately uniform empty response. Matching uses both values, so a delayed request for an older capture cannot revoke a newer capture even if Reddit reused the click ID. Matching pending or retryable events are suppressed; nonsensitive sent-event audit records remain.
Staging test event
When an operator has configured Reddit's test ID in the staging environment, a platform
administrator can open the Admin page and choose Send Reddit Conversion Test Event. Paste only the
test click ID issued through Reddit's test flow. The application queues an isolated SIGN_UP test
event without enabling ordinary delivery.
Test mode is rejected outside staging. Do not paste the click ID into tickets, chat, logs, browser URLs, or monitoring tools.
Troubleshooting
- No event is queued: Confirm Advertising consent existed, both attribution cookies were valid, the original capture was within 30 days, and attribution was not revoked.
- An event remains pending: Confirm the Worker and Scheduler services are running. Ordinary events
intentionally remain unsent while
REDDIT_CAPI_ENABLED=false. - The admin test action is unavailable: Confirm the environment is exactly
stagingandREDDIT_CAPI_TEST_IDplus the required Reddit secrets are configured. - Reddit rejects a request: Check only the sanitized delivery status and configuration presence. Response bodies and click IDs are intentionally neither stored nor logged.
Deployment variables, staged activation, rollback, and key-generation guidance are in the Railway deployment guide. For signup behavior, see Sign Up.