Skip to main content
When subscribers move to web rails, the data picture changes shape:
  • Per-subscriber conversion events become first-class (no more bundled aggregate via App Store Server Notifications)
  • Event delivery is stream-based — webhooks, not polling
  • Server-side conversion events fire without depending on client-side tracking
  • The same event stream lands across your stack (BI / product analytics / CDP / MMP) in parallel
This page is for the Head of Data, data engineering lead, or analytics engineer responsible for downstream pipeline integrity.

What Recurr emits

Recurr’s billing layer emits a versioned event stream covering subscription state changes, payment events, motion events, and ticket events. Every event ships with a stable ID, a typed envelope, and a per-event data payload. Envelope — the standard envelope on every event:
{
  "id": "evt_01HQX8K9M1P0R5N3Y2T7B4C6V",
  "type": "subscription.activated",
  "schema_version": "v1",
  "created_at": "2026-05-22T12:34:56.123Z",
  "tenant": { "id": "tnt_app123", "name": "ExampleApp" },
  "subscriber": { "id": "subscriber_01HQ...", "email": "...", "email_hashed": "..." },
  "subscription": { "id": "sub_01HQ...", "status": "active", "plan": "premium_monthly" },
  "data": { /* event-specific */ }
}
Event taxonomy — preview of what fires:
  • subscription.activated, subscription.renewed, subscription.upgraded, subscription.cancelled, subscription.recovered
  • payment.succeeded, payment.failed, payment.refunded
  • motion.cancel_save.attempted, motion.cancel_save.retained
  • motion.winback.attempted, motion.winback.recovered
  • motion.annual_upgrade.converted
  • ticket.submitted
Full schema per event in the API reference → events.

Pipeline integrity guarantees

Four facts the data team can build on:

1. HMAC-signed delivery

Every webhook is signed with HMAC-SHA256 using your endpoint’s signing secret. The receiving service verifies the signature before processing, so no spoofed events make it into your warehouse. Reference implementations in Node and Python are in the API reference → authentication.

2. Idempotent retries

Each event has a globally unique id (evt_*). Recurr retries on 5xx with exponential backoff (1m, 5m, 30m, 2h, 12h, 24h × N) for up to 7 days. Downstream dedup is straightforward — same event ID, same outcome, no double-counting. A typical dedup table:
CREATE TABLE webhook_events_received (
  event_id VARCHAR(64) PRIMARY KEY,
  received_at TIMESTAMP NOT NULL DEFAULT NOW(),
  processed_at TIMESTAMP,
  event_type VARCHAR(64) NOT NULL
);

-- TTL via partitioning or scheduled cleanup
DELETE FROM webhook_events_received WHERE received_at < NOW() - INTERVAL '30 days';

3. Versioned schemas

Event payloads are versioned via schema_version in the envelope. Additive changes (new optional fields) ship without a version bump; breaking changes ship as a new version (v2, v3) with 90-day lead time before becoming the default. Existing destinations stay pinned to their registered version until you explicitly migrate. Schema upgrades are an opt-in event for your warehouse parsers.

4. Replay for backfill

Recurr maintains a replay surface (currently roadmap) for re-firing historical events to a new destination. Use cases:
  • Backfilling a new warehouse — replay 12 months of historical events into a freshly-provisioned BigQuery/Snowflake dataset
  • Recovery from a downstream incident — replay events your warehouse missed during a pipeline outage
  • Audit response — replay a specific window for compliance investigation
Replay covers events Recurr emitted, not events that originated upstream (e.g., Apple receipt history). Cutoff is account creation.

Destination integration patterns

Recurr emits the same event stream to multiple destinations in parallel. Standard categories:

Warehouse (BigQuery, Snowflake, Redshift)

Direct webhook delivery to your warehouse-ingestion endpoint, or via an ETL tool (Fivetran, Airbyte, custom Lambda) that lands raw events into a staging table for downstream modelling. Common pattern: raw events land in a recurr_events_raw table; dbt models project into per-subscriber + per-cohort tables.

Product analytics (Mixpanel, Amplitude, PostHog)

Server-side event delivery to the product analytics vendor. Subscription events join with in-app events in the same analytics tool, so cohort + funnel analysis works across both surfaces. Configuration during onboarding maps Recurr event types to your analytics-tool event taxonomy.

CDP (Segment, Rudderstack, custom)

CDPs distribute subscription events to downstream destinations as part of the existing event pipeline. The Recurr event stream becomes a source in your CDP’s source list.

Mobile measurement (AppsFlyer, Adjust, Branch, Singular)

Server-side conversion events fire to the MMP in the schema each vendor expects. Web sub conversions land alongside in-app conversions for unified attribution.

Custom HTTPS endpoint

Any internal pipeline that accepts signed webhooks works. Common use cases:
  • Custom CRM (HubSpot custom objects, Salesforce subscription objects)
  • Anti-fraud / risk platforms
  • Internal data pipelines
  • Partner systems
Same signing mechanic, same retry policy, same idempotency guarantees.

Setup model

Destinations are wired during onboarding by Recurr’s implementation team. The team scopes destinations from your stack inventory during pilot setup, generates signing secrets, and configures the per-destination PII mode.
PII modeRaw emailHashed emailUse case
fullBI / CS / warehouse — customer’s own data
hashed_onlyProduct analytics / MMP / CDP — vendor distributes to ad platforms
minimalHigh-privacy environments — only IDs + timestamps
Self-serve destination registration ships post-customer-5.

Working with Recurr engineering

During integration, the data lead’s touchpoints with Recurr engineering:
  • Pilot integration kickoff — scope your destination list, your event mapping needs, your PII-mode preferences, your custom-event needs
  • Test events from staging — Recurr provides a staging tenant that fires test events to your destinations, so you can validate the pipeline end-to-end before production traffic
  • Production cutover — coordinated cutover when your destination pipelines are green
  • Schema-change communications — Recurr sends advance notice for schema changes; your team confirms downstream parsers are ready
Ongoing technical contact is direct with Recurr engineering — no support-tier friction for technical questions.

Cross-references