ChurnZero

Delivers product-usage and lifecycle events to ChurnZero server-to-server through its HTTP API (trackEvent), keyed on the account and contact external IDs.

Why route ChurnZero through Datafly Signal

  • Profiles are updated from the server, not the browser. Events reach ChurnZero even when a tracker blocker or a failed page unload would have dropped a client-side call, so the profile reflects what actually happened.
  • One consent decision governs every destination. ChurnZero is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.

Prerequisites

Find your AppKey

In ChurnZero, open Admin > AppKey. The key travels in the request URL, so keep it secret.

Know your region

US instances use analytics.churnzero.net; Europe and Asia instances use eu1analytics.churnzero.net.

Send the account and contact IDs

Call datafly.identify() with an account_external_id trait (the account’s ID in your CRM, as ChurnZero stores it) and, if your ChurnZero contacts are not keyed on your own user ID, a contact_external_id trait (the contact’s CRM ID). A group() call’s group ID also works as the account.

Configuration

FieldTypeRequiredDescription
app_keysecretYesYour ChurnZero AppKey, found in ChurnZero under Admin > AppKey. Sent as a query parameter on every request: keep it secret.
api_hostselectYesChurnZero analytics host for your instance. Use analytics.churnzero.net for US accounts, or eu1analytics.churnzero.net for Europe/Asia accounts. The path is always /i.

Signal setup

  1. Navigate to Integrations in the sidebar and open the Integration Library tab.
  2. Find ChurnZero, click Install and fill in the fields above.
  3. Pick the preset for your use, then review the mappings in the blueprint editor.

API endpoint

GET https://{api_host}/i?appKey={app_key}&action=trackEvent&accountExternalId=...&contactExternalId=...&eventName=...&eventDate=...

Example request:

GET https://analytics.churnzero.net/i?accountExternalId=ACME-CRM-42&action=trackEvent&appKey=YOUR_APP_KEY
    &contactExternalId=crm-user-7&description=Bulk+export&eventDate=2026-09-22T10%3A13%3A20Z&eventName=Feature+Used

The presets turn on the strict output contract: only the fields the blueprint maps are sent.

Event mapping

SaaS / Customer Success preset (default)

SaaS lifecycle and product usage for ChurnZero ChurnScores, Plays and health scoring: page views, sign-up, login, onboarding, feature and report use, exports, integrations, plans, trials, the subscription lifecycle, support tickets, feedback and team growth, as trackEvent calls keyed on accountExternalId (account_external_id trait, else the group ID, else account_id) and contactExternalId (contact_external_id trait, else the Signal user ID), with an ISO 8601 eventDate. ChurnZero’s HTTP API carries every value in the URL, so the email is never sent: set the contact_external_id trait to the contact’s CRM ID if your ChurnZero contacts are not keyed on your user ID. Only events of an identified user with an account (the account_external_id trait, a group ID or account_id) are sent.

Signal eventSent to the vendor asEnabled
pagePage Viewedyes
sign_upSigned Upyes
loginLogged Inyes
onboarding_completedOnboarding Completedyes
feature_usedFeature Usedyes
report_viewedReport Viewedyes
export_completedExport Completedyes
integration_connectedIntegration Connectedyes
content_viewedContent Viewedyes
searchSearchedyes
plan_viewedPlan Viewedyes
trial_startedTrial Startedyes
trial_convertedTrial Convertedyes
subscription_startedSubscription Startedyes
subscription_upgradedSubscription Upgradedyes
subscription_downgradedSubscription Downgradedyes
subscription_cancelledSubscription Cancelledyes
subscription_renewedSubscription Renewedyes
support_ticket_createdSupport Ticket Createdyes
feedback_submittedFeedback Submittedyes
invitation_sentInvitation Sentyes
seat_addedSeat Addedyes

Identity and personal data

accountExternalId is the account_external_id trait, else the group ID, else the account_id trait. contactExternalId is the contact_external_id trait, else the Signal user ID. ChurnZero’s HTTP API carries every value in the URL, and URLs are logged everywhere, so Signal never sends the email or any other personal data. If your ChurnZero contacts are keyed on email, set contact_external_id to the contact’s CRM ID instead. Only events of an identified user with an account ID (the account_external_id trait, a group ID or the account_id trait) are sent; without one the event is not sent.

Map ChurnZero to the consent category you use for product analytics (commonly analytics).

Known limitations

  • Custom fields must be provisioned by ChurnZero before they can be sent, so the presets send none.
  • ChurnZero’s HTTP API guide is behind the ChurnZero login; the request shape follows third-party clients of the HTTP API and the public REST reference, and needs a live test.

Troubleshooting

SymptomCause and fix
Event not in ChurnZeroaccountExternalId must match an existing ChurnZero account and contactExternalId a contact in it.
401 / 403Wrong AppKey.
404Wrong API host for your region.