CoEditor CRM docs

Set up webhooks

Connect Stripe and Piano to your publication from CRM Settings.

Use this guide when you need to turn on automatic sync between Stripe, Piano, and your CoEditor publication.

Before you start

  1. Open the publication in the CRM.
  2. Go to Settings (/publications/{publicationId}/settings).
  3. Confirm you have an admin role for that publication.

You will need:

  • A Stripe secret API key if you are connecting Stripe
  • Piano Aid or API token, plus Piano credentials and the publication Piano private key, if you are connecting Piano

Only super admins can change which events are attached to a base webhook after it is created. Treat those changes carefully—removing core subscription or customer events can cause silent drift between Stripe/Piano and CRM.


Stripe

1. Add your Stripe API key

In Settings, enter the Stripe API key for this publication. Until it is saved, Stripe webhook controls stay disabled.

2. Generate the base webhook

In the Stripe section, click Generate Base Webhook.

CoEditor will:

  • Create a secure endpoint URL for this publication
  • Register that endpoint in Stripe
  • Subscribe to the standard billing and customer events CoEditor expects for day-to-day CRM sync

You do not need to copy a URL into the Stripe Dashboard manually for this step—the CRM registers it for you.

3. Optional: extra Stripe webhooks

After the base webhook exists you can:

  • Add Webhook — another managed endpoint with a custom event list
  • Import from Stripe — pull endpoints you already created in Stripe so CoEditor tracks them in Settings

Extra webhooks supplement the base setup; they do not replace it.

4. Leave the base URL alone

The base webhook URL is system-managed. Do not replace it with a hand-written URL in Stripe unless your support contact has asked you to.


Piano

Piano setup has an extra step because many Piano accounts only allow one webhook destination. CoEditor uses a Piano Proxy so that single URL can still reach CoEditor (and optionally your existing integrations). Read Piano proxy for the full picture.

1. Generate the Piano Proxy (do this first)

In Settings, under Piano Proxy, click Generate Piano Proxy Webhook.

Copy the proxy URL CoEditor shows you.

2. Paste the proxy URL into Piano

In Piano’s webhook or notification settings, set the destination URL to the proxy URL from step 1—not the Stripe connector URL.

Where possible, enable all event types Piano offers on that webhook so CoEditor can receive the full stream of changes you care about.

3. Add Piano credentials

The CRM needs Piano Aid or API token, plus the publication Piano private key, before Piano webhook buttons unlock. Add those in Settings if you have not already.

4. Generate the base Piano webhook

When the proxy exists and credentials are saved, click Generate Base Webhook in the Piano webhook section.

That attaches CoEditor’s managed connector URL and links the default Piano events this publication should process.

5. Extra Piano webhooks (in CRM only)

Unlike Stripe, Piano does not offer an “import from Piano” button. Any additional Piano webhooks you define are managed inside CoEditor—Piano still sends everything to the one proxy URL; the CRM decides how to route events.


After setup

  1. Trigger a small, safe change in Stripe or Piano (for example update a test customer) if you have a sandbox.
  2. Within a short time, check Customers and Subscriptions in the CRM for the matching publication.
  3. If nothing appears, work through Webhooks FAQ.

Events you should expect

CoEditor’s Generate Base Webhook buttons subscribe to a curated default list aimed at keeping customers, subscriptions, products, and common billing signals in sync.

Not every event Piano or Stripe can emit is guaranteed to change CRM screens immediately—some are subscribed for forward compatibility or routing only. If you subscribed to something and CRM did not move, see the FAQ rather than assuming the webhook failed entirely.

For a custom event mix, use Add Webhook (Stripe) or talk to your CoEditor contact before editing base events as a super admin.

On this page