Skip to main content
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.
1

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.
2

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.
3

Events Fire Automations and Sync Contacts

On each verified event, Brew starts every published automation whose trigger matches, and upserts the contact into your audience.
Each provider has a Manage → Recent events panel, so you can fire a test event and watch it land before you point an automation at it.

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 bare UPDATE, 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:
Subject: Your {{@trigger:output.payload.planName}} renews soon
Filter:  shopify_last_order_at is more than 90 days ago

Backfill Your Existing Customers

Stripe ships a Sync customers button that imports every existing customer in the background, landing them with the same stripe_* 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.

Stop One Event Without Disconnecting

Every trigger is always on once its provider is connected. To pause a specific email, unpublish the automation bound to it. The fire decision lives on the automation, not in a second settings tab.

Get Started

Connect an Integration and point its first event at a published automation.