> For the complete documentation index, see [llms.txt](https://docs.roadmap.so/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roadmap.so/reviews/integrations/klaviyo-review-integration/show-product-review-snippets-in-your-klaviyo-emails-+-flows.md).

# Show product review snippets in your Klaviyo emails + flows

Display product reviews, total review counts, and average ratings in Klaviyo emails.

Use this to show product reviews and rating summaries in Klaviyo emails.

This works especially well in abandoned cart and browse abandonment flows. The customer does not need to have reviewed or purchased the product. The review content comes from the product itself.

#### What this setup does

* syncs each product's latest reviews and rating summary into the Klaviyo product catalog
* lets any Klaviyo template look up review content when the event includes a product ID
* works with Klaviyo's built-in abandoned cart and browse abandonment templates

#### How it works

Roadmap syncs each product's latest reviews, up to five per product, into your Klaviyo product catalog as custom metadata.

It also syncs the product's total review count and average review rating.

The sync runs automatically whenever a new review is published.

Catalog data can be looked up from any template in any flow, as long as the event includes a product ID.

That means you can add review snippets to Klaviyo's prebuilt abandoned cart and browse abandonment templates without custom flow setup.

#### Before you start

* Connect Roadmap with Klaviyo. See [How to integrate Roadmap with Klaviyo](/reviews/integrations/klaviyo-review-integration/how-to-integrate-roadmap-with-klaviyo.md).
* Make sure the product already has published reviews.
* Use a Klaviyo event that includes a product ID or line items.

#### Turn on the catalog sync

{% stepper %}
{% step %}
**Enable the sync in Roadmap**

In Roadmap, open your Reviews Klaviyo integration settings and enable syncing the latest reviews to your Klaviyo catalog.
{% endstep %}

{% step %}
**Check the synced data in Klaviyo**

In Klaviyo, go to **Content → Products** and open any product that has reviews.

Under **Custom Metadata** you'll see the synced review fields.
{% endstep %}
{% endstepper %}

#### Review fields synced to Klaviyo

Each product carries up to five reviews.

Swap `1` for `2` through `5` to reach the second through fifth review.

| Key                         | Contents                                       |
| --------------------------- | ---------------------------------------------- |
| `review_1_title`            | Review title                                   |
| `review_1_body`             | Review text                                    |
| `review_1_author`           | Reviewer's display name                        |
| `review_1_rating`           | Star rating                                    |
| `review_1_date`             | Date the review was published                  |
| `review_1_verified`         | Whether the review is from a verified purchase |
| `total_reviews_count`       | Total published reviews for the product        |
| `average_review_rating`     | Average rating across published reviews        |
| `latest_reviews_updated_at` | When the review data last synced               |

#### Add a review to your email

These snippets work in any Klaviyo template where the triggering event includes line items.

That includes Klaviyo's built-in abandoned cart and abandoned checkout templates.

Paste each snippet into a text block exactly as shown.

Each snippet comes in two forms:

* **Plain** pulls the review for the first item in the cart.
* **Dynamic** loops through every item in the cart and shows a review under each one.

**Review body**

Plain:

{% code overflow="wrap" %}

```
{% catalog event.extra.line_items.0.product_id|default:"" integration="api" %}{{ catalog_item.metadata|lookup:"review_1_body" }}{% endcatalog %}
```

{% endcode %}

Dynamic:

{% code overflow="wrap" %}

```
{% for line_item in event.extra.line_items %} {% catalog line_item.product_id|default:"" integration="api" %} {{ catalog_item.metadata|lookup:"review_1_body" }} {% endcatalog %} {% endfor %}
```

{% endcode %}

**Review title**

Plain:

{% code overflow="wrap" %}

```
{% catalog event.extra.line_items.0.product_id|default:"" integration="api" %} {{ catalog_item.metadata|lookup:"review_1_title" }} {% endcatalog %}
```

{% endcode %}

Dynamic:

{% code overflow="wrap" %}

```
{% for line_item in event.extra.line_items %} {% catalog line_item.product_id|default:"" integration="api" %} {{ catalog_item.metadata|lookup:"review_1_title" }} {% endcatalog %} {% endfor %}
```

{% endcode %}

**Review rating**

Plain:

{% code overflow="wrap" %}

```
{% catalog event.extra.line_items.0.product_id|default:"" integration="api" %} {{ catalog_item.metadata|lookup:"review_1_rating" }} {% endcatalog %}
```

{% endcode %}

Dynamic:

{% code overflow="wrap" %}

```
{% for line_item in event.extra.line_items %} {% catalog line_item.product_id|default:"" integration="api" %} {{ catalog_item.metadata|lookup:"review_1_rating" }} {% endcatalog %} {% endfor %}
```

{% endcode %}

**Total review count**

Plain:

{% code overflow="wrap" %}

```
{% catalog event.extra.line_items.0.product_id|default:"" integration="api" %} {{ catalog_item.metadata|lookup:"total_reviews_count" }} {% endcatalog %}
```

{% endcode %}

Dynamic:

{% code overflow="wrap" %}

```
{% for line_item in event.extra.line_items %} {% catalog line_item.product_id|default:"" integration="api" %} {{ catalog_item.metadata|lookup:"total_reviews_count" }} {% endcatalog %} {% endfor %}
```

{% endcode %}

**Average review rating**

Plain:

{% code overflow="wrap" %}

```
{% catalog event.extra.line_items.0.product_id|default:"" integration="api" %} {{ catalog_item.metadata|lookup:"average_review_rating" }} {% endcatalog %}
```

{% endcode %}

Dynamic:

{% code overflow="wrap" %}

```
{% for line_item in event.extra.line_items %} {% catalog line_item.product_id|default:"" integration="api" %} {{ catalog_item.metadata|lookup:"average_review_rating" }} {% endcatalog %} {% endfor %}
```

{% endcode %}

#### Useful variations

* **A different line item:** `event.extra.line_items.1.product_id` targets the second item in the cart. `.2` targets the third.
* **A different review:** `review_2_body` pulls the product's second most recent review, up to `review_5_body`.
* **Other fields:** use the same lookup pattern for `review_1_author`, `review_1_date`, or `review_1_verified`.

**Add line breaks in dynamic snippets**

Add `<br>` before `{% endfor %}` to separate each item's output:

{% code overflow="wrap" %}

```
{% for line_item in event.extra.line_items %} {% catalog line_item.product_id|default:"" integration="api" %} {{ catalog_item.metadata|lookup:"review_1_body" }} {% endcatalog %}<br>{% endfor %}
```

{% endcode %}

Use `<br><br>` to add a blank line between items.

**Only show the block when a review exists**

Wrap the snippet in a condition so products without reviews render nothing:

{% code overflow="wrap" %}

```
{% catalog event.extra.line_items.0.product_id|default:"" integration="api" %}
 {% if catalog_item.metadata|lookup:"review_1_body" %}
 "{{ catalog_item.metadata|lookup:"review_1_body" }}"
 — {{ catalog_item.metadata|lookup:"review_1_author" }}
 {% endif %}
{% endcatalog %}
```

{% endcode %}

{% hint style="info" %}
The same snippets work in browse abandonment flows.

Any Klaviyo metric that sends a product ID can look up that product's reviews from the catalog.
{% endhint %}

#### Display rating summaries

Use `average_review_rating` with `total_reviews_count` to show product-level social proof.

This example displays an average rating and total review count:

{% code overflow="wrap" %}

```
{% catalog event.extra.line_items.0.product_id|default:"" integration="api" %}
 {% if catalog_item.metadata|lookup:"total_reviews_count" %}
 {{ catalog_item.metadata|lookup:"average_review_rating" }}★
 ({{ catalog_item.metadata|lookup:"total_reviews_count" }} reviews)
 {% endif %}
{% endcatalog %}
```

{% endcode %}

For an individual review, use its numeric rating followed by a star:

{% code overflow="wrap" %}

```
{% catalog event.extra.line_items.0.product_id|default:"" integration="api" %}
 {% if catalog_item.metadata|lookup:"review_1_rating" %}
 {{ catalog_item.metadata|lookup:"review_1_rating" }}★
 {% endif %}
{% endcatalog %}
```

{% endcode %}

Star characters are plain text.

You can style their size and color like any other text in the Klaviyo editor.

Use Klaviyo's **Preview** with a real event before you turn the flow live.

#### Troubleshooting

**No review appears in the email**

Check these first:

* the catalog sync is enabled in Roadmap
* the product has published reviews
* the event includes a product ID or line items

**The snippet works in one flow but not another**

Check the trigger metric.

Make sure the event includes a product ID or line items.

The catalog lookup works across different Klaviyo flows when that product data is available.

**The rating shows as a number**

Use the rating field followed by a star character.

For a product-level rating, use `average_review_rating`.

#### Frequently asked questions

<details>

<summary>Can I use this in browse abandonment flows?</summary>

Yes.

Any Klaviyo metric that sends a product ID can look up that product's reviews from the catalog.

</details>

<details>

<summary>Can I show more than one review per product?</summary>

Yes.

Use `review_2_*` through `review_5_*` to pull the second through fifth synced reviews.

</details>

<details>

<summary>Does the customer need to have bought the product in the email?</summary>

No.

The review content comes from the product. It does not depend on that recipient having reviewed or purchased it.

</details>

#### Related guides

* [How to integrate Roadmap with Klaviyo](/reviews/integrations/klaviyo-review-integration/how-to-integrate-roadmap-with-klaviyo.md)
* [Introduction to Klaviyo review flow setup](/reviews/integrations/klaviyo-review-integration/introduction-to-klaviyo-review-flow-setup.md)
* Exclude products from Klaviyo review properties


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.roadmap.so/reviews/integrations/klaviyo-review-integration/show-product-review-snippets-in-your-klaviyo-emails-+-flows.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
