Hulo Global
Plugins Roadmap

Review Requests

Automated post-purchase Trustpilot review invitations, timed off order dates — free Trustpilot integration, customer exclusions, cooldown, editable emails.

1,278 npm downloads last monthListed in the Vendure plugin directoryVendure 3.5 – 3.7MySQL · MariaDB · PostgreSQLAGPL source + commercial licence

What it does

Built for production from day one.

Turn happy customers into reviews on autopilot. An hourly worker finds orders that reached Delivered / Payment settled / Shipped a set number of days ago and emails the customer a branded, Trustpilot-style invitation linking to your FREE Trustpilot review page — no paid Automatic Feedback Service. Optionally pull your live TrustScore from the free Trustpilot API to show as social proof. Exclude any customer or domain, respect a per-customer cooldown, dedupe per order, and let anyone unsubscribe in one click. Fully editable email with live preview and test-send, per channel.

Timed off order dates

Send N days after an order reaches Delivered, Payment settled or Shipped — whichever milestone you choose, per channel.

Free Trustpilot, done right

The review button links to trustpilot.com/evaluate/your-domain — organic Service Reviews, completely free. No paid AFS, no per-invite cost.

Live rating as social proof

Show your current star rating + review count right in the email ("Rated 4.8 by 1,240 customers") — pulled live from Trustpilot or Google. Optional; the email works without it.

Trustpilot, Google or anywhere

One-click platform picker builds the review link for Trustpilot, Google reviews, Reviews.io — or paste any custom URL. Trustpilot and Google also show a live star rating in the email.

Product reviews too

Ask for a store review, product reviews, or both. In product mode the email lists the actual items the customer bought, each with its own "Review this" button linking to your storefront's product-review page.

Exclude customers

Never invite specific emails or whole domains — wholesale accounts, staff, VIPs. One-click unsubscribe in every email auto-excludes.

No over-asking, no double-sends

Deduped per order with a concurrency guard on the sender, a per-customer cooldown (default 120 days), and a minimum order value — a customer can't be invited twice for one order, and every skip is audit-logged once with its reason.

Your voice

Fully editable subject + HTML body per channel with {{firstName}}, {{orderCode}}, {{businessName}}, {{reviewUrl}} and a live rating block, plus preview and test-send.

Multi-tab admin

Overview (sent / eligible now / opt-outs / failed + your live rating), Settings, Email, Exclusions and an Activity log. WCAG AA in light + dark.

Send from the order page

Every order's detail page shows its invitation status — sent, scheduled, excluded or opted out — with a manual Send now, a confirmed Resend, and a send-anyway override for staff judgement calls.

GDPR-friendly

Signed one-click unsubscribe links, an opt-out list, and full send-log auditing.

MySQL, MariaDB & PostgreSQL

The plugin follows whatever database your Vendure `dbConnectionOptions` use — no configuration. Verified against PostgreSQL 17; MySQL/MariaDB installs are unchanged.

Buy & activate from the admin

Start the 14-day free trial, subscribe or buy lifetime from the plugin's admin page — checkout opens in a new tab and the key installs itself within a minute, renewals included. The same card shows your plan, first-charge date and a <strong>Manage billing</strong> link to the Stripe portal (update card, cancel, switch plan). Already have a key? Paste it into the same banner. No `.env` edit, no redeploy; environment keys still take precedence for infrastructure-as-code setups.

One-click in-app updates

When a new version ships, an update banner shows current → latest with a What's-new link to the changelog. "Update now" installs the registry-verified release via your project's own package manager (yarn/npm/pnpm auto-detected) and gracefully restarts under pm2/systemd. Disable with `HULO_SELF_UPDATE=off`.

Install

Three steps, five minutes.

Add the package

Or run the one-line installer that does steps 1–3 for you:

curl -sSL https://huloglobal.com/vendure-plugins/review-requests/install.sh | bash

Prefer to do it by hand?

yarn add @huloglobal/vendure-plugin-review-requests # or npm install @huloglobal/vendure-plugin-review-requests # or pnpm add @huloglobal/vendure-plugin-review-requests

Register it

In your vendure-config.ts:

