Churnor
Match customer IDs across billing and product events
Churnor associates product activity, imports, and billing signals through external customer identifiers. Decide which ID to use for each source before connecting data.
Choose one external ID for each customer
Use a stable identifier that your backend can provide across events and customer records. Churnor does not merge records just because their email addresses match. Keep the identifier in a consistent format and avoid switching between an internal database ID and a billing-provider ID without an explicit mapping.
How each source identifies a customer
- Events API: send
customer_idoruser_id. If both are present,customer_idis used. - CSV: map your customer or user ID column to the required Customer / User ID field.
- Stripe: the Stripe customer ID is used as the external ID. The connector does not map an application ID or merge by email.
- Paddle: the Paddle customer ID is used by default. To match an existing external ID, set
churnor_customer_idin subscriptioncustom_databefore connecting and importing. - Dodo Payments: the Dodo customer ID is used by default. To match an existing external ID, set
churnor_customer_idin subscriptionmetadatabefore connecting and importing.
For Paddle and Dodo, use the same mapped value across that customer’s subscriptions. This is an external identifier, not Churnor’s internal record ID.
Plan identity before sending data
- Choose the customer ID your application treats as canonical.
- Map that ID in CSV imports and use it in Events API requests.
- For Paddle or Dodo, add the supported custom ID field before connecting if the provider ID differs.
- For Stripe, use its customer ID consistently for events, CSV, and billing records.
- Review a customer record and its activity after sending a test event.
Read the source-specific setup guides
CSV customer import · Stripe · Paddle · Dodo Payments
For details about payload fields and request handling, see the Events API documentation.