Back to Playbooks

Turn NPS Scores Into Revenue: An Automation Playbook for Shopify Apps

Free

A detailed automation playbook for Shopify apps that turns in-app NPS responses into targeted journeys for promoters, passives, and detractors, driving reviews, surfacing product insights, rescuing at-risk accounts, and measuring impact inside Spreeflo.

Industry

Niche

Pattern

Loading sequence...

Two Fridays in a row, Lena from CartWizard opened the same spreadsheet.

Column A: store name.
Column B: NPS score.
Column C: “Followed up?”.

Green “yes” cells for the loudest detractors. A lot of blank cells for everyone else.

Promoters never got asked for a Shopify App Store review. Passives never heard from her again. Detractors only got help if they were angry enough to reply in all caps.

CartWizard is a fictional app, but the pattern is real. You ship an in‑app NPS survey, wire the responses into a dashboard, and then… mostly eyeball it.

The sequence at the top of this page is the whole journey, end to end. It takes that messy manual follow‑up and turns it into a system: every NPS response becomes a behavioral signal, and each score routes into a different experience.

For a Shopify app or e‑commerce SaaS, that’s not just a quality‑of‑life upgrade. Promoters are your cheapest app‑store growth channel, and detractors are your clearest early churn warnings. Ignoring either is leaking lifetime value.

In this playbook, we’ll walk through how to:

  • Fire an nps_response event into Spreeflo.

  • Branch contacts into promoter, passive, and detractor paths.

  • Ask promoters for reviews, learn from passives, and rescue detractors.

  • Measure the impact: NPS response rate, promoter‑to‑review conversion, detractor save rate.

All using native Spreeflo nodes: Custom Event, Multi‑way Split, Send Email, Send Internal Email, Time Delay, Wait Condition, Add Tag, and the Segment Builder.

Step 1: Capture NPS as a Custom Event, not a dead dashboard

The journey starts the instant someone hits “Submit” on your NPS survey.

In your app or NPS tool, you send a nps_response event into Spreeflo via the Spreeflo SDK or the Spreeflo API. Include at least:

  • score (0–10)

  • comment (optional free‑text)

  • survey_id or campaign (if you run multiple surveys)

You should also identify the user so the event links to a contact record. If you’re using the SDK, that’s a Spreeflo.identify("email@store.com", { …attributes }) call. If this is server‑side, the API call achieves the same thing.

Why this matters for founder‑led app teams:

  • You now have a behavioral signal, not just a number in a dashboard.

  • You can re‑use this signal anywhere: segments, other journeys, internal alerts.

  • You’re building the “every customer is unique” picture Spreeflo is designed for.

In the journey canvas, the first node is a Custom Event trigger configured like this:

  • Event name: nps_response

  • Property conditions: off (we’ll branch later)

  • Re‑enrollment: on

Re‑enrollment is important here. You might collect NPS at 30, 60, and 180 days. Each response should kick off this journey again. The mid‑journey lock in Spreeflo prevents duplicates: while a contact is going through the flow, another NPS event won’t enroll them again. That’s fine, because this journey is short by design.

From this Custom Event trigger, every NPS responder moves immediately into the next step.

Step 2: Record that they responded (and keep your data tidy)

Before we think about promoters vs detractors, we want a durable record that “this person has ever answered NPS.”

Right after the trigger, add:

  1. An Add Tag action:

  • Tag: nps-responded

  • Force tag trigger: off

This tag gives you quick visibility into who engages with surveys. Later, you can build a segment like “nps-responded but app_uninstalled” to see how NPS correlates with churn.

Optionally, from your app, also write an attribute like last_nps_score via identify/API when you send the event. That’s richer data for your segment builder and reporting, without relying on the journey itself to mutate attributes.

Then we’re ready for the key decision point.

Step 3: Multi‑way Split into promoters, passives, and detractors

We want three mutually exclusive paths:

  • Promoters (9–10): ask for a public review and referrals.

  • Passives (7–8): learn what would make them a 9 or 10.

  • Detractors (0–6): fast, human outreach to prevent churn.

Drop a Multi‑way Split node right after the Add Tag.

