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

  1. In Klaviyo, go to Settings → Other → Web feeds and click Add web feed.
  2. 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
  3. 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:

FieldExampleNotes
rating51–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_urlhttps://yourstore.myshopify.com/products/classic-toteLinks 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.