Connect RevenueCat so in-app purchase and subscription events fire Brew automations across every billing platform. The same lifecycle email flow can serve Apple App Store, Google Play, Amazon, Stripe, and Web Billing subscribers without per-store glue code.Documentation Index
Fetch the complete documentation index at: https://docs.brew.new/llms.txt
Use this file to discover all available pages before exploring further.
What you can do
- Trigger automations from RevenueCat events. Welcome new paid customers, win-back during cancellation grace periods, re-engage after expiration, drip dunning on billing issues
- Auto-sync subscribers into your audience. Every RevenueCat event upserts the subscriber into Brew with
revenuecat_*custom fields (revenuecat_subscription_status,revenuecat_product_id, etc.) you can filter and segment on - Cover every store with one connection. App Store, Play Store, Amazon, Stripe, Web Billing — RevenueCat normalises receipts, Brew normalises triggers
- Personalize with product context. Reference plan, price, store, and cancellation reasons inside emails
RevenueCat webhooks require the Pro plan or above. The free / Starter plans don’t ship webhooks.
How it works
- Brew mints a unique webhook URL for your brand and you paste it into your RevenueCat Dashboard webhook configuration.
- RevenueCat doesn’t sign request bodies — instead you give them an Authorization header value (a shared secret you generate). On every webhook Brew constant-time compares the Authorization header against the stored secret.
- For each verified event Brew (a) starts every matching automation and (b) upserts the subscriber into your audience with
revenuecat_*custom fields, using the$emailsubscriber attribute as the contact’s email.
Setup
Generate your Brew webhook URL
In Brew, open Integrations, click the RevenueCat card, and click Generate URL. Copy the URL Brew generates.
Generate a shared Authorization secret
Run
openssl rand -hex 32 to generate a random 32-character secret. RevenueCat does NOT sign request bodies — it echoes this Authorization header value back on every webhook, and Brew constant-time compares it on receipt.Add the webhook in RevenueCat
Open app.revenuecat.com, go to Integrations → Webhooks → + Add new configuration, and configure:
- Webhook URL — the Brew URL from step 1
- Authorization header — the secret from step 2 (a
Bearer <secret>prefix is OK; Brew strips it before comparison) - Environment — Production, Sandbox, or both as needed
Paste the same secret into Brew
Paste the secret from step 2 into the Brew connect form and click Connect. Brew constant-time compares the Authorization header on every webhook against this value.
Verify it's working
Trigger a sandbox purchase in RevenueCat (test purchase on iOS / Android, or use the Send test event button in the webhook config). Within a few seconds it should appear in the Manage → Recent events panel of the RevenueCat integration page in Brew. If it doesn’t, recheck the Authorization header value in both places.
RevenueCat doesn’t include user emails on most events by default. Call
Purchases.setEmail(email) from your iOS / Android / Web SDK right after sign-in so Brew can resolve the real recipient. Without it, automations fan out to a placeholder address.Triggering automations
Once connected, RevenueCat events show up as available triggers in the automation builder. Open the Manage tab in the RevenueCat integration to enable the specific events you want to fire automations.Supported events
Brew supports the following 11 RevenueCat events: PurchaseINITIAL_PURCHASENON_RENEWING_PURCHASE
RENEWALPRODUCT_CHANGECANCELLATIONUNCANCELLATIONEXPIRATIONSUBSCRIPTION_PAUSED(Google Play only)SUBSCRIPTION_EXTENDEDTRANSFER
BILLING_ISSUE
Common patterns
| Goal | RevenueCat event |
|---|---|
| Welcome to premium | INITIAL_PURCHASE |
| Receipt + 1-year loyalty milestone | RENEWAL |
| Thank-you for one-time purchases | NON_RENEWING_PURCHASE |
| Tier-change confirmation | PRODUCT_CHANGE |
| Win-back during grace period | CANCELLATION |
| Welcome back after re-sub | UNCANCELLATION |
| Re-engagement after access ends | EXPIRATION |
| Dunning (“update your payment method”) | BILLING_ISSUE |
| Pause acknowledgment | SUBSCRIPTION_PAUSED |
| Courtesy “your sub was extended” | SUBSCRIPTION_EXTENDED |
| Ops alert on entitlement transfer | TRANSFER |
Personalization
| Variable | Example |
|---|---|
{{@trigger:output.payload.productId}} | pro_monthly |
{{@trigger:output.payload.store}} | APP_STORE, PLAY_STORE, STRIPE, AMAZON, RC_BILLING |
{{@trigger:output.payload.environment}} | PRODUCTION or SANDBOX |
{{@trigger:output.payload.priceUsd}} | 9.99 |
{{@trigger:output.payload.currency}} | USD |
{{@trigger:output.payload.cancelReason}} (CANCELLATION) | CUSTOMER_SUPPORT |
{{@trigger:output.payload.newProductId}} (PRODUCT_CHANGE) | pro_yearly |
Troubleshooting
An event arrived but no automation fired
An event arrived but no automation fired
Brew provisions every RevenueCat event disabled-by-default. Open the RevenueCat integration in Brew, go to the Manage tab, and toggle the event ON. Then make sure at least one of your automations uses it as a trigger and is set to Published.
All my emails go to a placeholder address
All my emails go to a placeholder address
RevenueCat doesn’t carry user emails by default. Set the
$email subscriber attribute in your app’s RevenueCat SDK after sign-in: Purchases.setEmail(email) on iOS / Android / Web. Brew uses that attribute as the recipient on every event for that subscriber.Brew returns 401 on every webhook
Brew returns 401 on every webhook
The Authorization header value RevenueCat is sending doesn’t match the secret stored in Brew. Make sure they’re identical (a
Bearer prefix is optional — Brew strips it before comparing).A user lost access right after CANCELLATION fired
A user lost access right after CANCELLATION fired
CANCELLATION only signals intent — RevenueCat doesn’t revoke access yet. Drip a win-back email on CANCELLATION and only revoke features on the matching EXPIRATION event.No webhooks fire at all
No webhooks fire at all
RevenueCat webhooks require the Pro plan or above. Free / Starter accounts won’t deliver webhooks even if the configuration looks correct in the dashboard.
Requirements
- A RevenueCat account on the Pro plan or above (free and Starter plans don’t ship webhooks)
- Permission to create webhook configurations in the RevenueCat dashboard
Need Help?
Our team is ready to support you at every step of your journey with Brew. Choose the option that works best for you:- Self-Service Tools
- Talk to Our Team
Search Documentation
Type in the “Ask any question” search bar at the top left to instantly find relevant documentation pages.
ChatGPT/Claude Integration
Click “Open in ChatGPT” at the top right of any page to analyze documentation with ChatGPT or Claude for deeper insights.