PHPackages                             brainjuredstudio/product-reviews - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. brainjuredstudio/product-reviews

ActiveStatamic-addon

brainjuredstudio/product-reviews
================================

Sync product reviews from Yotpo into Statamic collections with Antlers tags and Schema.org markup.

v1.2.0(today)12—0%proprietaryPHPPHP ^8.3

Since Aug 16Pushed todayCompare

[ Source](https://github.com/adrianlimws/statamic-product-reviews)[ Packagist](https://packagist.org/packages/brainjuredstudio/product-reviews)[ RSS](/packages/brainjuredstudio-product-reviews/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (2)Versions (5)Used By (0)

Product Reviews
===============

[](#product-reviews)

**Statamic 6 addon** that syncs product reviews from **Yotpo** into a local collection. Reviews stay on your server (no client-side Yotpo widgets), are editable in the Control Panel, and render with Antlers plus Schema.org JSON-LD.

> Provider today: **Yotpo**. Architecture supports additional platforms later.

Features
--------

[](#features)

- Pull Yotpo reviews via REST API into a `product_reviews` collection
- Automatic CDN fallback when the Core API times out
- Scheduled and on-demand sync (down to every five minutes)
- Manual override so CP edits are not overwritten
- Antlers tags for listing, averages, and counts
- Drop-in Antlers partial with star rating, schema, photos, and pagination
- Schema.org Product / AggregateRating / Review markup
- CP utility for connection test, status, and “Sync now”

Requirements
------------

[](#requirements)

- PHP 8.3+
- Statamic 6
- A Yotpo account with App Key + API Secret

Install
-------

[](#install)

```
composer require brainjuredstudio/product-reviews
php artisan vendor:publish --tag=product-reviews-config
php artisan vendor:publish --tag=product-reviews-content
php artisan vendor:publish --tag=product-reviews-partials
```

On `php please statamic:install`, config and content publish automatically.

Configure
---------

[](#configure)

Add to `.env`:

```
PRODUCT_REVIEWS_YOTPO_APP_KEY=your-app-key
PRODUCT_REVIEWS_YOTPO_SECRET=your-api-secret
```

Optional:

```
PRODUCT_REVIEWS_PROVIDER=yotpo
PRODUCT_REVIEWS_PAGE_SIZE=100
PRODUCT_REVIEWS_SCHEDULE=hourly
PRODUCT_REVIEWS_YOTPO_SOURCE=auto
PRODUCT_REVIEWS_YOTPO_PRODUCT_IDS=sku-123,sku-456
PRODUCT_REVIEWS_YOTPO_INCLUDE_SITE_REVIEWS=true
PRODUCT_REVIEWS_YOTPO_TIMEOUT=60
PRODUCT_REVIEWS_YOTPO_CONNECT_TIMEOUT=15
```

VariableValuesDefault`PRODUCT_REVIEWS_SCHEDULE``daily`, `twice_daily`, `hourly`, `every_thirty_minutes`, `every_fifteen_minutes`, `every_five_minutes``daily``PRODUCT_REVIEWS_YOTPO_SOURCE``auto` (Core then CDN), `core`, `cdn``auto``PRODUCT_REVIEWS_YOTPO_PRODUCT_IDS`Comma-separated storefront product IDs / SKUs for CDN sync*(empty)*Yotpo credentials: **Settings → Store Settings → API Credentials**.

### Product ID matching

[](#product-id-matching)

`product_id` on synced entries must match the ID you use in Antlers — typically your **storefront SKU / external product ID** (Shopify product/variant ID or SKU), **not** Yotpo’s internal numeric ID.

```
{{ product_reviews product_id="{{ sku }}" }}
```

If Core API syncs fine, SKUs usually land correctly. For CDN-only or CDN fallback syncs, set:

```
PRODUCT_REVIEWS_YOTPO_PRODUCT_IDS=your-sku-1,your-sku-2
```

Those values should be the same IDs Yotpo knows as the product’s `domain_key` / external ID. After the first sync, existing entry `product_id` values are reused automatically on later CDN runs.

If reviews sync but the frontend shows zero, compare **Collections → Product Reviews → product\_id** with the `product_id=` value in your template.

Sync
----

[](#sync)

```
php please product-reviews:sync
# or
php artisan product-reviews:sync
```

Or **Utilities → Product Reviews → Sync Now** in the Control Panel. Use **Test Connection** to verify credentials without a full sync. Sync runs in the background queue so the CP does not time out on slow Yotpo responses.

Default schedule is daily. Ensure the host runs Laravel’s scheduler and a queue worker when using CP sync:

```
* * * * * cd /path/to/site && php artisan schedule:run >> /dev/null 2>&1
```

```
php artisan queue:work
```

Drop-in partial
---------------

[](#drop-in-partial)

Publish the partial once:

```
php artisan vendor:publish --tag=product-reviews-partials
```

Then on any product template:

```
{{ partial:product-reviews/list product_id="{{ sku }}" product_name="{{ title }}" limit="10" page="{get:page}" }}
```

Hide the built-in rating header when your product page already shows one:

```
{{ partial:product-reviews/list product_id="{{ sku }}" show_header="false" }}
```

The partial outputs Schema.org JSON-LD, star rating summary, review list (with photos when synced), and prev/next pagination links. Override styles via the `.product-reviews` classes or copy the partial into your theme.

Antlers
-------

[](#antlers)

```
{{ product_reviews:schema product_id="sku-123" product_name="Product Name" }}

  {{ product_reviews:average product_id="sku-123" }}/5
  ({{ product_reviews:count product_id="sku-123" }} reviews)

{{ product_reviews product_id="sku-123" limit="10" }}

    {{ rating }}/5 — {{ author_name }}
    {{ title }}
    {{ body }}

{{ /product_reviews }}
```

Parameters: `product_id`, `min_rating`, `provider`, `limit`, `page`, `offset`, `sort` (default `reviewed_at:desc`).

Pagination: `page` is 1-based and works with `limit`. Use `offset` for explicit skipping (`offset` wins when both are set).

Moderation
----------

[](#moderation)

**Collections → Product Reviews**

- Unpublish to hide on the frontend
- Enable **Manual Override** before editing so the next sync won’t overwrite your changes

License
-------

[](#license)

Commercial / proprietary. A valid Statamic Marketplace license is required per site. See [LICENSE.md](LICENSE.md).

Support
-------

[](#support)

Email:

Changelog
---------

[](#changelog)

See [CHANGELOG.md](CHANGELOG.md).

###  Health Score

42

—

FairBetter than 88% of packages

Maintenance100

Actively maintained with recent releases

Popularity3

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

4

Last Release

0d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/29c1a743e7ab188314e4589f23a3200c5043c608f08d716582641186f0aa39f4?d=identicon)[adrianlimws](/maintainers/adrianlimws)

---

Top Contributors

[![adrianlimws](https://avatars.githubusercontent.com/u/64565597?v=4)](https://github.com/adrianlimws "adrianlimws (6 commits)")

---

Tags

ecommercereviewsstatamicschema.orgStatamic addonyotpo

### Embed Badge

![Health badge](/badges/brainjuredstudio-product-reviews/health.svg)

```
[![Health](https://phpackages.com/badges/brainjuredstudio-product-reviews/health.svg)](https://phpackages.com/packages/brainjuredstudio-product-reviews)
```

###  Alternatives

[statamic/statamic

Statamic

832182.1k](/packages/statamic-statamic)[statamic-rad-pack/runway

Eloquently manage your database models in Statamic.

137236.2k8](/packages/statamic-rad-pack-runway)[statamic/seo-pro

71548.3k](/packages/statamic-seo-pro)[duncanmcclean/statamic-cargo

Comprehensive e-commerce addon for Statamic. Build bespoke e-commerce sites without the complexity.

3622.8k](/packages/duncanmcclean-statamic-cargo)[cboxdk/statamic-mcp

MCP (Model Context Protocol) server for Statamic CMS v6 — gives AI assistants structured access to content, blueprints, assets, and more.

3219.8k](/packages/cboxdk-statamic-mcp)[aerni/advanced-seo

Comprehensive SEO addon for Statamic with flexibility in mind

1818.9k](/packages/aerni-advanced-seo)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
