BLOG · GUIDE

How to categorize customer feedback: a taxonomy you can copy

· 8 min read

Most support teams start tagging tickets with good intentions. A year later the helpdesk has 140 tags, half of them used twice, and “other” is the biggest one. Nobody trusts the numbers, so nobody looks at them.

That’s rarely a discipline problem. It’s the shape of the system. A flat list of tags asks one label to answer four questions at once. Which part of the product? What kind of feedback? How does the customer feel? How bad is it?

This guide keeps those questions apart. It ends with the exact default labels we ship in SignalScoop, so you can copy them, change them, or use them to audit the tags you already have.

Count signals, not tickets

One message usually says more than one thing. Take this support email:

Support email · Zendesk

Since yesterday’s update the PDF export crashes on any invoice with more than 30 lines. We send about 200 of those a month, so this is blocking us. Is there a workaround? Also, is it possible to give our accountant read-only access?

  1. BugInvoicing / Exportnegative · critical

    “the PDF export crashes on any invoice with more than 30 lines”

  2. Feature requestUsers & permissionsneutral · low

    “is it possible to give our accountant read-only access?”

One ticket, two signals. Tag the ticket and one of them disappears.

That’s a bug and a feature request in one ticket. Tag the ticket and you pick one and lose the other. Tag it with both and your bug count now includes a ticket that is half a feature wish.

So count the statements inside a message instead. We call each one a signal. The email above holds two. A “thanks, all sorted!” reply holds none, and shouldn’t count toward anything.

The reverse also happens. A customer who mentions the same crash in three replies of one thread has reported one bug, not three. Count it once, at the message where they first raised it. Then let the latest message decide how urgent it is: a thread that went from “small thing” to “we can’t invoice anyone” got more urgent, not more numerous.

Give every signal five labels, not one tag

Tags like export-bug-angry multiply. Ten modules times seven types times three moods is 210 combinations, and no team applies 210 tags consistently.

Flat tags · 140 and counting

  • export-bug
  • export-bug-urgent
  • pdf-crash
  • bug-export-angry
  • invoicing
  • invoice-export
  • urgent!!
  • angry-customer
  • billing-export
  • exports
  • bug
  • p1
  • other
  • other-2
  • misc
  • follow-up

Five labels · one per question

Module
Invoicing / Export
Type
Bug
Sentiment
Negative
Urgency
Critical
Source
Email, via Zendesk
Left: what a year of free tagging looks like. Right: the same feedback, labelled once per dimension.

Split the question into dimensions instead, and give each signal one value on each:

DimensionQuestion it answersExample
ModuleWhere in the product?Invoicing / Export
TypeWhat kind of feedback?Bug
SentimentHow does the customer feel?Negative
UrgencyHow much does it hurt?Critical
SourceWhere did it come from?Email, via Zendesk

Now “angry export bugs from app reviews” is a filter, not a tag somebody had to invent in advance. You can ask questions you didn’t plan for, which is the reason to collect feedback in the first place.

The seven feedback types

These are the types every new SignalScoop account starts with. Each one comes with a one-line test, because a label without a test drifts.

TypeUse it when
BugThe product does not do what it promises.
QuestionThe customer asks how something works.
ComplaintThe product works as promised, but the customer is unhappy with it.
Feature requestThe customer asks for something the product does not do.
ComplimentPraise for the product or the team.
CancellationThe customer wants to leave, or threatens to.
OtherAnything that fits none of the above.

Does the customer ask for something the product doesn’t do?

Yes

Feature request

Goes to product

No

Does the product do what it promises?

No

Bug

Engineering

Yes, but unhappy

Complaint

Product & design

Two questions sort almost every problem signal.

Bug or complaint?

This is the line people argue about most. Ask whether the product does what it promises. If the export crashes, it doesn’t, so it’s a bug. If the export works but the customer finds it slow or ugly, it’s a complaint. The split matters because the two go to different people. Bugs go to engineering. Complaints go to product and design.

Complaint or feature request?

“Reports are slow” is a complaint about something that exists. “Let me export reports to Excel” asks for something that doesn’t, so it’s a feature request. Plenty of messages hold both, which is another reason to count signals.

Why cancellation gets its own type

It’s rare, and it hides. A renewal threat often sits in the fourth paragraph of an email about something else. As its own type it can trigger an alert instead of waiting for someone to read carefully.

Keep “other”, and watch it

Deleting “other” forces bad guesses. Keeping it lets you spot a missing type. If it grows beyond a small slice of your signals, read what’s in it. There is usually a new type in there waiting for a name.

Modules: use the customer’s words

