Klaviyo "Best Reviews" Feed
Last updated: June 4, 2026
BetterReviews serves a per-store JSON feed of your best reviews — ranked by our AI quality score, not just “newest first” — at a stable URL. You register that URL once in Klaviyo as a Web Feed, then loop over it in any campaign or flow with a single block of Liquid. Klaviyo re-reads the feed roughly every 15 minutes, so newly approved reviews show up in your next send automatically.
This feed needs no Klaviyo API connection — it’s just a public URL you paste into Klaviyo. You can set it up before, after, or instead of connecting your Klaviyo account.
What makes our feed different
Every review app can hand Klaviyo a list of reviews. Ours returns the reviews most worth showing — highest AI quality score first, only 4–5★, only reviews with a linkable product — so your newsletter leads with your strongest social proof instead of whatever happened to come in last.
Before you start
You need:
- A Klaviyo account with access to Settings → Other → Web feeds
- Admin access to your BetterReviews dashboard
- At least a few approved reviews (the feed works with zero, it just returns an empty list until reviews are approved)
You do not need:
- A Klaviyo API key or app connection
- Any code in your theme
- Any Shopify scope change
1. Enable the feed
In the BetterReviews dashboard, open Settings → Integrations → Klaviyo and click Enable best-reviews feed. We generate a private feed URL that looks like:
https://api.betterreviews.app/feeds/klaviyo/reviews/<your-token>.json
Copy it with the Copy URL button. Treat the URL like a secret — anyone with it can read your published reviews (the same content already public on your storefront, never customer emails or private data). If it ever leaks, click Rotate to invalidate the old URL and issue a new one.
2. Register the feed in Klaviyo
- In Klaviyo, go to Settings → Other → Web feeds and click Add web feed.
- Set:
- Feed name:
betterreviews(lowercase — you’ll reference this exact name in your email) - Feed URL: the URL you copied above
- Request method:
GET - Content type:
JSON
- Feed name:
- Save. Klaviyo fetches the feed immediately and then every ~15 minutes.
3. Drop the reviews into an email
In any campaign or flow email, add a Text block, switch to the source/</> view, and paste this. It loops over the feed and renders each review:
{% for review in feeds.betterreviews.items %}
<table width="100%" style="margin-bottom:16px;border-bottom:1px solid #eee;padding-bottom:16px">
<tr>
<td>
<div style="color:#f5a623;font-size:18px">
{% for i in (1..review.rating) %}★{% endfor %}
</div>
{% if review.title %}<strong>{{ review.title }}</strong><br>{% endif %}
<p style="margin:8px 0">{{ review.body }}</p>
<small>— {{ review.author }} on
<a href="{{ review.product_url }}">{{ review.product_title }}</a>
</small>
</td>
</tr>
</table>
{% endfor %}
Want just your single best review (for a hero block)? Reference the first item directly:
{% assign best = feeds.betterreviews.items[0] %}
{% if best %}
<div style="color:#f5a623;font-size:18px">{% for i in (1..best.rating) %}★{% endfor %}</div>
<p>"{{ best.body }}"</p>
<small>— {{ best.author }} on <a href="{{ best.product_url }}">{{ best.product_title }}</a></small>
{% endif %}
What the feed returns
The feed is a JSON object with an items array. Each item is one review:
| Field | Example | Notes |
|---|---|---|
rating | 5 | 1–5; the feed only includes 4★ and 5★ reviews |
title | "Exactly what I hoped for" | May be empty |
body | "The fabric is heavier than I expected…" | Review text, HTML stripped |
author | "Jordan M." | The public reviewer name (same as on your storefront) |
product_title | "Classic Tote" | |
product_url | https://yourstore.myshopify.com/products/classic-tote | Links straight to the product (uses your Shopify domain) |
date | "2026-05-30T12:00:00Z" | When the review was written |
Reviews are ordered best-first: highest AI quality score, then highest rating, then most recent.
Notes & limits
- Up to 50 reviews per feed by default — plenty for a “best of” block. Ask support if you need more.
- ~15-minute freshness. A newly approved review appears in your emails within about 15 minutes, not instantly.
- Only published reviews appear. Pending, hidden, or rejected reviews are never in the feed.
- No customer data. The feed carries only the public review content — never customer emails, order details, or anything private.
Rotating or disabling
- Rotate issues a brand-new URL and stops the old one working on Klaviyo’s next fetch — update the Web Feed URL in Klaviyo after rotating.
- Disable stops serving the feed but keeps your URL, so re-enabling later gives you the same link back.