# vendure-config.ts import { ReviewRequestPlugin } from '@huloglobal/vendure-plugin-review-requests'; export const config: VendureConfig = { plugins: [ ReviewRequestPlugin.init({ publicBaseUrl: 'https://shop.example.com', licenceKey: process.env.HULO_LICENCE_KEY_REVIEW_REQUESTS, }), // ... your other plugins ], };

Compile the admin UI

Add the extension to your compileUiExtensions call so the plugin's page appears in the admin:

// compile-admin-ui.ts import { compileUiExtensions } from '@vendure/ui-devkit/compiler'; import { ReviewRequestPlugin } from '@huloglobal/vendure-plugin-review-requests'; compileUiExtensions({ outputPath: path.join(__dirname, 'admin-ui'), extensions: [ReviewRequestPlugin.uiExtensions], });
No migration to run. The plugin creates its tables on first boot and upgrades them in place on later versions.

That's it. Restart Vendure and the plugin's page is in the admin. Without a key it runs in the free tier; open the page and click Start 14-day free trial to switch everything on — the key installs itself, no .env edit, no redeploy.

Free tier vs licensed

Try the whole thing, keep the core for free.

Install without a key and everything on the left works indefinitely. The 14-day trial switches the right-hand column on with your real traffic; a licence keeps it on.

Free, no key

  • Configure per channel, preview the email
  • Test-send to yourself

Trial + licensed

  • Scheduled sending after every order
  • Exclusions, cooldown and one-click unsubscribe in production
Start 14-day free trial →

HTTP endpoints

Every route exposed.

GET/review-requests/optoutPublic: signed one-click unsubscribe page
GET/review-requests/configAdmin: per-channel config
POST/review-requests/configAdmin: save config
GET/review-requests/statsAdmin: KPIs + eligibility preview
GET/review-requests/logAdmin: send log
POST/review-requests/runAdmin: send all due now (licensed)
POST/review-requests/trustpilot/checkAdmin: check live rating + review link
POST/review-requests/template/previewAdmin: render the email with sample data
POST/review-requests/test-sendAdmin: send a test to yourself
POST/review-requests/exclusionsAdmin: exclude an email / domain
GET/review-requests/order-status/:orderIdAdmin: invitation state for the order-page panel
POST/review-requests/send-order/:orderIdAdmin: manual send / resend from the order page
GET/review-requests/licence/statusAdmin: licence + evaluation + update status
POST/review-requests/licence/activateAdmin: activate a licence key from the admin UI
POST/review-requests/update/runAdmin: one-click in-app update + graceful restart

FAQ

Common questions.

How do I get a licence key?

Buy here — Stripe Checkout — monthly, annual (two months free) or lifetime. You'll receive the JWT key by email. Paste it into the plugin's admin settings (Activate) — no redeploy — or set it as HULO_LICENCE_KEY_REVIEW_REQUESTS in your .env if you prefer config-as-code; the env key wins when both are present.

Does it work without a key?

Yes — every subscription starts with a 14-day free trial. Install the plugin, open its admin page and click Start 14-day free trial: a card is required, nothing is charged until day 15, and you can cancel any time before then. The licence installs itself and every premium feature is on for the whole trial with your real traffic.

Which databases are supported?

MySQL, MariaDB and PostgreSQL (verified against PostgreSQL 17). The plugin follows your Vendure dbConnectionOptions automatically — there is nothing to configure.

How do updates work?

The plugin checks the npm registry daily. When a newer version exists, the admin dashboard shows an update banner with a What's-new link to the changelog and an "Update now" button that installs the registry-verified release via your own package manager and gracefully restarts under your process supervisor. Prefer manual control? Copy the install command instead, or set HULO_SELF_UPDATE=off.

Where is data stored?

In your Vendure database. The plugin adds its own tables (created on boot, or via a migration for the plugins that register entities) — your data never leaves your server.

Will it survive a Vendure upgrade?

Tested against Vendure >=3.5.0 <4.0.0 — 3.5, 3.6 and 3.7 are all covered by CI. A boot-time compatibility check emits a non-fatal warning if @vendure/core is outside that range, so upgrades to a future 3.x are safe to try. The 4.0 line will be tested and re-declared once its changelog lands.

Ready to ship?

Install in five minutes, run the trial on real traffic, keep it if it earns its place.