## TL;DR
The responses are there and the cancellations are there, they simply share no key. Exit surveys only become churn insight when each response joins to the account, plan, tenure, and value that cancelled, and that join needs an identifier carried from the cancellation flow into the survey tool, which is the step that was skipped when the survey was set up in the survey tool alone. Add the identifier to the flow, backfill what can honestly be matched, and the next quarter of exit data becomes analysable instead of anecdotal.

```text
exit survey responses not matched to cancelled accounts: survey ID not passed through the cancellation flow
```

## Use this when
- The survey tool holds responses that cannot be attributed to accounts beyond free text claims
- The cancellation flow and the survey were built by different teams or tools at different times
- Response volume looks healthy, so collection works, only matching fails

## Not for this skill when
- Responses are anonymous by deliberate privacy design, in which case segment level analysis is the ceiling and should be accepted
- The survey fires for flows other than cancellation and the matching complaint is really about those flows

## Steps
1. Inventory what each side holds. List the fields a survey response carries, timestamps, any URL parameters, hidden fields, and respondent provided details, and the fields the cancellation record holds, then identify any candidate join key that exists on both sides today, even a weak one like a timestamp plus plan, to size a possible partial backfill. Verify: the field inventories and candidate keys are documented for both sides
2. Trace the cancellation flow as a user experiences it, in a test account, from the cancel click through confirmation to the survey invitation or embed, recording every redirect and parameter passed. The break is usually visible here, the survey opens bare with no account context because the flow never appends the identifier or a signed equivalent. Verify: the flow trace shows exactly where account context is lost
3. Implement the pass through properly. Have the cancellation flow include the account identifier, and plan and tenure as hidden fields where the survey tool supports it, in the survey link or embed, using an opaque internal ID rather than anything sensitive, and test end to end with a test cancellation so the response lands in the survey tool already carrying its account key. Verify: a test response arrives carrying the correct account identifier and attributes
4. Backfill history conservatively. For past responses, match only where a strong key exists, such as a respondent provided account detail verified against the CRM, or a tight timestamp and plan match for a low volume day, and mark matched confidence honestly. Leave the rest unmatched and say so in reporting, because a forced match teaches the business false churn reasons with false confidence. Verify: the backfill matches a stated percentage with the method and confidence recorded per match
5. Rebuild the churn reason reporting on the joined data, comparing stated reasons against account value, tenure, and segment for the first time, and share one concrete finding with CS leadership to demonstrate what the join unlocks, which builds the support that keeps the wiring maintained through future flow redesigns. Verify: the joined report exists and one segment level finding is circulated
6. Protect the wiring. Add the survey identifier step to the cancellation flow checklist and to any redesign review, and run a monthly match rate report that alerts when the share of responses carrying an account ID drops, because flows get rebuilt often and this parameter is exactly the kind of detail a redesign drops silently. Verify: the monthly match rate report runs and alerts on a simulated drop

## Why it happens
Survey tools optimise for collecting responses and cancellation flows optimise for completing or saving the cancellation, and the join between them is nobody's feature. Without an identifier deliberately carried across, the survey platform holds opinions with timestamps and the CRM holds accounts with outcomes, and no amount of analysis tooling can merge them after the fact beyond guesswork. The data was collected, the value was designed out at the handoff.

Compatibility: Exit survey tools such as Typeform, Qualtrics, or in product survey tools, cancellation flows, and CRM account records, in current versions.

## Variants and edge cases
### exit survey responses cannot match cancelled accounts
['The direct phrasing. Field inventories on both sides first, the absence of a shared key is provable in one short exercise.']

### survey ID not passed cancellation flow
['The implementation variant. Use an opaque internal account ID, never billing details or personal contact details, as the passed identifier.']

### churn exit survey data unusable no account link
['The analysis variant. Report the historical match rate honestly and build decisions on the matched subset with its limits stated.']

Edge cases to work through before you close the incident:
- Self reported account details in free text are unreliable and sometimes wrong on purpose. Verify them before using them as keys and treat them as the lowest confidence tier.
- If multiple brands or products share one survey, the identifier must carry product context too or the join will mix populations.
- Privacy review belongs in the design. Linking survey answers to accounts is legitimate for churn analysis your customers were told about, and the survey copy should say responses may be linked to the account.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_uF9AfIzrrSoaLvaPolIaMw
