How to use in-email review collection
Learn how to let customers write a review directly in a supported email inbox. Selecting Submit review opens a web page that confirms the review or asks them to complete missing information.
This feature is currently available only to accounts with their language set to English in Reviews > Reviews settings > General.
Enable in-email review collection
- In Klaviyo, navigate to Reviews.
- Select Reviews settings, then Requests and replies (or Review requests, depending on your account).
- In the In-email review collection card, select Enable, then confirm your choice in the modal that appears.
If the In-email review collection card is visible but has no Enable button, you’ve already enabled this feature; proceed to the next section.
Once you complete this step, Klaviyo will add a universal content block to your account. You must add this block to the email(s) in your review request flow.
Add a review collection block to a flow email
This block is only supported in flows triggered by the Ready to review event. If you add this block to any other flow or a campaign, it will not render correctly.
- Navigate to your review request flow.
- Open an email template in the flow.
- In the email editor, open Content (or Add content), then select Universal.

- Search for In-email review collection - Klaviyo Reviews.
- Click and drag the in-email review request block into your email.
- Delete the previous star rating block from your message.
- Wait for your changes to finish saving, then click Exit.
Before making edits to the in-email review request block, save a copy of it first. To restore the original form, use your saved copy or the code below. Editing this block requires making direct edits to the code, and is only recommended for developers or code-savvy marketers.
In-email review block code
If you need to revert to the original version of the in-email review collection block, copy your preferred code snippet below and paste it into a dedicated HTML block:
Without review headline
<div class="kl_reviews__email_submission" style="display: block; margin: auto; padding: 24px;"><!--[if !mso]><!--><form action="{{ event.review_link }}" method="GET">
<h4 class="kl_reviews__email_submission__header" style="font-weight: bold;">Rating</h4>
<table class="kl_reviews__email_submission__ratings" style="width: 100%; margin-bottom: 32px;">
<tbody>
<tr>
<td style="width: 20%;"><input id="rating1" style="display: block; cursor: pointer; margin-bottom: 8px;" name="rating" type="radio" value="1"> <label style="display: block; cursor: pointer;" for="rating1">1 ★</label></td>
<td style="width: 20%;"><input id="rating2" style="display: block; cursor: pointer; margin-bottom: 8px;" name="rating" type="radio" value="2"> <label style="display: block; cursor: pointer;" for="rating2">2 ★</label></td>
<td style="width: 20%;"><input id="rating3" style="display: block; cursor: pointer; margin-bottom: 8px;" name="rating" type="radio" value="3"> <label style="display: block; cursor: pointer;" for="rating3">3 ★</label></td>
<td style="width: 20%;"><input id="rating4" style="display: block; cursor: pointer; margin-bottom: 8px;" name="rating" type="radio" value="4"> <label style="display: block; cursor: pointer;" for="rating4">4 ★</label></td>
<td style="width: 20%;"><input id="rating5" style="display: block; cursor: pointer; margin-bottom: 8px;" name="rating" type="radio" value="5"> <label style="display: block; cursor: pointer;" for="rating5">5 ★</label></td>
</tr>
</tbody>
</table>
<h4 class="kl_reviews__email_submission__header" style="font-weight: bold;">Your review</h4>
<textarea class="kl_reviews__email_submission__content" style="display: block; width: 99%; height: 120px; border: 1px solid #d9d9d9; border-radius: 4px; margin-bottom: 32px; font-size: 16px;" name="content">​</textarea> <button class="kl_reviews__email_submission__submit" style="display: block; width: 100%; border-radius: 2px; background-color: #000; color: #fff; cursor: pointer; border: none; height: 50px; font-size: 16px; margin-bottom: 32px;" type="submit"> Submit review </button></form><!--<![endif]-->
<h4 class="kl_reviews__email_submission__fallback" style="text-align: center; font-weight: bold;">Having trouble with the form?</h4>
<a class="kl_reviews__email_submission__fallback_link" href="{{ event.review_link }}" style="display: block; text-align: center; cursor: pointer; font-size: 14px; font-weight: 400;">Write review on the web</a>
</div>With review headline
<div class="kl_reviews__email_submission" style="display: block; margin: auto; padding: 24px;"><!--[if !mso]><!--><form action="{{ event.review_link }}" method="GET">
<h4 class="kl_reviews__email_submission__header" style="font-weight: bold;">Rating</h4>
<table class="kl_reviews__email_submission__ratings" style="width: 100%; margin-bottom: 32px;">
<tbody>
<tr>
<td style="width: 20%;"><input id="rating1" style="display: block; cursor: pointer; margin-bottom: 8px;" name="rating" type="radio" value="1"> <label style="display: block; cursor: pointer;" for="rating1">1 ★</label></td>
<td style="width: 20%;"><input id="rating2" style="display: block; cursor: pointer; margin-bottom: 8px;" name="rating" type="radio" value="2"> <label style="display: block; cursor: pointer;" for="rating2">2 ★</label></td>
<td style="width: 20%;"><input id="rating3" style="display: block; cursor: pointer; margin-bottom: 8px;" name="rating" type="radio" value="3"> <label style="display: block; cursor: pointer;" for="rating3">3 ★</label></td>
<td style="width: 20%;"><input id="rating4" style="display: block; cursor: pointer; margin-bottom: 8px;" name="rating" type="radio" value="4"> <label style="display: block; cursor: pointer;" for="rating4">4 ★</label></td>
<td style="width: 20%;"><input id="rating5" style="display: block; cursor: pointer; margin-bottom: 8px;" name="rating" type="radio" value="5"> <label style="display: block; cursor: pointer;" for="rating5">5 ★</label></td>
</tr>
</tbody>
</table>
<h4 class="kl_reviews__email_submission__header" style="font-weight: bold;">Your review</h4>
<textarea class="kl_reviews__email_submission__content" style="display: block; width: 99%; height: 120px; border: 1px solid #d9d9d9; border-radius: 4px; margin-bottom: 32px; font-size: 16px;" name="content">​</textarea>
<h4 class="kl_reviews__email_submission__header" style="font-weight: bold;">Review headline</h4>
<input class="kl_reviews__email_submission__headline" style="display: block; width: 99%; height: 36px; border: 1px solid #d9d9d9; border-radius: 4px; margin-bottom: 32px; font-size: 16px;" name="headline" type="text">
<button class="kl_reviews__email_submission__submit" style="display: block; width: 100%; border-radius: 2px; background-color: #000; color: #fff; cursor: pointer; border: none; height: 50px; font-size: 16px; margin-bottom: 32px;" type="submit"> Submit review </button></form><!--<![endif]-->
<h4 class="kl_reviews__email_submission__fallback" style="text-align: center; font-weight: bold;">Having trouble with the form?</h4>
<a class="kl_reviews__email_submission__fallback_link" href="{{ event.review_link }}" style="display: block; text-align: center; cursor: pointer; font-size: 14px; font-weight: 400;">Write review on the web</a>
</div>About the in-email review block
The in-email review block contains rating and review content fields, plus a headline field when enabled:
- Review rating
A radio button option to select 1-5 stars - Review content
An open text field for review content - Review headline
An open text field for a review headline or title (included if review headlines are enabled in the review submission page editor when you enable in-email review collection)
Customizing these fields requires editing the block’s code. Image uploads and custom questions are not included in the email form.

