---
title: "How to route visitors based on NPS scores with a QR code survey"
description: "Build a QR code NPS survey that routes each respondent by score: promoters (9-10) to your review or referral page, passives (7-8) to one follow-up question, detractors (0-6) to a private feedback form and a team alert. Exact steps in Linkbreakers, what the respondent sees, where the scores go, and the review rules of Google and Trustpilot."
canonical: "https://linkbreakers.com/help/article/how-to-route-visitors-based-on-nps-scores"
last-updated: 2026-11-01
---

# How to route visitors based on NPS scores with a QR code survey

> Build a QR code NPS survey that routes each respondent by score: promoters (9-10) to your review or referral page, passives (7-8) to one follow-up question, detractors (0-6) to a private feedback form and a team alert. Exact steps in Linkbreakers, what the respondent sees, where the scores go, and the review rules of Google and Trustpilot.

## Short answer

Net Promoter Score (NPS) asks one question, "How likely are you to recommend us to a friend or colleague?", answered from 0 to 10. People who answer 9 or 10 are **promoters**, 7 or 8 **passives**, and 0 to 6 **detractors**; your NPS is the percentage of promoters minus the percentage of detractors ([Bain & Company](https://www.netpromotersystem.com/about/measuring-your-net-promoter-score/)).

To route people by their score in Linkbreakers, put two steps in your QR code's workflow:

1. A **Form** step built from the **Rating Form** type. Its Rating field shows the 0 to 10 scale and saves the answer on the visitor's profile under the key `rating`.
2. A **Visitor Data** condition right after it, with three rules checked in order: `rating` **greater than or equal to** 9, `rating` **greater than or equal to** 7, and `rating` **less than or equal to** 6. Each rule gets its own next step, and **Other Visitors** catches anyone who skipped the question.

The person scans, taps a number, presses Submit and lands straight on the page for their group: promoters on your referral or review page, passives on one follow-up question, detractors on a private "what went wrong?" form that can alert your team through a webhook. It works on QR codes you have already printed, because the image never changes.

One rule to know before you build it: Google and Trustpilot both forbid sending only happy customers to leave a review (often called review gating). The compliant version, explained below, offers the review link to everyone and gives detractors a direct line to you on top.

:::try-ai-prompt {"prompt":"Add a Rating Form asking 'How likely are you to recommend us to a friend or colleague?'. Then add a Visitor Data condition on rating: 9 or more goes to a page thanking them with a button to our referral page, 7 or more goes to a form asking 'What would make it a 10?', 6 or less goes to a form asking 'What went wrong?' with an optional email. Send anyone who skips to a thank you page.","description":"Build the whole NPS routing workflow with one prompt to the Assistant."}:::

## Step-by-step

### 1. Add the NPS question

1. Go to [Links](https://app.linkbreakers.com/workspace/dashboard/links) and open the QR code or link that will carry the survey. Its workflow opens, with the scan on one side and the destination on the other.
2. Click the **+** on the connector between the scan and the destination. Under **Choose Step Type**, pick **Form**, then under **Choose Form Type** pick **Rating Form** ("Collect NPS scores and feedback with a rating field, comment area, and optional email collection").
3. The Rating Form starts with three fields: **Rating** (key `rating`, required), **Comments** (key `rating_comment`) and **Email** (key `$email`, optional). Open **Manage Form Fields** and change the Rating field's label to the NPS question itself: "How likely are you to recommend us to a friend or colleague?". Keep the key `rating`: the condition reads it. Delete Comments and Email here if you want the first screen to be one tap; you will ask the follow-up on the next screen instead.
4. Set the **Form Title** (for example "Quick question") and decide on **Allow visitors to skip this form**. The Rating Form has it on by default.
5. Click **Insert Form Step**.

### 2. Route by score

1. Click the **+** after the form step and choose **Visitor Data** ("Route visitors based on their profile data or custom attributes").
2. Fill the first rule: **Attribute** `rating`, **Operator** set to **Number** then **greater than or equal to**, **Comparison Value** `9`.
3. Click **Add Rule** and fill the second: `rating`, **Number**, **greater than or equal to**, `7`.
4. Click **Add Rule** for the third: `rating`, **Number**, **less than or equal to**, `6`.
5. Click **Insert Visitor Data Condition**. The canvas now shows one outcome per rule, such as `rating greater than or equal to "9"`, plus **Other Visitors**.
6. Click the **+** on each outcome and add what that group should get (see the flows below). Connect **Other Visitors** too, to a thank you page for example: that is where people who skipped the question go.

The rules are checked from top to bottom and the first one that matches wins. That is why the second rule can simply say "7 or more": a 9 or a 10 has already been taken by the first rule. If you reorder the rules, change the numbers to match.

### 3. Test every branch

Scan the code with your phone and answer 10, then 8, then 3, then skip. Each answer should land on its own page. Open the visitor in **Visitors** to see the score saved on the profile and the routing step in the visit's timeline.

## Typical flows

| Group | Score | What to send them to | Linkbreakers steps |
|---|---|---|---|
| Promoters | 9-10 | A thank-you with your review link and a referral offer | **Multi-link Page** with buttons leading to **Redirect** steps |
| Passives | 7-8 | One question: "What would make it a 10?" | A **Form** with one **Text Area**, then the same thank-you page |
| Detractors | 0-6 | A private "What went wrong?" form, with an optional email or phone so you can reply | A **Form** with a **Text Area** and an optional **Email** or **Phone** field, then a page saying who will get back to them |
| Skipped | none | A short thank you | **Thank You Page** on **Other Visitors** |

Several branches can lead to the same step, so passives and detractors can end on the same thank-you page as promoters after their follow-up form.

The same branching works on any answer, not only a score: [a multi-step form that branches on a yes or no question](https://linkbreakers.com/help/article/how-to-build-a-customer-journey-with-forms) shows a second form only to the people who answer yes.

## Asking for reviews without breaking the platforms' rules

Sending only promoters to your review page is the most common way this workflow is built, and it is against the rules of the two biggest review platforms:

- Google's Maps user generated content policy lists, under content that is not allowed, to "discourage or prohibit negative reviews, or selectively solicit positive reviews from customers" ([Google](https://support.google.com/contributionpolicy/answer/7400114)). The same page also forbids offering incentives, such as discounts, in exchange for posting a review.
- Trustpilot's guidelines for businesses say not to be "selective with invitations", including "inviting only those people who you know have had a positive experience" and "pre-screening people who leave a review by directing customers who have had a good experience to leave a review", and ask businesses to "invite consistently and fairly" ([Trustpilot](https://corporate.trustpilot.com/legal/for-businesses/guidelines-for-businesses)).

The pattern that keeps the routing and follows both rules:

- **Everyone sees the review link.** Put a "Leave us a review" button on the final page of every branch, detractors included.
- **The score changes what comes first, not who may review.** Promoters see the review button first, with a referral offer. Detractors first get the private form and a promise of a reply, then the same review button.
- **No reward for the review itself.** A thank-you for answering the survey is your choice; a discount in exchange for posting a review is what Google forbids.

The [review gating guide](https://linkbreakers.com/help/article/how-to-gate-google-reviews-with-a-satisfaction-workflow) shows a version where satisfied customers reach Google and the others reach support. Check it against the two policies above before you use it.

## What the respondent sees

- A page in your [page theme](https://linkbreakers.com/help/article/whats-a-page-theme) with your form title, your question and a row of eleven buttons from 0 to 10. They tap one, it lights up in your button color, and they press **Submit** (or your own button text).
- If skipping is on, a **Skip for now** button (or your own text) under the form.
- Without a score, the form says "Please select a rating from 0 to 10" and does not submit.
- After Submit, the page for their group opens straight away. They never see the rule or their category.
- On the Free plan, pages carry a small "Powered by Linkbreakers" footer. Paid plans have none.

## Where the scores end up

- **Visitors**: every respondent has a profile with `rating` saved as a number, plus any other answer. Use **Filter by attribute** to list, for example, everyone with `rating` of 6 or less, and **Export CSV** to compute your NPS in a spreadsheet: promoters divided by responses, minus detractors divided by responses.
- **The visit timeline**: each visit shows the form submission and the Visitor Data routing step, with which rule matched.
- **Slack**: the native Slack integration posts to the channel you choose. Pick the **Interaction** event trigger and your survey's code in **QR Code Filter** to hear about each submission on that code.
- **Webhooks**: a [webhook](https://linkbreakers.com/help/article/how-do-webhooks-work-in-linkbreakers) with the Interaction trigger sends each submission, answers included, to your own system or to Zapier, Make or n8n. That is how to alert a manager about detractors only: filter on the detractor branch's follow-up form, or on a `rating` of 6 or less.
- **Google Analytics 4**: the [GA4 integration](https://linkbreakers.com/help/article/google-analytics-4-integration-for-qr-codes-and-links) records a `generate_lead` event for each form submission, and while **Send visitor data with events** is on (the default) the score itself goes with it as a number, named `lb_` and the field key, such as `lb_rating`. Register it in GA4 as a custom metric to average it by link, country or device. Emails, names and phone numbers are never sent.

## How it works

The Rating field stores the tapped number as a numeric attribute on the visitor's profile. When the form is submitted, the Visitor Data condition runs on the server in the same request, with the new answer already included, so routing does not wait for anything. Number rules compare the value as a number, so `rating greater than or equal to 9` matches 9 and 10.

Because the score lives on the profile, you can also use it later: a [Visitor Data condition](https://linkbreakers.com/help/article/how-to-use-visitor-data-conditions) on another QR code can send detractors to a different page the next time they scan anything of yours, and the Visitors filter lets you pull every promoter for a referral campaign.

## Limits and caveats

- **The Rating field is 0 to 10 only.** For a 1 to 5 star scale or a CSAT question, use a **Number** field or a **Radio** field with your own options, and set the condition's numbers to match.
- **Linkbreakers does not compute the NPS for you.** It stores and routes each score; the NPS itself comes from the Visitors filter or the CSV export.
- **Skips and old scores.** A score stays on the profile until the same person answers again. Someone who rated you 10 last month and skips today still has `rating` 10, so the condition sends them to the promoter page. If that matters, turn off **Allow visitors to skip this form**.
- **Rule order matters.** The first matching rule wins. With "7 or more" placed above "9 or more", promoters would all land on the passives' page.
- **One person can answer many times.** Each scan shows the form again. Put a [first or returning visit condition](https://linkbreakers.com/help/article/how-to-use-scan-rescan-conditions) in front of the form to thank people who already answered instead.
- **A profile follows a phone, not a customer.** Without an email or phone field, two people sharing a phone share a profile, and one person on two phones has two.
- **Slack alerts are per code, not per score.** The native Slack integration posts every interaction on the code you pick; filtering on the score needs a webhook and an automation tool.

## When this is the wrong tool

- **You run NPS by email to a customer list.** A survey tool that sends, reminds and calculates the score fits better. Linkbreakers is for the moment someone scans or taps a link: a receipt, a table card, packaging, a checkout screen.
- **You need a long survey with branching on every question.** Chain two or three forms at most; beyond that, use a survey tool and put it behind a Linkbreakers QR code with a Redirect step, or connect [Typeform](https://linkbreakers.com/help/article/linkbreakers-typeform-integration-qr-triggered-premium-forms).
- **You only want reviews.** Skip the score and send everyone to your review link with a Redirect step.

## Frequently asked questions

### How do I make a QR code for an NPS survey?

Create a link in Linkbreakers, add a Form step built from the Rating Form type, and download the link's QR code. Each scan opens the 0 to 10 question. You can add the survey to a code that is already printed: the workflow changes, the image does not.

### Can I send promoters to Google reviews?

You can send promoters to your Google review link, but Google's policy forbids selectively asking only positive customers for reviews. Show the review link on every branch, and use the score to decide what each group sees first.

### How do I get alerted when someone gives a low score?

Connect a webhook to Zapier, Make or n8n with the Interaction trigger, then filter on a `rating` of 6 or less (or on the detractor follow-up form) and send the alert to Slack, email or your help desk. The native Slack integration also works if you want every submission on that code in a channel.

### Can I change the score thresholds after printing the QR code?

Yes. Open the Visitor Data step and change the numbers. The next scan uses the new rules; nothing is reprinted.

### Can I use this for CSAT or a 1 to 5 star rating?

Yes, with a Number field or a Radio field instead of the Rating field, and condition rules on that field's key. The Rating field itself always shows 0 to 10.

### Can I build it with the API or an AI agent?

Yes. Form steps and Visitor Data conditions are workflow steps like any other, created with the [Linkbreakers API](https://linkbreakers.com/help/article/how-to-use-the-linkbreakers-api), the MCP server or the in-app Assistant. The rules use the operators `NUMBER_GREATER_OR_EQUAL` and `NUMBER_LESS_OR_EQUAL` on the key `rating`.

## Sources

- Bain & Company, "Measuring Your Net Promoter Score" (0 to 10 scale, promoters 9-10, passives 7-8, detractors 0-6, NPS formula): https://www.netpromotersystem.com/about/measuring-your-net-promoter-score/
- Google, Maps user generated content policy, "Prohibited & restricted content" (selectively soliciting positive reviews, incentives): https://support.google.com/contributionpolicy/answer/7400114
- Trustpilot, "Guidelines for businesses" (selective invitations and pre-screening): https://corporate.trustpilot.com/legal/for-businesses/guidelines-for-businesses
- Linkbreakers Rating Form, Visitor Data condition, Slack, webhook and GA4 behavior, checked in the product's source on 2026-10-31.

## Last reviewed

2026-10-31 by Laurent Schaffner.
