> AI agents: this is one page from PostHog's docs. Full index of Markdown docs for LLMs: https://posthog.com/llms.txt # Do support tickets predict churn? – Data Stack pocket guide [](/pocket-guides.md) AA Contents - [Introduction](/pocket-guides/data-stack.md) - Ask a quick question [Features & revenue01](/pocket-guides/data-stack/features-drive-revenue.md) - [Onboarding conversion02](/pocket-guides/data-stack/onboarding-conversion.md) - [Upsell-ready accounts03](/pocket-guides/data-stack/upsell-ready-accounts.md) - [Pre-cancellation behavior04](/pocket-guides/data-stack/pre-cancellation-behavior.md) - [Tickets & churn05](/pocket-guides/data-stack/support-tickets-churn.md) - [ARR vs engagement06](/pocket-guides/data-stack/value-vs-engagement.md) - [Channels & retention07](/pocket-guides/data-stack/acquisition-channels-retention.md) - [Lead scoring08](/pocket-guides/data-stack/lead-scoring.md) - [Feature revenue impact09](/pocket-guides/data-stack/feature-revenue-impact.md) - Data modeling [Foundations10](/pocket-guides/data-stack/warehouse-foundations.md) - [Revenue11](/pocket-guides/data-stack/revenue-metrics.md) - [Conversion12](/pocket-guides/data-stack/conversion-metrics.md) - [Activation13](/pocket-guides/data-stack/activation-metrics.md) - [Usage14](/pocket-guides/data-stack/product-usage-metrics.md) - [Dimensions15](/pocket-guides/data-stack/dimension-tables.md) [](/pocket-guides.md)Aa [](/pocket-guides/data-stack/pre-cancellation-behavior.md)[](/pocket-guides/data-stack/value-vs-engagement.md) # Do support tickets predict churn? – Data Stack pocket guide Some support issues are the last straw for your user. This Skill joins PostHog engagement, Zendesk or Intercom tickets and their topics, and Stripe churn, to rank the support issues that precede the most lost revenue. ## Example data and how to read it The Skill looks for patterns like Fig. 1: "Billing confusion" generated fewer tickets than the other topics but cost more in churned revenue than the next two combined. The ranking that matters is lost revenue, independent of ticket volume. | Topic | Accounts | Tickets | Churned revenue after | | --- | --- | --- | --- | | Billing confusion | 14 | 22 | $18,400 | | API rate limits | 9 | 15 | $12,900 | | Missing integration | 6 | 8 | $7,200 | Fig. 1 – Example data: support topics ranked by the revenue that churned after them. ## Get an agent to do the work Copy the Skill below and add it to your agent. The agent needs three sources working together: ticket rows with a customer identifier and a topic field, churned subscriptions and their approximate lost revenue from Stripe, and a per-account engagement measure from PostHog. It joins tickets to churned accounts (by email domain when tickets are logged per-company) and sums churned revenue per topic. It's explicit in the writeup that this is correlation: a high-volume topic among otherwise healthy accounts can still be fine. This requires support-tool data. For churn warning signs from product usage alone, with no tickets involved, that's [Pre-cancellation behavior](/pocket-guides/data-stack/pre-cancellation-behavior.md) instead. posthog-support-tickets-churn/SKILL.md ```markdown --- name: posthog-support-tickets-churn description: > Test whether support tickets predict churn with a three-way join of PostHog engagement, Zendesk/Intercom tickets and topics, and Stripe churn, ranking the support issues that precede the most lost revenue, saved as a reusable PostHog insight. Use this whenever someone asks whether support contact or tickets predict churn, which ticket topics lead to cancellations, which support issues cost the most revenue, or how tickets correlate with retention. Triggers on phrasings like 'do tickets predict churn', 'which support issues cause churn', 'tickets vs retention', 'support topics that lose revenue', or 'does contacting support mean they will leave'. Boundary: this requires support-tool data (Zendesk/Intercom). For churn warning signs from PRODUCT USAGE alone with no tickets, use posthog-pre-cancellation-behavior. It sets up the Zendesk/Intercom and Stripe sources if needed and builds the insight end-to-end. --- # Do support tickets predict churn? **Question:** Which support ticket volumes/topics precede the most churned revenue? **For:** Support & CS · **Difficulty:** Intermediate · **Shape:** a three-way join **Data sources:** PostHog events (engagement) + Zendesk/Intercom (tickets & topics) + Stripe (churn) ## What this produces A saved PostHog insight ranking support issues by the revenue that churns after them, and showing how ticket volume relates to engagement and cancellation — so the user knows which support problems actually cost money. ## Workflow First read `references/posthog-workflow.md` for the shared setup: confirm the PostHog MCP is connected, ensure the Zendesk (or Intercom) and Stripe sources exist (secure connect-link flow for each if not), and learn the real schema. This question needs two external sources plus PostHog, so verify all three are present before querying. Then: ### 1. Identify the pieces in this project - **Tickets & topics.** From Zendesk/Intercom: ticket rows with a customer identifier, created date, and a topic/tag/category field. Confirm which field carries the "topic". - **Churn.** From Stripe: canceled subscriptions and the revenue lost (approximate from the last active `stripe_invoice`/subscription value — see the money gotchas in the shared reference). - **Engagement.** A per-account PostHog engagement measure (event count or active days). - **Join key.** Tickets → accounts by email or domain; accounts → Stripe by email/customer id. Domain joins (`splitByChar('@', email)[2]`) are common when tickets are logged per-company. ### 2. Build and validate the query Adapt names/fields and validate with `query-run`. Core idea: per topic, sum the churned revenue of accounts that filed that topic. ```sql -- Support topics ranked by the churned revenue of accounts that filed them. -- Adapt: ticket table/fields, the topic field, the churn/revenue logic, and join keys. WITH churned AS ( SELECT lower(email) AS email, sum(amount) / 100.0 AS lost_revenue FROM stripe_invoice WHERE status = 'paid' AND lower(email) IN ( SELECT lower(email) FROM stripe_subscription WHERE status = 'canceled' ) GROUP BY lower(email) ), tickets AS ( SELECT lower(requester_email) AS email, subject_topic AS topic FROM zendesk_tickets WHERE created_at >= now() - INTERVAL 180 DAY ) SELECT t.topic, count(DISTINCT t.email) AS accounts_with_topic, count() AS ticket_count, round(sum(c.lost_revenue), 2) AS churned_revenue_after_topic FROM tickets AS t INNER JOIN churned AS c ON t.email = c.email GROUP BY t.topic ORDER BY churned_revenue_after_topic DESC ``` Be honest in the writeup: this shows correlation between topics and churned revenue, not proof the tickets caused churn. A high-volume topic among healthy accounts can still be fine. ### 3. Save the insight Save as a SQL/HogQL table insight named "Support topics ranked by churned revenue", with a note on the churn/revenue method. Return the URL and call out the top revenue-costing issues. ## Self-driving development (offer this) With issues ranked by the revenue they cost, the user can spot accounts hit by the worst ones. Offer to help build a cohort of accounts with those tickets and trigger proactive CS outreach or a fix experiment — protecting revenue automatically. ``` Show full example Fig. 2 – The Skill itself, the file an agent follows to answer this question. ## Doing this by hand 1. **Connect [Zendesk](/docs/cdp/sources/zendesk.md) or [Intercom](/docs/cdp/sources/intercom.md), and [Stripe](/docs/cdp/sources/stripe.md)**, via [Data pipeline > Sources](/docs/data-warehouse/sources.md). 2. **Pull your churned accounts list** from Stripe, and look each one up in your support tool's own reporting (Zendesk Explore, or Intercom's reports) for their ticket topics. 3. **Tally revenue by topic**: either in a spreadsheet, with the [SQL editor](/docs/data-warehouse/sql.md), or by asking PostHog AI to find the answer. See also: [Pre-cancellation behavior](/pocket-guides/data-stack/pre-cancellation-behavior.md) · [ARR vs engagement](/pocket-guides/data-stack/value-vs-engagement.md) [‹ Pre-cancellation behavior](/pocket-guides/data-stack/pre-cancellation-behavior.md)[All guides](/pocket-guides.md)p. 5 of 15[ARR vs engagement ›](/pocket-guides/data-stack/value-vs-engagement.md)