US English (US)
ES Spanish

Submit Article Requests

Do you have a suggestion for an article you would like to see created?
Feel free to submit this form and add your suggestions to our document board.

Please fill out the contact form below and we will reply as soon as possible.

  • Integration Hub
  • Contact Us
English (US)
US English (US)
ES Spanish
  • Docs home
  • Analytics & Data
  • Experience and Event Analytics

Analyze your NPS performance

Access detailed quantitative and qualitative customer feedback

Updated at March 11th, 2026

Submit Article Requests

Do you have a suggestion for an article you would like to see created?
Feel free to submit this form and add your suggestions to our document board.

Please fill out the contact form with the details about the help content you'd like to see.

  • Home

  • Getting Started

    • Installation & Developers

      • Web Experiences

        • Mobile Experiences

          • Workflows

            • Analytics & Data

              • Account Management

                • Best Practices

                  • Integrations

                    Table of Contents

                    Open NPS analytics Overview tab Flow activity chart Summary cards Step breakdown Recent Users NPS tab Score tile Score history Survey Responses Using legacy NPS (v1)? Export NPS data Export types Using legacy NPS (v1)? NPS 2.0 event model Event structure Key fields Other NPS 2.0 events V1 → V2 event mapping Integration support for NPS 2.0 Using legacy NPS (v1)? Good to know If the data doesn't look right

                    After publishing an NPS survey, track responses, monitor your score over time, and export data for reporting. NPS 2.0 analytics are split across two tabs — Overview for engagement metrics and NPS for score data and individual responses.

                    Open NPS analytics

                    1. Go to Experiences > NPS and click on your survey. The analytics page opens.
                    2. Use the date range picker to set the reporting period. Use the segment filter to view data for a specific audience.

                    Overview tab

                    The Overview tab shows engagement metrics — how many users saw the survey and how many completed it. This uses the same analytics format as Flows.

                    Flow activity chart

                    The chart plots two lines over your selected date range: Flows shown (how many times the survey was displayed) and Flow completion (how many users completed the full survey). Use this to spot trends — a spike in "shown" with flat "completion" may indicate users are dismissing or snoozing the survey.

                    Summary cards

                    • Unique Users — the number of distinct users who were shown the survey, plus the total number of times it was shown (one user may see it multiple times across cycles). For example, "2,784" unique users with "13,813 total times shown."
                    • Unique Users Completed — the percentage of unique users who completed the survey (submitted at least a score), plus the overall completion rate across all impressions.

                    Step breakdown

                    The step breakdown table shows per-step metrics for each step in the survey:

                    Column What it shows
                    Step The step number — click the external link icon to open the step in the Builder
                    Created When the step was created
                    Shown How many unique users were shown this step
                    Completed How many unique users completed this step
                    Completion rate Percentage of users shown this step who completed it
                    Completion funnel The percentage of users who reached this step out of all users who started the survey

                    Step 1 is the score question. Step 2 is the feedback question. A high completion rate on Step 1 but a drop on Step 2 means users are submitting scores but skipping the feedback question — this is normal, but if the drop is steep, consider shortening or simplifying your feedback prompt.

                    Recent Users

                    A table of the most recent users who interacted with the survey, showing User (clickable — opens the user's profile) and Event Time.

                    NPS tab

                    The NPS tab shows your actual NPS score, the promoter/passive/detractor breakdown, score trends, and individual responses.

                    Score tile

                    The score tile shows your current NPS score and the response breakdown:

                    • Score — your NPS, calculated as % promoters minus % detractors. Ranges from −100 to +100.
                    • Stacked bar — a horizontal bar showing the percentage split: promoters (green), passives (grey), and detractors (red).
                    • Counts — the number of respondents in each category (e.g., 119 Promoters, 41 Passives, 123 Detractors).

                    For example, if you have 1,200 people respond to your NPS survey and 400 are promoters and 200 are detractors, your NPS score would be 17. 

                    [(400/1,200) - (200/1,200)] x 100 = 17

                    The score is calculated using a trailing 30-day window from the end of your selected date range, so it stays current and smooths out day-to-day spikes.

                    Score history

                    A line chart showing your NPS score over time across the selected date range. Each data point represents the trailing 30-day score calculated on that date. Use this to track whether your score is trending up, down, or holding steady.

                    For example, a score calculated on March 5 uses data from February 4 to March 5. The next day, it shifts to February 5 to March 6.

                    Zight Recording 2025-06-27 at 09.00.16 AM

                    Survey Responses

                    A table of individual responses with four columns:

                    Column What it shows
                    User Clickable link to the user's profile in Appcues
                    Score The score value (0–10), color-coded: green for promoters (9–10), grey for passives (7–8), red for detractors (0–6)
                    Feedback The text the user entered in the feedback step (blank if they skipped it)
                    Date received Timestamp of the response

                    If a user submits multiple scores within the same cycle (e.g., they updated their score), both responses appear in the response table but only the most recent score is used in the NPS calculation.

                    Using legacy NPS (v1)?

                    V1 uses a single-page dashboard (no overview tab) with the NPS score tile, a score history chart, a responses table, and filter options for date range and segment. The calculation method is the same — trailing 30-day window.

                     
                     

                    Export NPS data

                    Click the Export button in the top-right corner of the analytics page. Select a date range, choose an export type, and a CSV will be generated and sent to your email.

                    Export types

                    • Basic — Includes core activity events for the NPS experience (appcues:v2:experience_started, appcues:v2:step_seen, appcues:v2:experience_snoozed, appcues:v2:experience_completed) with reserved fields like timestamp, user ID, and event name. It does not include score or feedback. Use this for a lightweight view of who interacted with the survey and what happened.
                    • Full — Same as Basic but expanded to include all event attributes. Every user property and attribute tied to each event gets its own column. This can result in very wide CSVs. Use this when you need the most comprehensive raw event dump.
                    • Survey — One row per respondent. Combines the score and feedback responses for a single user into a single row, so you get their NPS score and text feedback together alongside user properties. Only includes users who actually responded — not users who were shown the survey but didn't submit. This is the most useful export for most teams doing NPS analysis.

                    The Survey export is usually what you want. Basic and Full are row-per-event formats designed for piping into analytics tools or data warehouses. Survey gives you a clean, one-row-per-person view that's ready for spreadsheet analysis.

                    Using legacy NPS (v1)?

                    V1 export works the same way — click Export, choose a date range, and receive a CSV by email. The CSV columns include attributes.score (the NPS score) and attributes.feedback (the feedback text). You can also export via the Public API to access all NPS events, including when the survey was shown or dismissed.

                    V1 NPS events (Public API)

                    Event name Description
                    nps_survey_started The user was shown the NPS survey
                    nps_score The user submitted a score
                    nps_feedback The user submitted feedback after selecting a score
                    nps_ask_me_later_selected_at The user clicked "Ask Me Later"
                    nps_clicked_update_nps_score The user selected "Update Score" and potentially changed their score

                    Each event includes default properties: timestamp, userId, currentPageTitle, currentPageUrl, and sessionPageviews.

                    When calculating your NPS from exported data, use nps_score events (not nps_survey_started) to count respondents. If a user submitted multiple scores, use the most recent one. If your export spans multiple survey cycles, count each user's score once per cycle.

                     
                     

                    NPS 2.0 event model

                    NPS v1 used dedicated event names like appcues:nps_score and appcues:nps_feedback. NPS 2.0 eliminates those in favor of a generic, extensible survey event model appcues:v2:step_interaction.

                    Event structure

                    All NPS 2.0 responses come through as appcues:v2:step_interaction events with interactionType set to "Survey submitted". The NPS data lives nested inside interactionData:

                    {
                      "name": "appcues:v2:step_interaction",
                      "experienceId": "...",
                      "experienceName": "NPS for legacy customers",
                      "experienceType": "nps",
                      "stepId": "...",
                      "interactionType": "Survey submitted",
                      "interactionData": {
                        "survey": {
                          "id": "<survey-entity-uuid>",
                          "type": "nps"
                        },
                        "submissionId": "<unique-submission-uuid>",
                        "surveyResponses": [
                          {
                            "type": "nps_score",
                            "label": "NPS Score",
                            "value": "9",
                            "fieldId": "<survey-field-uuid>",
                            "order": 0
                          },
                          {
                            "type": "nps_feedback",
                            "label": "NPS Feedback",
                            "value": "this is awesome",
                            "fieldId": "<survey-field-uuid>",
                            "order": 1
                          }
                        ]
                      }
                    }

                    Key fields

                    • survey.id and survey.type tie the response back to a specific survey entity. This is what enables multiple NPS surveys — each has its own survey entity ID.
                    • surveyResponses is an array where each entry has a type (like nps_score or nps_feedback), a fieldId linking back to the survey entity's field definition, a label, and a value.
                    • submissionId uniquely identifies this particular submission.
                    • Score and feedback can arrive in separate submissions — a user might submit a score in one event and follow up with feedback in another.

                    Other NPS 2.0 events

                    Survey seen events (for calculating response rate) also use appcues:v2:step_interaction but with interactionType: "Survey seen" and only the survey object in interactionData — no surveyResponses.

                    Snooze events map to appcues:v2:experience_snoozed, replacing the old appcues:nps_ask_me_later_selected_at.

                    V1 → V2 event mapping

                    NPS 1.0 event NPS 2.0 equivalent
                    appcues:nps_survey_started appcues:v2:step_interaction with interactionType: "Survey seen"
                    appcues:nps_score appcues:v2:step_interaction with interactionType: "Survey submitted" and surveyResponses[].type: "nps_score"
                    appcues:nps_feedback appcues:v2:step_interaction with interactionType: "Survey submitted" and surveyResponses[].type: "nps_feedback"
                    appcues:nps_ask_me_later_selected_at appcues:v2:experience_snoozed

                    Integration support for NPS 2.0

                    Integration NPS 2.0 support Notes
                    Salesforce (v2) Supported Requires the new Salesforce v2 integration card in Studio. The legacy Salesforce integration does not receive NPS 2.0 events. For historical tracking across cycles, see Track historical NPS with Salesforce.
                    HubSpot (v2) Supported Requires the new HubSpot v2 integration card in Studio. The legacy HubSpot integration does not receive NPS 2.0 events.
                    Zapier Supported Select "Custom Event Received" as the trigger event and use the appcues:v2:step_interaction event with a filter of NPS.
                    Client-side analytics (Amplitude, Heap, Mixpanel, Segment, Google Analytics) Partially supported These integrations receive all client-side events by default, including appcues:v2:step_interaction. However, the NPS score and feedback values are nested inside the event payload — verify that your destination is correctly parsing these attributes before relying on the data.
                    Slack Not yet supported The current Slack integration does not receive NPS 2.0 events. As a workaround, use Zapier to route NPS responses to Slack.
                    Custom webhooks Not yet supported Webhooks use event_names filtering, which cannot target the specific attributes inside appcues:v2:step_interaction events.

                    Using legacy NPS (v1)?

                    All integrations that support appcues:nps_score and appcues:nps_feedback events continue to work with v1 surveys. This includes both legacy and v2 versions of Salesforce and HubSpot, Zapier, Slack, custom webhooks, and all client-side analytics integrations.

                     
                     

                    Good to know

                    • Score calculation. Your NPS = % promoters − % detractors. Passives are excluded. Appcues uses a trailing 30-day window so the score stays current.
                    • Multiple responses. If a user submits multiple scores within a cycle, only the most recent score is used in the NPS calculation. Both responses appear in the Survey Responses table.
                    • Segment filtering. Use the segment dropdown to see how your NPS varies across different user groups — by plan, role, tenure, or any segment you've created.

                    If the data doesn't look right

                    • Score seems off? Remember the score uses a trailing 30-day window, not just the selected date range. A short date range may show fewer responses than expected.
                    • Responses missing? Check that the survey is published and that users are meeting the targeting and sampling criteria. See NPS targeting settings.
                    • Export is empty? Verify the date range includes dates when the survey was live and receiving responses.
                    • Integration not receiving NPS 2.0 events? V2 uses appcues:v2:step_interaction instead of appcues:nps_score. We're still rolling out support to NPS 2.0 across our integrations.

                     

                    data analytics nps analysis raw nps export nps properties

                    Was this article helpful?

                    Yes
                    No
                    Give feedback about this article

                    Related Articles

                    • Track Historical NPS with Salesforce
                    • Flow Analytics
                    • Send Appcues NPS Submissions to Google Sheets Using Webhooks
                    • Appcues Public API
                    Appcues logo

                    Product

                    Why Appcues How it works Integrations Security Pricing What's new

                    Use cases

                    Appcues Integration Hub User Onboarding Software Feature Adoption Software NPS & Surveys Announcements Insights Mobile Adoption

                    Company

                    About
                    Careers

                    Support

                    Developer Docs Contact

                    Resources

                    The Appcues Blog Product Adoption Academy GoodUX Case studies Webinar Series Made with Appcues

                    Follow us

                    Facebook icon Twitter icon grey Linkedin icon Instagram icon
                    © 2022 Appcues. All rights reserved.
                    Security Terms of Service Privacy Policy

                    Knowledge Base Software powered by Helpjuice

                    Expand