---
title: "Client feedback"
slug: workspace/feedback
url: https://projectri.com/docs/workspace/feedback
section: workspace
audience: workspace
app_route: "/[slug]/[user]/feedback"
permissions: [survey.view, survey.manage]
mobile: "/feedback"
updated: 2026-09-08
source: Projectri documentation
---

# Client feedback

CSAT and NPS scores from clients, the low ones that still need somebody to pick them up, and the rules for who gets asked and how often.

![Client feedback](https://projectri.com/docs-shots/workspace-feedback.png)

## What it is

Two instruments, kept separate. **CSAT** asks about one thing just after it
happened, on a 1–5 scale. **NPS** asks about the firm overall, rarely, on a 0–10
scale. The page has three tabs: the scores and what people wrote, an inbox of low
scores waiting for somebody to pick them up, and the settings that decide who is
asked and how often.

## How to get there

**Feedback** is in the main navigation, at the end of the client run — Pipeline,
Estimates, Quotes, Contracts, Feedback — and in the ⌘K page search.

- `survey.view` — read the scores and comments, and acknowledge an alert. Without
  it the page reads *"You cannot see client feedback."* `survey.view` is
  deliberately excluded from the blanket viewer grant: what a client actually
  thinks of the account is not something an outside collaborator should find in a
  nav bar.
- `survey.manage` — configure triggers, cadence and alert thresholds. Without it
  the **Who gets asked** tab is not drawn.

The page opens on **Needs a reply** if anything is waiting, and on **Scores**
otherwise. A `#scores`, `#alerts` or `#settings` fragment on the URL opens that
tab, once, on first load.

## How to use it

### Read the scores

1. Open the **Scores** tab. The picker beside *What they said* switches between
   **Satisfaction (CSAT)** and **Recommendation (NPS)**. The two are never
   averaged together — the mean of a 1–5 and a 0–10 renders fine and means
   nothing.
2. The first tile is the headline: a CSAT mean out of 5, or an NPS.
3. The second tile is the **Response rate** — how many were asked and how many
   answered.
4. The third is **How the answers split**: the 5-to-1 distribution for CSAT, or
   promoters / passives / detractors for NPS. A 4.0 made of all-4s and a 4.0 made
   of half-5s and half-3s are two different services, and the mean hides that.
5. Underneath, every comment with its score, who left it and how long ago. An
   anonymous response says **Anonymous** rather than showing a blank name.
6. The range is the last 180 days.

### Work the alert inbox

1. Open **Needs a reply**. Each row is a score at or below the threshold, with
   the comment attached and the client named.
2. Press **Client** to open that client's record.
3. Press **I have this** to acknowledge it. The row leaves the inbox.
4. If somebody acknowledged it first, you are told so — theirs stands.
5. A response with no comment reads *"They scored it and left no comment."* It
   still matters; that is the one worth a call.

Acknowledging needs `survey.view`, not `survey.manage` — owning a bad score is
the account owner's job, while deciding who gets surveyed at all is a different
authority.

### Decide who gets asked

1. Open **Who gets asked** and pick the instrument.
2. Each trigger has its own row: **When a support ticket is resolved**, **When a
   milestone completes**, **When a project completes**, **On a schedule**. NPS
   does not offer the ticket trigger at all — it asks about the firm overall, and
   firing it on every closed ticket both misreads it and spends the
   once-a-quarter budget on a password reset.
3. Tick **Ask this** to enable the trigger.
4. **Wait (hours)** is how long after the event the invitation is queued — 0 to
   720.
5. **Not again for (days)** is the fatigue cap for that person. CSAT cannot go
   below **7 days**, NPS below **90**.
6. **Alert at or below** is the score that lands in the inbox. It must sit on the
   instrument's own scale — 1 to 5 for CSAT, 0 to 10 for NPS. Leave it blank for
   no alerts.
7. **Answers are anonymous** is offered for NPS only. CSAT is about one ticket
   and the ticket knows who raised it, so an anonymous CSAT would be a promise
   that cannot be kept.
8. **Save**. The button is disabled until something changes, and the reason a
   value is refused is shown underneath before the request is sent.

## What it affects

- **What clients receive.** An enabled trigger queues an invitation for the
  client contact after the wait, and the scheduled sender emails it. The score
  buttons are in the email itself — clicking one records the score immediately
  and only then offers a comment box.
- **Fatigue caps are enforced at the point of asking,** not at the point of
  configuring. A contact asked inside the window is skipped, and a second
  invitation of the same kind that is queued but not yet sent blocks a third —
  otherwise a ticket resolved, reopened and resolved again stacks three emails
  that all arrive at once.
- **The notification bell.** A score at or below the threshold notifies the
  client's account owner, or every admin if the client has no owner, with the
  comment quoted and a link to the client.
- **Support tickets.** Resolving a ticket is one of the events that can schedule
  a CSAT, if that trigger is enabled.
- **Nothing here changes a client record.** The page reads scores and writes
  survey configuration.

## On mobile

The **Feedback** screen in the Expo app carries the same three tabs. The alert
inbox is the reason it is worth a phone: a CSAT of 1 with a comment attached is a
call somebody owes the client today, and **I have this** is one tap from a
notification.

The settings tab writes on mobile too — four numbers and two switches, each
refused before a request is sent. The alternative is a firm that leaves surveys
off because the decision to turn them on was only available at a desk.

## Limits and gotchas

> [!NOTE]
> An NPS built on fewer than **10 responses** is withheld rather than annotated.
> The tile shows a dash and says how many more are needed. A caveat beside a big
> number gets screenshotted without the caveat.

- **A rising score with a falling response rate is not a win.** When fewer than a
  quarter of invitations are answered — and at least five were sent — the page
  says so: the unhappy clients stop replying first, so the mean rises precisely
  because the people who would have dragged it down have given up.
- **7 and 8 are passives, not mild promoters.** Getting the NPS bands wrong
  inflates the number by roughly the passive share, which is usually the largest
  band.
- An invitation expires **30 days** after it is created — long enough that a
  holiday does not lose the response, short enough that a year-old mailbox cannot
  vote.
- An invitation to a contact who has since been removed or deactivated is
  abandoned rather than retried forever.
- A threshold of 0 on a 1–5 instrument is accepted by the server and can never
  fire, so the form refuses it: a switch that is on and does nothing is worse
  than one that will not be set.
- Only company-wide rules are edited here. A per-client override is a setting on
  the client, not a second list on this page.
- An alert whose subject — the ticket, milestone or project — has since been
  deleted keeps its row and loses only its link. The client still said it.

## Related

- [Clients](/docs/workspace/clients) — where an alert sends you, and where the account owner is set.
- [Support](/docs/workspace/support) — resolving a ticket is the commonest CSAT trigger.
- [Portfolio](/docs/workspace/portfolio) — the delivery view of the same accounts.
- [Notifications](/docs/features/notifications) — how a low score reaches somebody.

## Related

- [Clients](https://projectri.com/docs/workspace/clients.md): The account record for every client and prospect — contacts, projects, contracts, meetings, portal logins and an activity trail, one client at a time.
- [Support](https://projectri.com/docs/workspace/support.md): The internal ticket queue — raise, triage, reply to and resolve support tickets, with SLA state, escalations, work orders and a route into the knowledge base.
- [Portfolio](https://projectri.com/docs/workspace/portfolio.md): Every project on one timeline, in swimlanes by client or department, with milestones, active sprints and what is running late.
- [Notifications](https://projectri.com/docs/features/notifications.md): What Projectri tells you about, on which of the five channels, what you can turn off, and the difference between a channel and a subscription.
