splitforms.com

Form template · NPS Survey Template

NPS Survey Template

Updated · plan facts checked against /pricing

An NPS survey asks one question, "How likely are you to recommend us to a friend or colleague?", on a 0-10 scale, then asks why. This free NPS survey template is plain HTML: 11 labelled radio buttons, one follow-up box, an optional email and a hidden customer ID read from the link. The first 500 responses are free in total.

  • 500 free total
  • No PHP · no SDK
  • One POST endpoint
NPS Survey Template — copy-paste form template

This template is one of our free HTML form templates. See more form templates by industry. Rating one order or ticket instead? Use the customer satisfaction survey form.

No backend code

No server, API route, or SDK — your NPS Survey posts straight to one endpoint.

Straight to your inbox

Every submission is emailed to you and saved to a searchable dashboard — spam filtered before it reaches you.

Copy-paste ready

It's plain HTML you own — paste the NPS Survey snippet, swap in your access key, and ship.

Copy and ship

Your NPS Survey, ready to paste.

Plain HTML that posts to the /api/submit endpoint. Replace YOUR_ACCESS_KEY with the key from your dashboard; that's the only edit.

Get your free access key
nps-survey-form.html
<!-- Link to this page as e.g. /nps?cid=C-2291 so the customer ID is captured -->
<form action="https://splitforms.com/api/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">
  <input type="hidden" name="subject" value="New NPS response">
  <input type="hidden" name="survey" value="NPS 2027-Q1">
  <input type="hidden" name="customer_id" id="customer_id">
  <input type="hidden" name="form_loaded_at" id="form_loaded_at">

  <fieldset>
    <legend>How likely are you to recommend [Company] to a friend or colleague?</legend>
    <p id="nps-scale-help">0 = Not at all likely, 10 = Extremely likely</p>
    <div role="radiogroup" aria-describedby="nps-scale-help">
      <label><input type="radio" name="score" value="0" required> 0</label>
      <label><input type="radio" name="score" value="1"> 1</label>
      <label><input type="radio" name="score" value="2"> 2</label>
      <label><input type="radio" name="score" value="3"> 3</label>
      <label><input type="radio" name="score" value="4"> 4</label>
      <label><input type="radio" name="score" value="5"> 5</label>
      <label><input type="radio" name="score" value="6"> 6</label>
      <label><input type="radio" name="score" value="7"> 7</label>
      <label><input type="radio" name="score" value="8"> 8</label>
      <label><input type="radio" name="score" value="9"> 9</label>
      <label><input type="radio" name="score" value="10"> 10</label>
    </div>
  </fieldset>

  <label>What is the main reason for your score?
    <textarea name="reason" rows="4"></textarea>
  </label>

  <label>Email, if you're happy for us to reply (optional)
    <input type="email" name="email" autocomplete="email">
  </label>

  <!-- honeypot: leave empty -->
  <input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off">

  <button type="submit">Send my score</button>
</form>
<script>
  document.getElementById('form_loaded_at').value = Date.now();
  document.getElementById('customer_id').value =
    new URLSearchParams(location.search).get('cid') || '';
</script>

Field by field

What each field collects.

score (radios 0-10)
Eleven options, starting at 0, not 1. A 1-10 scale is the most common NPS mistake: it removes the bottom point and shifts every bucket. Only the two ends are labelled, which is the standard NPS layout; keep the wording of the question as it is and swap in your company or product name.
reason (textarea)
Optional on purpose. Requiring it lowers completion, and the score alone still counts toward your NPS. 'What is the main reason for your score?' works for a 0 and a 10, so one box covers both ends.
email (optional)
For respondents who want a reply. When filled in it becomes the Reply-To on your notification email, so answering an unhappy customer is one click from your inbox.
customer_id (hidden)
Read from ?cid= in the survey link by the script. Put your own customer or account ID in each emailed link and every score arrives tied to an account, without the customer typing anything.
survey (hidden)
Names the round, such as 'NPS 2027-Q1'. Change it each time you send the survey so one form can collect several rounds and the CSV still splits them cleanly.

How to add it

How to add this form to your site.

To add a NPS Survey to your site you need three things: a free splitforms access key, the HTML snippet above, and your key pasted into it. No backend, database, or CAPTCHA library — the form posts to one URL and every submission lands in your inbox and dashboard.

Set the question and round

Copy the HTML to a page such as /nps, swap in your access key, put your company or product name in the question, and set the hidden survey value to this round (for example 'NPS 2027-Q1').

Send a personal link

Email each customer the survey link with their ID, e.g. /nps?cid=C-2291. Send relationship NPS on a fixed schedule (quarterly is common) so rounds stay comparable.

Calculate the score

Every response is emailed to you and saved in the dashboard. On paid plans, export the CSV, count 9-10s and 0-6s, and subtract the detractor percentage from the promoter percentage.

Close the loop

Read the 0-6 comments first and reply to those who left an email. Track the score per round alongside the response count, not as a single headline number.

What's included

What's included.