Each branch uses the Segment Builder with a Custom Events rule for nps_response:

  • Branch 1: Promoters
    Condition: Custom event nps_response
    Operator: triggered at least 1 time
    Time window: in the last 1 day
    Property filter: score greater than 8

  • Branch 2: Passives
    Condition: Custom event nps_response
    Operator: triggered at least 1 time
    Time window: in the last 1 day
    Property filter: score greater than 6 AND score less than 9

  • Branch 3: Detractors
    Condition: Custom event nps_response
    Operator: triggered at least 1 time
    Time window: in the last 1 day
    Property filter: score less than 7

The “in the last 1 day” window keeps the logic focused on the current survey, even if you’ve collected NPS in the past.

The Multi‑way Split runs branches top to bottom. Put promoters first, passives second, detractors third, and leave the else branch for edge cases (missing scores, test data). Each branch now leads into its own mini‑journey.

This is where most of the value hides, so we’ll walk each one.

Promoter path: turn 9s and 10s into reviews and referrals

Promoters already like you. The job of this branch is simple: say thanks, ask for a specific action, and avoid nagging.

1. Add a promoter tag

First node on this branch: Add Tag.

  • Tags: nps-promoter

  • Force tag trigger: off

This is your canonical flag for “people who scored 9–10 at least once.”

2. Send a thank‑you + review request email

Next, add a Send Email node.

  • Use your preferred sender identity.

  • Enable “Send only once” so the same person doesn’t get the identical review ask every time they become a promoter.

  • Build the email in the email builder, or pull a template from your templates library.

Email content pattern:

  • Subject: “Quick favor from the CartWizard team?”

  • Body:

  • Thank them for the feedback.

  • Name something specific they’re using (“You’ve recovered 37 carts this month.”).

  • Ask them to leave a short review on your app‑store listing, with a clear button.

If you’re on the Professional plan, this is a great place to use AI personalization from the AI variables guide: pull in their store name, plan, or key metrics to make the ask feel human.

3. Wait a week before nudging

After the Send Email, drop a Time Delay:

  • 7 days, unit: days

This respects pacing and gives them time to act organically.

4. Check who engaged

Add a Check Email Activity process, referencing that review‑request email.

  • Branch one: clicked (Link Clicked)

  • Branch two: opened (Opened)

  • Else: everyone else (did not open / did not click)

Now:

  • For clicked: Add Tag → nps-promoter-review-clicked. Optionally, Send Internal Email to your team to celebrate big‑logo promoters. Then end that branch.

  • For opened: you might decide that’s “good enough” and simply tag them nps-promoter-opened.

  • For else: add a second, gentler Send Email with a different subject, e.g. “Did we earn five stars?” and a single button. Because the Check Email Activity node sits between the two Send Email nodes, you’re still respecting the “no back‑to‑back send” rule. The first email, a delay, a check, then the second email.

This branch directly drives your “promoter‑to‑review conversion” metric: the share of promoters who click the review link or submit a review. For a Shopify app, each incremental review compounds install rate from search and category pages.

Passive path: mine the middle for product insight and future promoters

Passives (7–8) rarely yell. They also rarely renew if your category is crowded.

This branch is about learning and lightly nurturing, without over‑messaging.

1. Tag as passive

Add an Add Tag node:

  • Tag: nps-passive

This makes it easy to build a “borderline happy” segment for future launches and win‑back campaigns.

2. Send a “help us get to a 10” email

Then a single Send Email:

  • “Send only once”: on.

Email structure:

  • Thank them for the rating.

  • Acknowledge that 7–8 is good, but you’re aiming for “wow.”

  • Ask one simple question: “What would need to change for you to feel comfortable giving us a 9 or 10?”

  • Invite them to reply directly. No survey link; just hit reply.

3. Wait for engagement before deciding what to do next

Drop a Wait Condition:

  • Condition: Email Activity “replied” to this passive email at least 1 time in the last 7 days.

  • Timeout: 7 days, unit: days.

After the wait, add an If/Else:

  • If they replied:
    - Add Tag: nps-passive-replied.
    - Optionally, Send Internal Email to product/support with their comment so you can aggregate themes.

  • Else branch:
    - Add Tag: nps-passive-no-response.
    - Exit silently.

We don’t send a second email here. These users are neutral, not highly engaged, and many SaaS teams find that one thoughtful ask is enough. You can always use the tags later when launching a major feature that addresses their feedback.

Detractor path: treat low scores like churn alerts, not bad vibes

Detractors (0–6) are your early‑warning system. For a $49/mo app with 2,000 stores, saving even 10–20 detractors a month makes a real MRR difference.