Limitations
This functionality relies on the HTML <form> element, which is not supported by all inbox providers. If a recipient opens your review request email in an inbox that doesn’t support the form element, they can use the Write review on the web link to submit their review.
If a reviewer leaves the rating or review text blank, or does not meet your headline or minimum word count requirements, the web form opens with their entered information so they can finish the review.
Custom questions are not supported for in-email review collection. If you have custom questions, reviewers will only see them in certain scenarios.
- If you have required custom questions for the product, submitting the in-email review form opens the web form, where reviewers must complete those questions to submit their review. Partial review submissions will not be stored.
- If you have non-required custom questions and the review meets your other submission requirements, reviewers see a success page after submitting from their inbox. Optional questions are skipped. Reviewers can answer them by selecting Write review on the web in the email before submitting, or by visiting the product page and clicking Write a review.
Outcome
Once you complete these steps, customers using supported inboxes can enter their review in the email. After they select Submit review, a web page confirms the review or lets them finish any required information.
Additional resources
- Understanding reviews performance
Learn how to monitor and understand your reviews analytics in Klaviyo, including your response rate, average rating, and more. These analytics are important to understanding whether your review request flows are working as intended, and tracking your customers’ response to your products.
- How to respond to customer reviews
Learn how to respond to reviews left by your customers. Responses are public, so future shoppers can use this information to inform their buying decisions.