Net Promoter Score was introduced by Fred Reichheld with Bain & Company in 2003, and its value comes from everyone asking the same question the same way. Change the wording, the 0-10 scale or the end labels and your number stops being comparable with last quarter's. So this template keeps the standard question word for word and puts everything you might want to customise in the follow-up. The scoring is simple: 9-10 are promoters, 7-8 passives, 0-6 detractors, and NPS is the percentage of promoters minus the percentage of detractors, a whole number from -100 to +100. Passives count in the total but in neither group, which is why moving people from 6 to 7 shifts the score as much as moving them from 8 to 9. The hidden customer ID matters for the follow-up step: a detractor's comment is only actionable if you know whose account it is. Standard 0-10 question, scored correctly: % promoters minus % detractors.

  • NPS survey form: 0-10 recommend score, follow-up reason, optional email, hidden survey round and customer ID from the link
  • Plain HTML with labelled fieldsets — paste it into any site
  • One POST endpoint, no SDK — honeypot and spam scoring, no CAPTCHA
What's included with the NPS Survey Template

Where submissions go

Where submissions go.

Reply-to is wired to the visitor's email, so one tap on Reply answers them directly — while the built-in honeypot and automatic spam scoring filter out bots before they reach you. Every submission is emailed to your inbox and can forward to a webhook or Slack the moment a visitor hits send.

  • Reply-to wired to the visitor's email — reply straight from your inbox
  • Honeypot and automatic spam scoring filter bots, no CAPTCHA friction
  • Live dashboard, CSV export, and signed webhooks on paid plans
Spam-filtered submissions from the NPS Survey Template

How SplitForms works

What happens after someone submits your form?

splitforms receives the submission, filters spam, saves it to your dashboard and emails you — then, on paid plans, sends it on to your webhooks and integrations. No backend infrastructure to build.

A SplitForms contact form submission launching straight to your inbox

Add your endpoint

Point your form to your unique SplitForms endpoint. That's it.

HTML form pointing at a SplitForms submit endpoint

Receive submissions

We instantly capture and organize every submission in your inbox.

Submissions inbox with searchable leads and status pills

Route anywhere

Send data to email, spreadsheets, CRMs, webhooks, and 7,000+ apps.

Generic integration tiles for email, sheets, chat, CRM, automate, and webhook

No credit card required. Set up in under 60 seconds.

Connect & automate

Where can submissions go besides email?

On paid plans, submissions can also go to Slack, Discord, Google Sheets, Notion, Airtable, Zapier or any signed webhook — and splitforms works on the platforms you build on, from WordPress and Shopify to Next.js. With Stripe connected, your forms can take payments too.

Connect your SplitForms form to Slack, Google Sheets, Mailchimp, Zapier and more
NewTake payments on your formsDeposits, bookings, order forms — submitters check out through Stripe and the money goes straight to your Stripe account. Included on every paid plan.See payment forms →Need time slots? Online booking →

Setup guides for the stacks you use

Questions

Frequently asked questions.

View all FAQs
What is an NPS survey?

A Net Promoter Score survey asks customers how likely they are to recommend you to a friend or colleague on a 0-10 scale, usually followed by one open question about why. The method was introduced by Fred Reichheld and Bain & Company. Use it to track how customers feel about the relationship over time, not to rate a single order.

How do you calculate NPS?

Group the 0-10 answers: 9-10 are promoters, 7-8 passives, 0-6 detractors. NPS = % promoters − % detractors. Illustrative example: 200 responses with 110 promoters (55%), 50 passives and 40 detractors (20%) gives an NPS of 55 − 20 = 35. Scores run from −100 to +100 and are shown as a whole number, not a percentage.

In a spreadsheet, what are the formulas?

With scores in column B (B2:B201): promoters =COUNTIF(B2:B201,">=9")/COUNT(B2:B201), detractors =COUNTIF(B2:B201,"<=6")/COUNT(B2:B201), and NPS =(promoters − detractors)*100. CSV export is on paid plans; on Free you can read every response in the dashboard and email notifications.

What is a good NPS score?

There is no single number that holds across industries, survey methods and customer types, so be wary of universal benchmarks. The most useful comparison is your own score over time, measured with the same question, the same audience and the same sending method, shown with its response count.

NPS or CSAT: which should I use?

NPS asks about the whole relationship and is usually sent on a schedule. CSAT asks how satisfied someone was with one order, visit or ticket, right after it. If you want to know which specific interaction went wrong, use the customer satisfaction survey form; if you want a periodic loyalty measure, use this one.

Is the NPS survey free to run?

Each response is one submission. The Free plan covers 500 submissions in total (not per month), with no card, which suits a small first round. Larger customer lists and CSV export need a paid plan; Pro is $5 per month. Paid plans can also send each response to Slack or to your own system by signed webhook.

Simple pricing

How much does splitforms cost?

Free gives you 500 submissions for $0 — no card, no time limit. Pro is $5/month for 5,000 submissions a month, and Annual is $49/year for 15,000 a month with every Pro feature.

Free

$0— 500 submissions
 

No card, no time limit

Best for testing

For side projects and indie devs.

  • 500 free submissions
  • Unlimited forms
  • Email notifications included
  • Smart spam filtering
  • Submissions dashboard
  • Redirect after submit
  • MCP server included

Annual

$49/ year
About $4.08 per month, billed yearly
Best value

Every Pro feature with triple the volume — $0.27 per 1,000 at full use.

  • 15,000 submissions per month
  • Unlimited forms
  • Everything in Pro
  • File uploads with 5 GB storage
  • 3 team seats
  • Priority email support

No credit card required on Free • Cancel anytime • Full pricing and FAQ