Skip to main content

Real-time Triggers

The cofounder reacts to signals. Most signals are written by the daily anomaly detector — so a churn spike surfaces the next morning. Real-time triggers close that gap: an external event becomes a signal the instant it happens, and (for high-severity events) fires a focused run immediately instead of waiting up to 15 minutes for the event orchestrator’s next poll.
Immediate dispatch reuses the same gating as the orchestrator — your proactive_mode, min_signal_severity, billing, and a 30-minute per-app cooldown — so it never storms runs or bypasses your preferences.

RevenueCat webhooks

Subscription lifecycle events (cancellation, expiration, billing issue, refund) become churn_spike signals in real time. Setup — in Settings → Data sources → RevenueCat (after connecting your key), copy the Webhook URL and Authorization value, then paste them into RevenueCat → Integrations → Webhooks.
Only production events are processed; EXPIRATION / BILLING_ISSUE are high-severity (run now), while CANCELLATION / SUBSCRIPTION_PAUSED / REFUND wait for the next poll. Bursts collapse to one signal per type per day.

App Store Server Notifications

If you’ve configured Apple’s App Store Server Notifications V2 (the same POST /v1/webhooks/apple endpoint that powers the mobile inbox), subscriber churn (EXPIRED, auto-renew off) and refunds now also emit a churn_spike signal automatically — no extra setup. Hard billing churn (BILLING_RETRY) is high-severity.

Custom signed webhook

The reusable primitive: any external system (GitHub, Zapier, internal tooling) can POST a signed event that becomes a signal. Setup — get your URL + signing secret:
Send an event — sign the raw JSON body with HMAC-SHA256 using your secret:
Body fields — summary (required), plus optional severity (info|low|medium|high|critical, default medium), appId (defaults to your live app), metricPath, fingerprint, and magnitude.

See also

  • Signals — how signals drive event runs
  • Modes — proactive_mode and severity thresholds