Skip to main content
GET

Response

  • totals.selections — the number of reason selections. This is a superset of completed cancellations: some members select a reason and then accept a retention offer and stay. Use the relative distribution as the reliable signal.
  • reasons — normalized reason labels with their share. Synonymous source codes are folded into one label; rawCodes lists each underlying code with its own count, so the granularity inside a bucket isn’t lost.
  • other — the Other bucket, with free-text samples members typed. freeTextAvailable: false means the free-text lookup was temporarily unavailable (unknown), not that there is none.

Notes

This is the member-stated reason (the “why”), distinct from the POS-derived churn mechanism in Cancellations. It is provider-agnostic and works for any organization whose customers use the portal cancellation flow.

Errors

  • 401 — missing or invalid API key.

Authorizations

Authorization
string
header
required

Clerk tenant API key. The organizationId encoded by the key is the exact and only tenant scope.

Query Parameters

start
string<date-time>

Inclusive lower bound on the date (ISO 8601 date or datetime). Invalid values are ignored. Omit for all-time.

end
string<date-time>

Inclusive upper bound on the date (ISO 8601 date or datetime). Invalid values are ignored. Omit for all-time.

Response

Member-stated cancellation reasons for the tenant-scoped organization.

organizationId
string
required
dateRange
Date range · object
required
source
enum<string>
required
Available options:
exit_survey
available
boolean
required

False only when the analytics source is unavailable after retries.

totals
object
required
reasons
Survey reason row · object[]
required
other
Other breakout · object | null
required