Connect RevenueCat

RevenueCat is where Pulse gets subscription revenue: MRR, trials, conversions, renewals, refunds and LTV. It takes two things — a secret API key so Pulse can read your subscriber data, and a webhook so new events arrive within seconds instead of at the next sync.

Pulse only ever reads from RevenueCat. It creates nothing, grants no entitlements, refunds nothing and never writes to a subscriber.

1. Copy the secret API key

RevenueCat dashboard → Project settings → API keys → copy the secretkey (it starts with sk_). This is not the public SDK key your app ships with — the public key cannot read subscriber data.

2. Paste it into Pulse

Open Connections → RevenueCat. Paste the secret key and invent a webhook Authorization header value — any random string; it is the shared secret that proves an incoming webhook is really from your RevenueCat project.

The key is stored in Google Secret Manager. The Pulse database keeps a reference to it, never the value.

3. Add the webhook in RevenueCat

After connecting, Pulse shows a URL of the formhttps://hooks.pulse.pulsecircle.studio/hooks/revenuecat/<connection id>. In RevenueCat → Integrations → Webhooks, add it and set the Authorization header to the same value you chose in step 2. A webhook whose header does not match is rejected.

4. Set app_user_id so ads, users and revenue join up

This is the step people skip, and it is the one that decides whether Pulse can answer “which campaign produced this revenue”. In your app, call RevenueCat’s logIn with thesame user id you pass to Pulse.identify(). Without a shared id, revenue and product events are two unlinked datasets: MRR still works, attribution and CAC do not.

5. Verify

Ask “verify my data sources” in chat, or run pulse_verify from your agent. It reports connector status, the last successful sync and the latest computed metrics day. A trial started in a sandbox is enough to see events flow.

Related