Churnor
Connect Dodo Payments to Churnor
Receive your customers' subscription and payment changes through signed Dodo Payments webhooks, then verify delivery in Churnor.
Dodo Payments customer data
Connect your SaaS customers’ billing data to Churnor. You need a Churnor product environment and access to your provider’s webhook settings. Signed webhooks deliver subscription changes and payment events without scheduled fetching. This connector is separate from Churnor’s own platform billing.
- Open Dashboard → Integrations → Dodo Payments and copy your environment’s endpoint URL.
- In Dodo Payments, open Developer → Webhooks, create an endpoint, add the copied URL, and select the events listed below. Keep the endpoint and secret in the same sandbox/test or live environment.
- Select the provider environment and enter an API key plus the endpoint signing secret. Paddle needs
customer.readandsubscription.read; Dodo read-only access is sufficient. Churnor validates access, encrypts the credentials, and starts importing existing records. - Send a signed test delivery or replay a supported event from the provider. Select Check delivery / Retry verification in Churnor. A successfully processed event changes the status to Verified.
Endpoint: /api/webhooks/dodo-customers?project_id=<YOUR_PROJECT_ID>
Supported events
subscription.activesubscription.updatedsubscription.plan_changedsubscription.cancelledsubscription.expiredsubscription.past_duesubscription.on_holdsubscription.pausedsubscription.unpausedsubscription.renewedsubscription.failedpayment.failedpayment.succeeded
What Churnor stores
Customer IDs, available customer details, subscription state, plan, currency, cancellation intent, payment failure, and recurring revenue when the payload provides it. Scores are recalculated during delivery. When no new events arrive, authorized dashboard reads refresh assessments older than 24 hours; there is no background inactivity scan. Billing events do not count as product activity. A lower recurring amount on a newer subscription update produces a downgrade signal.
Recurring revenue is a monthly equivalent of the supplied pre-tax recurring amount. Paddle uses recurring catalog item prices and quantities; Dodo uses recurring_pre_tax_amount and payment frequency. These figures may differ from net billed revenue after discounts or usage charges. Unknown amounts remain unavailable. Mixed-currency subscription totals are not combined.
Match billing and product activity
Use the provider’s customer ID as customer_id in Churnor’s Events API and CSV imports. If your existing Churnor records use your application’s customer ID, set churnor_customer_id in the subscription’s metadata before connecting and importing. Use the same value across that customer’s subscriptions. That value is your external customer ID, not Churnor’s internal UUID. Churnor remembers the provider-to-customer mapping; it does not merge records by email.
History, retries, and connection checks
Connecting imports existing customers and current subscription state through the provider API. The import continues in the background when setup closes; progress is saved and transient failures retry. This is a snapshot, not a backfill of historical transactions or product activity. Import completion does not verify webhook delivery. Webhooks handle future changes without cron jobs. Retry import or Import latest records starts an explicit resync. Event IDs prevent duplicate storage, and older subscription snapshots cannot overwrite newer billing state. Unsupported events are acknowledged and ignored; they do not verify the connection.
If verification is waiting, check the endpoint URL, selected event, test/live environment, and signing secret. Replay a supported signed event after correcting the settings. Saving or rotating a secret resets verification. Dodo CLI mock events without signatures cannot verify a connection; use a signed provider delivery.
Dodo Payments webhook setup documentation