Klaviyo logo

Store review scores on the customer's profile

Every review updates the customer's Klaviyo profile with their score and tracks a Submitted Review event for the follow-up flow.

When this happens

New submission on a product-review or NPS form

Do this

Update the customer's Klaviyo profile with the rating and feedback, and track a Submitted Review event

One-directional. A submission triggers the action — nothing is written back into your form.

A review form sent after delivery gets answered by people who already bought something. The score is worth more sitting on their Klaviyo profile than in a spreadsheet, because that is where the next email to them gets decided.

Subscription brands lean on this hardest — coffee, refills, anything that renews. A nine or a ten can go straight to a request for a public review; a four routes to a person rather than a flow. Both come off the same submission.

Setting it up

  1. 1

    Send the review form by link or QR code on the delivery note, so the person answering is the customer who received the order.

  2. 2

    Decide two names before building: nps_score for the profile property and Submitted Review for the metric. Both are awkward to rename once history exists.

  3. 3

    In Zapier, create the Zap with the New Submission trigger and select the review form.

  4. 4

    Add Klaviyo's Create or Update Profile action first, mapping Email Address so the score attaches to the existing customer profile instead of a new one.

  5. 5

    Map the 0–10 answer to nps_score and check Zapier is passing it as a number — a score stored as text cannot be compared with greater-than in a segment.

  6. 6

    Add a second Klaviyo step, Track Event, with the metric name Submitted Review and the written answers as event properties.

  7. 7

    In Klaviyo, build one flow on Submitted Review with a conditional split at seven: above it, ask for a public review; below it, notify whoever handles retention.

  8. 8

    Submit the form as a test customer, confirm both the property and the event landed on that profile, then turn the Zap on.

What maps where

Using the Net Promoter Score Survey as the starting point. These are its real fields — swap in your own and the mapping works the same way.

Form fieldKlaviyo
Your NameFirst and last name attributes, so the follow-up email is not addressed to an email prefix
Email AddressThe profile identifier — the score is written to the customer's existing Klaviyo profile
On a scale of 0–10, how likely are you to recommend us to a friend or colleague?An nps_score property, stored as a number so segments can compare it
What's the main reason for your score?An event property on Submitted Review, quoted in the internal notification for low scores
Which of our products or services did you use?A property that lets the follow-up flow name the right product
What could we do to improve your experience?An event property kept for reading, not used to trigger anything on its own

Variations worth knowing

Split promoters and detractors in Zapier

If you would rather not build the branch inside Klaviyo, use Zapier Paths after the trigger. One path tracks Submitted Review and subscribes the profile to an advocates list; the other sends the answers to whoever handles complaints. The score still lands on the profile either way.

Keep the score history, not just the latest

The nps_score property holds one value and each survey overwrites it. The Submitted Review event does not — every submission is its own record with its own timestamp. Use the property for segments and the event stream for the trend across quarters.

If something isn't arriving

Scores land on a brand-new profile rather than the customer's.

The address in the form does not match the one on the Klaviyo profile, usually because the customer typed a different one. Ask for the email the order was placed with in the field label, and add a Klaviyo find-profile step before the update so mismatches show in Zapier's task history instead of quietly creating duplicates.

A segment on nps_score returns nobody.

Klaviyo stored the answer as text, so a greater-than comparison matches nothing. Add a Zapier formatter step to convert the value to a number, re-run one task to overwrite an existing profile, and check the property type on that profile before rebuilding the segment.

Frequently asked questions

Should the score go on the profile or in the event?

Both, for different jobs. The profile property answers what this customer's score is now, which is what a segment reads. The event answers what they said and when, which is what a flow branches on and what a report counts over time.

Can a low score stop a scheduled campaign going out?

Not on its own. Build a Klaviyo segment of profiles with a low nps_score and exclude it from the campaign, or hold those profiles aside while the follow-up happens. The exclusion is set up in Klaviyo, never on the form.

Does the customer's answer change anything on the form?

No. The flow runs one direction: submission in, Klaviyo action out. Nothing is written back, so the form has no memory of who has already replied. Klaviyo's flow filters are where you stop the same customer being asked twice.

Related automations

Build the form first

The automation needs somewhere to fire from. Publish a form, connect it once, and every submission from then on runs this flow.

Start free