---
name: support-tickets-to-churn-risk
description: "Score Churn Risk from Support Tickets with an LLM. Use when CS and RevOps find churn late because ticket themes stay buried in Zendesk/Intercom while CRM health scores ignore qualitative signal."
---

# Score Churn Risk from Support Tickets with an LLM

CS and RevOps find churn late because ticket themes stay buried in Zendesk/Intercom while CRM health scores ignore qualitative signal.

## When to use this skill

- The user wants to set up or run this workflow: "Score Churn Risk from Support Tickets with an LLM".
- The user describes this problem: CS and RevOps find churn late because ticket themes stay buried in Zendesk/Intercom while CRM health scores ignore qualitative signal.

## At a glance

- Category: RevOps
- Difficulty: Advanced
- Time saved: 5 hours per week. This figure is an estimate, not a measured result.

## Tools

Options separated by "or" are alternatives; use whichever the user already has.

- Zendesk or Intercom
- n8n or Make
- Claude or OpenAI API
- HubSpot or Salesforce
- Slack

## Steps

1. Create a Zendesk trigger with a webhook action (or an Intercom webhook on conversation events) that sends new and updated tickets to an n8n or Make webhook
2. Fetch the ticket subject, description, latest comments, and requester organization, then match the organization to a CRM company by email domain
3. Send the ticket text to the Claude or OpenAI API with a structured JSON prompt that returns theme, severity (1 to 3), churn risk (0 to 100), and a one-sentence reason
4. Store each classification with the ticket ID and company in a Google Sheet or an n8n data table so results can be audited
5. Roll up by account (highest risk and count of severity 3 tickets in the last 30 days) and write the results to custom company properties in HubSpot or Salesforce
6. When an account crosses the risk threshold or a ticket mentions cancelling, post a Slack alert to the CS owner with the ticket links and the model reason
7. Run a weekly scheduled workflow that groups tickets by theme and posts the top themes to the #product channel
8. Each month, compare 20 model classifications against a human review and adjust the prompt or threshold

## Template outline

Field names, thresholds, and message text are starting points to adapt.

~~~text
n8n or Make Workflow:
1. Trigger: Webhook from Zendesk trigger or Intercom conversation event
2. HTTP: Get ticket details and last 5 comments
3. Lookup: CRM company by requester email domain
4. LLM (Claude or OpenAI), JSON output:
   - Prompt: "Classify this support ticket. Return JSON with theme (billing, bug, performance, onboarding, feature_gap, cancellation, other), severity (1-3), churn_risk (0-100), and reason (one sentence). Ticket: {{ticket_text}}"
5. Store: ticket_id, company_id, theme, severity, churn_risk, reason, created_at
6. Aggregate per company (last 30 days): max churn_risk, count of severity 3
7. CRM update: "Support churn risk", "Top ticket theme", "Last risk update"
8. IF churn_risk >= 70 OR theme = cancellation: Slack message to CS owner
   - "{{company}} support risk {{churn_risk}}: {{reason}} {{ticket_url}}"
9. Weekly schedule: group by theme, post top 5 themes to #product
Output: an account-level risk field in the CRM that reflects ticket content, plus same-day alerts for high-risk accounts
~~~

## Guardrails

- Work only in the user's own accounts and workspaces, with their credentials.
- Confirm with the user before any step that writes to a CRM, sends email or messages, spends credits, or moves money.
- Treat every hours, cost, and threshold figure as a starting assumption and replace it with the user's numbers.
- Do not invent data, prices, or results. If a vendor price matters, check the vendor's current pricing page.

## Source

https://gtmplaybooks.io/playbooks/support-tickets-to-churn-risk/
