With Userflow, you can build in-app surveys to measure customer satisfaction, collect user feedback and conduct user research.

You build a survey simply by adding questions to steps in a flow. Since surveys are based on flows, you get all the power of Userflow’s Flow Builder, such as logic-based triggers to jump between steps based on answers, and the ability to embed surveys anywhere in your app at the right time depending on user behavior.

Here are some ideas of things you can build:

  • A standard NPS survey (Net Promoter Score), which pops up inside your app for active customers e.g. 30 days after subscribing to your product.
  • A CSAT survey (Customer Satisfaction) or a CES survey (Customer Effort Score), which pops up at the right time after the user finishes some task in your app.
  • Ask for feedback either about new features you’ve already built, or features you’re considering building.
  • Ask new users multiple-choice questions and use their answers to personalize the rest of their onboarding flow. Examples: “What is your role within your company?”, “How experienced are you with X software?” or “What is your primary goal with using our software?”

Table of contents

Building a survey

You can either build a survey from scratch, or start with one of our templates in the Create flow dialog.

Create a survey flow

To build a survey, start by creating a new flow.

  • Go to Flows in the sidebar.
  • Click Create flow.
  • Select either to start from scratch or use the NPS template.
  • Give it a name and click the Create flow button.

Add a question

Add some text in the first step. This could be the text of the question, such as “What do you think about our product?”.

In the bottom of the step, click Add block, then Add question.

Add question

You can add questions to any kind of step (speech bubble, tooltip and modal). Note that you can only add 1 question per step.

Configure question

Your question will now show up in the speech bubble:

Question panel

Use the right-side panel to configure your question:

  • Question type: Whether to show a text field, NPS etc. Read more about Question types below.
  • Question name: Used internally for reporting - not shown to users.
  • When answer is submitted: Action(s) to perform when the user submits an answer to the question. Note that you can also use the “link port” (the little light-blue rectangle) next to the question to easily link to the next step.
  • Required: If enabled, the user must fill in an answer before they can continue. Only applies to some question types such as text inputs.
  • Bind to attribute: If enabled, instructs Userflow to update a user attribute to the given value when the answer is submitted. This is useful to recall the answer later in the same flow, in other flows, or just for the sake of reporting. Example: In an NPS survey, store the user’s NPS rating in a user attribute called “NPS”.

Questions and actions

To make Userflow go to the next step when the user submits their answer, click the “link port” (the little light-blue square) next to the question and then click “Add step”:

Link question

Notice how a new step is added and the 2 steps are now linked:

Linked question

You can also add other kinds of actions when the answer is submitted, such as dismissing the flow if the user is all done:

Dismiss survey

Auto-starting survey flows

If you want your survey to automatically start, simply use the Auto-start flow option like usual. Here’s an example where we show a survey to users 30 days after signing up:

Auto-start condition

For things like surveys and announcements it is smart to also set a time (x min/hrs/days) it should show after any other flow to avoid that it shows up right after another flow. You can set this time in the auto-start condititions.

Recurring survey flows

If you want a survey question flow (e.g. NPS) to start on a recurring basis (e.g. every 90 days), then set your auto-start conditions to Start unlimited times or Start multiple times and set the Every x hrs/days to the interval you prefer.

The time interval will relate to when the flow was last started for the user.

Triggers based on answers (logic jumps)

To use an answer to conditionally go to different steps, you have to bind it to a user attribute, and then use this attribute in a trigger.

As an example, let’s look at how to phrase the feedback question in an NPS survey differently depending on whether the user is a promoter (score of 9-10), a passive (7-8) or a detractor (0-6).

First, we’ll enable Bind to user attribute in the question’s side panel, and then pick our NPS user attribute.

Bind NPS attribute

Note that if a fitting attribute does not exist yet, you have to create it first. You can do this directly from the attribute dropdown.

Next, link from the NPS question to the next step. Switch the next step to be a Hidden step using the settings icon in the top. This step only serves as a router, and will not show anything itself. Add 3 triggers, one for each of promoters, passives and detractors. Add User attribute conditions to each trigger like in the screenshot to filter on the NPS attribute. Link from each trigger to 3 different steps.

Branched NPS


The Analytics tab under a flow shows both aggregated stats and individual responses for your survey questions.

Aggregated stats

Some question types, such as NPS, get a dedicated section showing aggregated stats. Here’s a sample NPS stats section:

NPS stats

  • Current NPS shows today’s NPS according to the rolling day window selected in the top right (defaults to 90 days). Measuring NPS with a rolling window gives you more stable numbers that still react to recent responses immediately. In general, if you have a lot of responses, make the window shorter, and if you have few responses, consider making it longer.
  • 30 days ago shows what NPS was 30 days ago. Same for 60, 180 and 365 days ago.
  • The chart with the blue line shows how NPS has developed over time.
  • Below the chart, we show how many responses you’ve had and what the response rate was (number of responses divided by number of times the flow has been viewed).
  • The lower left side shows the composition of promoters, passives and detractors.
  • The lower right side shows a distribution of exact scores given.
  • You can move the mouse over the chart to make the numbers below it adjust to the day you hover over.

Similarly, other questions with strictly numeric answers, such as a 1-5 star rating, also get a dedicated section showing the average rating over time:

Stars stats

Listing all responses

The Recent sessions list at the bottom of the Analytics page lists all responses. There’s a column for each question in your flow.

Recent sessions

Inspecting individual responses

Click an individual session to see just its answers.

Individual response

Exporting to CSV

The list of sessions including all responses can also be exported to CSV. See the Export button next to Recent sessions.

Question types


A Net Promoter Score question.


Multi-line text

A free-form text input with multiple lines. Great for long-form feedback.

Multi-line text

Users can submit their answer either by clicking the button (you can customize its text in the builder’s question side panel) or by pressing Cmd + Enter (or Ctrl + Enter).

Multiple choice

When you want to give users multiple options to choose from.

Multiple choice

If you enable Multiple selection in the question’s side panel, the user may choose multiple options (like checkboxes instead of radio buttons):

Multiple selection

You can optionally enable an “Other” option, which, when clicked, allows the user to enter their own value.


A custom scale, where you can pick the minimum value, maximum value and optional left/center/right labels. Useful for e.g. SEQ (Single Ease Question) surveys.


Single-line text

A free-form text input with a single line. Great for short textual values.

Single-line text

Users can submit their answer either by clicking the button (you can customize its text in the builder’s question side panel) or by pressing Enter.

Star rating

A 1-5 star rating, useful for CSAT (Customer Satisfaction) or CES (Customer Effort Score) surveys.


Got questions? We're here for you!

The best way to get help is to
We usually reply within 5 minutes
You can also send an email to
We usually reply within a few hours