Webhooks
What webhooks are in CoEditor, how Stripe and Piano feed your CRM, and where to configure them.
What is a webhook?
A webhook is a secure notification another system sends to CoEditor when something changes on their side—for example a new Stripe customer, a subscription renewal, or a Piano user update.
CoEditor receives that notification, confirms it really came from the provider, then updates customers, subscriptions, and related records in your publication so the CRM matches what Stripe and Piano already know.
Think of webhooks as the automatic sync between tools you already use and the CoEditor workspace your team works in every day.
Why CoEditor uses them
- Stripe is the source of truth for billing—prices, subscriptions, invoices, and payment outcomes. Webhooks keep those objects reflected in CRM without manual imports.
- Piano covers entitlement and access flows many publishers use alongside or instead of parts of Stripe. When Piano changes a user or access record, webhooks bring that into CoEditor too.
Without working webhooks, new sign-ups and billing changes can appear in Stripe or Piano but not on your Customers or Subscriptions pages until someone fixes the connection.
How it works (simple view)
sequenceDiagram
participant Provider as Stripe or Piano
participant CoEditor as CoEditor
participant CRM as Your publication in CRM
Provider->>CoEditor: Something changed (webhook)
CoEditor->>CoEditor: Verify the request
CoEditor->>CRM: Update customers / subscriptions- An event happens in Stripe or Piano (customer created, subscription updated, and so on).
- The provider sends an HTTP callback to the URL CoEditor gave you during setup.
- CoEditor validates the callback and applies the matching update in your publication.
Stripe vs Piano at a glance
| Stripe | Piano | |
|---|---|---|
| Typical use | Billing, subscriptions, products, invoices | Users, access, registrations, entitlement-style events |
| How you connect | Add your Stripe API key in Settings, then Generate Base Webhook | Generate the Piano Proxy URL first, paste it in Piano, then generate the Piano base webhook in CRM |
| URL count | Stripe can send directly to CoEditor’s managed endpoint | Piano usually allows one webhook URL—see Piano proxy |
Configure webhooks in the CRM
All operator setup happens under publication Settings:
/publications/{your-publication-id}/settings
From there you can:
- Add Stripe or Piano credentials
- Generate managed webhook URLs (and secrets where applicable)
- Subscribe to the default event sets CoEditor recommends for a healthy sync
- Add extra webhooks when you need a narrower or broader event list (Stripe)
Step-by-step instructions: Set up webhooks.
When something looks wrong
If data is missing or out of date, start with the Webhooks FAQ—it covers the most common “I see them in Stripe/Piano but not in CoEditor” scenarios and what to check in Settings before contacting support.