January 2026 · Available on all plans.
What Shipped
Firing an email on a real event used to mean writing webhook glue: catch the event, verify the signature, map the payload, match it to a flow, sync the contact. Today, that’s built in. Connect an event source and Brew handles the whole path, verified, published, and contact-synced. Available now, seven providers across auth, billing, and commerce:- Stripe (22 events): subscriptions, invoices, checkouts, refunds, quotes
- WorkOS (18 events): SSO, SCIM, password resets, org membership
- Shopify (15 topics): customers, orders, checkouts, carts, fulfillments
- Clerk (13 events): signups, org changes, billing, waitlist
- Supabase (12 auth events): signups, email confirmation, password changes, bans
- RevenueCat (11 events): purchases and subscriptions across every store
- Stytch (8 events): Consumer and B2B user and org lifecycle
How It Works
Connecting a provider provisions every supported event at once. There’s no per-event enable step.Connect the Provider
In Integrations, connect the provider. Stripe is one-click OAuth with
an auto-registered webhook. Clerk, Shopify, WorkOS, RevenueCat, and Stytch
give you a brand-scoped Brew URL to paste in, plus a signing secret.
Supabase installs a signed trigger on
auth.users from a SQL block Brew
generates.Brew Verifies Every Delivery
Stripe SDK signature, Clerk and Stytch via Standard Webhooks, Shopify HMAC
plus shop-domain check, WorkOS timestamped HMAC, Supabase HMAC from
pgcrypto. Tampered or replayed events are rejected.
Real Events, Not Raw Table Rows
Some sources only emit generic changes. Brew classifies them into events you’d actually email on. Supabase is the clearest case: instead of a bareUPDATE,
Brew fires auth.user.email_confirmed the moment email_confirmed_at flips
from null to set, or auth.user.password_changed when the password hash
changes. Nine of Supabase’s twelve events are these column-transition
classifications.
Contacts Sync with Provider-Namespaced Fields
Every event upserts the contact keyed on email, with provider fields you can filter and merge on:stripe_subscription_status, shopify_last_order_at,
clerk_plan_name, supabase_email_verified_at, and the rest. New fields
become filterable columns automatically.
Reference them straight in the email:
Backfill Your Existing Customers
Stripe ships a Sync customers button that imports every existing customer in the background, landing them with the samestripe_* fields the live
webhook writes. So a win-back segment works on day one, not just on customers
who fire an event after you connect.