Your module list should match how customers describe the product, not your org chart or your codebase. Customers say “the bank sync”, not “the reconciliation service”. A few rules that hold up:

  • Two levels at most. Invoicing / Export is useful. Invoicing / Export / PDF / Line items is a tree nobody maintains.
  • Start from real messages. Read a few hundred recent ones and write down every part of the product people mention. That’s your first list.
  • Merge synonyms early. “Bank feeds”, “bank sync” and “the bank connection” are one module.
  • Add, don’t dump. When customers keep bringing up something that fits nowhere, give it a module. That’s news about your product, not noise.

Sentiment and urgency are separate scales

A polite customer can report a disaster: “Hi, hope you’re well. Just a heads-up that none of our invoices have gone out since Tuesday.” Sentiment is neutral. Urgency is critical.

A furious customer can report a detail. Three paragraphs in capitals about a button colour is negative sentiment and low urgency. Merge the two scales and you end up prioritising whoever shouts loudest.

Urgency ↑

Polite disaster

“Hope you’re well! None of our invoices went out since Tuesday.”

Fix first. Easiest to miss.

Fire

“WE CANNOT INVOICE. Fix it today or we leave.”

Fix now. Nobody misses this one.

Backlog

“Would love a dark mode at some point.”

Count it, plan it.

Loud detail

“Three paragraphs in capitals about a button colour.”

Reply kindly. Don’t reprioritise.

CalmSentimentAngry

Rank by urgency, not by tone. The top-left corner is where merged scales fail.

Three sentiment levels are enough: negative, neutral, positive. Five-point scales look precise, but two people rarely agree on “slightly negative” versus “negative”, and a scale nobody applies the same way is worse than a coarse one.

For urgency, use four levels and write an example next to each definition. Examples settle arguments that definitions start.

UrgencyMeansExample
LowNice to have, nobody is blocked“Would love a dark mode.”
MediumAnnoying, but there is a workaround“I have to log in to the bank again every two weeks.”
HighBlocks a task for some customers“Since the redesign I can’t find where to add expenses.”
CriticalBlocks core work or money, or risks churn“PDF export crashes. We send 200 invoices a month.”

A worked example

Here is a four-star Trustpilot review, the kind that looks fine on a ratings dashboard. Split into signals, it’s four pieces of feedback:

Trustpilot review

★★★★☆ Sending invoices is quick and the templates look professional. But the bank connection drops every couple of weeks and I have to log in again each time. Support was friendly, though it took them four days to reply. Would love to see recurring invoices.

  1. ComplimentInvoicingpositive · low

    “Sending invoices is quick and the templates look professional”

  2. BugBank feedsnegative · medium

    “the bank connection drops every couple of weeks”

  3. ComplaintSupportnegative · medium

    “it took them four days to reply”

  4. Feature requestInvoicing / Recurringneutral · low

    “Would love to see recurring invoices”

A four-star review, split into four signals.

As a star rating, that’s a 4 and nobody looks twice. As signals, it’s a bank-feed bug and a missed support target, sitting inside a happy review. If ten other customers mention the bank connection this month, the bug shows up as one line going up instead of eleven unrelated tickets.

Change labels without breaking your charts

You will rename things. When you do, apply the new labels to new signals only. Relabel history every time a definition changes and last quarter’s chart shifts under you, and nobody can tell a real trend from a relabel.

Once a quarter, go through the list. Merge types nobody uses, split modules that got too big, and check the size of “other”.

By hand or automatic?

By hand works when volume is low and one person does it. Once several people tag, their labels drift apart within weeks. Once volume reaches hundreds of messages a week, nobody splits messages into signals by hand any more. They tag the ticket and move on, and you’re back to one label per ticket.

A classifier applies the same definitions to every message, splits each one into signals, and doesn’t get sloppy on Friday afternoon. It still gets some wrong, so keep the taxonomy editable and spot-check it every week or two.

That’s what SignalScoop does. It reads messages from email, chat, calls and reviews, finds your product’s modules on its own, and labels every signal on the dimensions above. Paste a customer message below to see it work. Nothing you paste is stored.

Pick an example

0 / 3,000

Nothing you paste is stored. Up to 10 tries an hour.

Your signals land here.

Pick an example to start.

Checklist

  • Count signals, not tickets. One message can hold several, or none.
  • Give every signal one value per dimension: module, type, sentiment, urgency, source.
  • Start with seven types, and write down the test for bug versus complaint.
  • Name modules in the customer’s words, two levels deep at most.
  • Keep sentiment and urgency on separate scales.
  • Apply label changes going forward only.
  • Watch the size of “other”.

Want to test it on a batch of your own messages? The free feedback classifier uses the same taxonomy.

They already told you what to fix.

SignalScoop turns support mail, chats, calls and reviews into counted bugs, requests and trends. Free while we’re in beta.

Start free ↗