Skip to main content

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_id
  • event_at, expressed in Unix milliseconds
  • action_source, fixed to WEBSITE
  • type, limited to SIGN_UP or 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 statusReddit typeCustom event name
trialingCUSTOMAccountStatusTrialing
activeCUSTOMAccountStatusActive
past_dueCUSTOMAccountStatusPastDue
pausedCUSTOMAccountStatusPaused
canceledCUSTOMAccountStatusCanceled

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 staging and REDDIT_CAPI_TEST_ID plus 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.