Run a WhatsApp NPS Survey and Log Scores to Google Sheets
An n8n workflow that captures customers' WhatsApp replies to a 0–10 'how likely are you to recommend us' survey, logs the score and any comment to Google Sheets, and routes unhappy responders to your team — turning WhatsApp into a lightweight, high-response-rate NPS channel.
- 1
Capture the reply
Add a
Webhooknode subscribed to the WhatsAppmessagesevent. This fires when a customer replies to your NPS template. ACodenode extracts the sender number and message text. - 2
Parse the score
A
Codenode finds a 0–10 number in the reply and assigns an NPScategory: promoter (9–10), passive (7–8), detractor (0–6). Any non-numeric reply is kept as a free-text comment instead of a score. - 3
Log to Google Sheets
A
Google Sheetsnode appends the date, phone number, score, category and any comment. This growing table is your NPS dataset — chart the rolling score or export it whenever you report. - 4
Route detractors to the team
An
IFnode checks fordetractorand, if so, aSlacknode alerts your success team with the number and comment so they can reach out personally — recovering an unhappy customer before they churn or leave a public review. - 5
Send a thank-you reply
An
HTTP Requestsends a short WhatsApp acknowledgement ('Thanks for the feedback!'). Detractors can get a slightly different message promising a follow-up. Closing the loop makes customers feel heard and lifts future response rates.
Frequently asked questions
Why NPS over WhatsApp instead of email?
WhatsApp survey response rates dwarf email — a one-tap number reply feels effortless, so you collect far more scores. The trade-off is you must send the initial ask as an approved template; but the replies come back as free-form messages this workflow captures within the 24-hour window.
How does it classify promoters, passives and detractors?
Standard NPS buckets: 9–10 is a promoter, 7–8 passive, 0–6 a detractor. A Code node parses the number from the reply and applies these bands. Detractors trigger an immediate Slack alert so someone can reach out before a bad experience becomes a bad review.
What if someone replies with words instead of a number?
The parser looks for a 0–10 number first. If it finds none, the workflow logs the raw text as a comment against their last score (or sends a gentle 'please reply with a number 0–10'). This keeps the data clean while still capturing qualitative feedback people volunteer.