# The SaaS User Feedback System Blueprint

One page describing the whole system, so it can be built rather than accumulated.
From saasfeedback.ai — https://saasfeedback.ai/blog/user-feedback-for-saas

---

## The architecture in one line

**Trigger → Reach → Ask → Code → Weight → Decide → Close the loop.**

Most teams own step 3 in five different tools and nothing else. The steps either
side are where the value is.

---

## 1. Triggers — the events that should start a conversation

| Event | Delay | Segment | Priority |
|---|---|---|---|
| Trial expired without converting | 2 days | Never-started / stalled / used-not-bought | High |
| Subscription cancelled | 1 day | By MRR band | Highest |
| Downgraded | 3 days | Any | High |
| Payment failed twice | Immediate | Any | Highest (cheapest to recover) |
| No login for 21 days on a paid plan | Immediate | Above median MRR | High |
| Support ticket closed unresolved | 2 days | Any | Medium |
| Upgraded | 7 days | Any | Medium (this is your "what worked" data) |

Write down which of these you currently detect automatically. For most teams the
honest answer is one: cancellation. That single blind spot is why churn analysis
usually feels like reading tea leaves.

---

## 2. Reach — how you get to them

Ranked by response rate, worst to best:

| Channel | Typical response | Reaches people who left? |
|---|---|---|
| In-app modal | Moderate | No — they stopped logging in |
| Cancellation-flow form | Low completion, low quality | Only voluntary cancellers |
| Email survey | Low | Yes, weakly |
| Personal email from a named human | Higher | Yes |
| Phone call | Highest by a wide margin | Yes |

The rule: **channel choice caps everything downstream.** A perfect question in a
channel nobody answers is worth nothing.

---

## 3. Ask — the question set

Keep one canonical question set per segment, versioned, in one place. Not in
five tools with five different wordings.

- Churned customers → see `churn-call-script.md`
- Trial drop-offs → see `trial-dropoff-interview-guide.md`
- Active users → the one-question survey: *"What's the most annoying thing about
  using this right now?"*
- Upgraded users → *"What changed that made this worth more?"* — the most
  under-collected data in SaaS

**Rules that apply to all of them:** ask about specific past events, never about
predictions; open questions before closed ones; four questions maximum in
writing, six in conversation.

---

## 4. Code — turn language into data

See `feedback-tagging-taxonomy.md`. Two axes: what it is about, and what class
of change would fix it. One primary tag each. Keep the verbatim attached
forever — a theme that has lost its verbatims cannot win an argument.

---

## 5. Weight — make the revenue visible

```
theme_weight = Σ MRR of accounts raising it × segment_multiplier × recency_decay
```

Count churned MRR and at-risk MRR separately from healthy MRR. A theme raised
only by accounts that already left is history; a theme raised by both is a fire.

---

## 6. Decide — and record the no

One monthly review, 30 minutes. Every theme above the threshold gets one of:
**doing / not doing / waiting**, with a named owner and, for "not doing", a
written reason.

The written reason is the load-bearing part. Without it the same theme returns
every quarter, argued by whoever heard it most recently.

---

## 7. Close the loop

| Who | What you send | When |
|---|---|---|
| Accounts who raised a shipped fix | "You asked, we shipped, here it is" | Ship day |
| Accounts who raised a declined item | "We're not doing this, here's why" | Monthly |
| Churned users whose issue you fixed | Win-back with evidence, not a discount | Ship day |

Loop closure is the step that makes the next round of feedback better. People
who see their input land, answer again. People who do not, stop.

---

## The maturity check

Score yourself 0–2 on each step. Under 7 out of 14 and you have a collection
habit rather than a feedback system.

| Step | 0 | 1 | 2 |
|---|---|---|---|
| Trigger | Cancellation only | Two or three events | Full lifecycle, automatic |
| Reach | In-app only | Email | Multi-channel including voice |
| Ask | Dropdowns | Open text | Structured conversations with follow-ups |
| Code | Untagged | Ad-hoc tags | Versioned two-axis taxonomy |
| Weight | Counts | MRR sums | MRR × segment × recency |
| Decide | Ad-hoc | Monthly review | Monthly review with recorded refusals |
| Close | Never | Sometimes for shipped items | All three tiers, systematically |