This branch is where cross‑channel automation really earns its keep.

1. Tag as detractor

Start with Add Tag:

  • Tag: nps-detractor

This lets you flag any other journeys that should avoid hard‑sell upsells for now.

2. Alert the humans immediately

Next, add a Send Internal Email node to notify your team.

  • Recipient: a shared inbox or the founder.

  • Subject: “Detractor alert: {{contact.email}} scored {{nps_score}}”

  • Body: include the score, any NPS comment (sent via your NPS tool into attributes), store URL, current plan, and install date.

This email gives support or success everything they need to decide how to act: jump into Intercom, record a Loom, propose a call.

3. Follow up with a personal note

Insert a short Time Delay:

  • 1 hour, unit: hours.

Then a Send Email to the contact, ideally from a real person (your personal sender identity):

  • Thank them for being honest.

  • Acknowledge the score directly (“A 3 is painful to read, but I’m glad you told us.”).

  • Offer a path forward: ask one clarifying question or offer a 15‑minute call.

  • Include a soft guarantee (“If we can’t get this to a place you’re happy with, I’ll make sure cancelling is painless.”).

Because there’s a Time Delay between the internal and external emails, you avoid spammy back‑to‑back messages.

4. Wait for a reply or a support event

Add a Wait Condition:

  • Condition:
    Group with OR:
    - Email Activity “replied” to this detractor email at least 1 time in the last 3 days
    OR
    - Custom event support_ticket_opened triggered at least 1 time in the last 3 days.

  • Timeout: 3 days.

After the wait, use an If/Else:

  • If condition met (they replied or opened a ticket):
    - Add Tag: nps-detractor-engaged.
    - Optionally, a Send Internal Email back to the team: “Detractor engaged, keep going.”

  • Else:
    - Add Tag: nps-detractor-at-risk.
    - Optionally, a final, short Send Email: “Should we part ways?” with a link to cancellation or a quick form. The Wait Condition between emails keeps spacing compliant.

This path is how you raise your “detractor‑to‑save rate”: the percentage of detractors who are still active subscribers 30–60 days later.

Measuring if the journey is working

You built the flow. Now you need to know if it’s paying rent.

A few simple segments and journey stats give you the core metrics:

1. NPS response rate

Segment: Custom event nps_response triggered at least 1 time in the last 30 days.

Divide that count by the number of users you sent the NPS survey to (from your NPS tool or a separate Spreeflo campaign). If response rate is low, consider:

  • Moving the NPS prompt closer to an “aha” moment in your app.

  • Following up non‑responders with a gentle nudge email from a campaign or journey.

2. Promoter‑to‑review conversion

Segment: tagged with nps-promoter AND Email Activity “clicked” the review‑ask email link at least 1 time in the last 30 days.

Divide by total nps-promoter in the same window. Small copy changes, different CTAs, or a tweak to when you send the email can move this percentage.

3. Detractor save rate

Segment A: nps-detractor AND custom event app_uninstalled has not triggered in the last 60 days.
Segment B: all nps-detractor over that same 60‑day window.

A/B is your save rate. If it’s low, you might:

  • Shorten the delay before your first personal email.

  • Tighten the Wait Condition to treat total silence as a stronger churn predictor.

  • Add a Webhook into your own backend to automatically apply credits or freebies for low scores.

Because everything runs on the same contact record, you can refine these segments with any behavior you track through web tracking and analytics: visits to your pricing page, time on site, feature usage via custom events.

Why this kind of routing compounds for small SaaS teams

For a lean e‑commerce app team, you probably don’t have a CSM squad combing through NPS comments every day. You have:

  • A founder juggling product, partnerships, and support.

  • A small marketing function trying to keep churn below 5% while growing MRR.

This journey turns raw sentiment into structured data and consistent action:

  • You capture NPS scores as events tied to specific contacts so you can speak to each uniquely.

  • You nurture promoters into reviewers, passives into valuable feedback, and detractors into saved accounts.

  • You stop leaving lifetime value on the table by letting feedback sit untouched.

Once it’s built, you don’t have to remember to do any of this. NPS responses arrive, Spreeflo routes them, and your team steps in only where humans actually change the outcome.

That’s the kind of automation founder‑led businesses win with: not blasts, but tight, behavior‑driven journeys that quietly run in the background while you build the product.