Reviews for WooCommerce by WpExperts Hub
Ask for product reviews after every order with stars in the email, remind customers politely, collect Verified Buyer reviews on a private page or from My Account, show them on the product page with photos, filters and helpful votes, and manage everything from one dashboard.
1. Overview
Reviews for WooCommerce by WpExperts Hub asks your customers for product reviews at the right moment, reminds them politely, lets them write a review on a clean private page without an account, publishes it with a Verified Buyer label after you approve it, and shows your reviews on the product page with a rating summary, customer photos, filters and helpful votes.
When an order becomes Completed the plugin emails the billing address a review request with five clickable stars and a button for every product that was bought. Products that still have no review get a reminder 5 days later and a final reminder 7 days after that. Before every email the plugin checks again, so nobody is asked about something they already reviewed, and every email has a one-click Stop review emails link.
Customers with an account also find a Leave a review button on their orders in My Account → Orders and a Your reviews list on every order page. The button opens the same private review page as the email.
On the product page the plain review list becomes a reviews section: the average rating with a bar per star level, a strip of customer photos, filters, sorting, Was this helpful? votes and Show more reviews. You can thank every reviewer with a personal coupon, whatever their rating, tell them when their review is live or when you replied, and get an alert for low ratings.
How it works
- An order is completed. The plugin records the order, lists the products that can be reviewed and schedules the initial email (immediately, or after the delay you set). The sequence starts once per order: going from Completed to another status and back never restarts it.
- The emails go out from a background queue. Action Scheduler (part of WooCommerce) runs the jobs, with WP-Cron as a fallback. Each email is claimed with an atomic step, so a repeated status change, a retried job or a double click can never send the same email twice.
- The customer writes a review. A star in the email, the button under a product, or the Leave a review button on the order in My Account opens a private page with a star rating, optional title, text and optional photos. The link contains a random token that expires; it shows nothing about the order to anyone without it.
- You moderate it. The review is saved as a normal Pending WooCommerce product review. You approve, reject or trash it in the usual place. Approved reviews of a real purchase show a Verified Buyer label, and the customer gets a Review published email (with the thank-you coupon, if you use them).
- Reminders stop by themselves. As soon as every product of the order has a review, or the customer unsubscribes, the remaining reminders are cancelled. A reminder only ever lists the products that still wait for a review.
- Shoppers see it. The review appears in the reviews section of the product page, with photos, the Verified Buyer label and helpful votes, and counts in the rating summary and in Insights.
At a glance
Automatic sequence
Initial request, a reminder after 5 days and a final reminder 7 days later. All three delays, and an optional delay before the first email, are settings.
Seven native WooCommerce emails
The request, two reminders, Review published, the thank-you coupon, Reply to a review and a Low rating alert to you, all under WooCommerce → Settings → Emails with your logo and the WooCommerce styling.
Stars in the email
Five clickable stars under every product: a click opens the review page with that rating already chosen, so the customer only adds a few words.
Private review page
Responsive, accessible, no account needed, photos optional. Protected by a nonce, a honeypot and rate limits. One review per product and order.
Verified Buyer
Set only when the order is paid, contains the product and has the review's billing email. Clicking an email link alone proves nothing.
Reviews on the product page
Rating summary with a bar per star level, customer photos with a full-screen viewer, filters, sorting, helpful votes and Show more reviews, on phones too.
Thank-you coupons
A personal, single-use coupon for every review, whatever its rating, as Google and consumer-protection rules require. Rewarded reviews are marked on the product page.
One-click unsubscribe
A Stop review emails link and the unsubscribe header Gmail, Yahoo and Outlook show as their own button. Unsubscribed addresses are never asked again.
One dashboard
What needs your attention, four key numbers, a table with the progress of every order's three emails, an order detail screen, an email log, CSV export and maintenance tools.
Manual and bulk
Send, resend, reschedule, cancel or reset one order, or queue a bulk action for many. Works from the Orders screen too, on HPOS and classic storage.
Leave a review in My Account
A button on the customer's orders and a list of their reviews on each order page, added through WooCommerce's own hooks, so it works with any theme.
In your colours
The review page takes your WooCommerce email colour or a colour you pick, works in dark mode and on phones, and you can preview it with sample products.
Insights
Emails and reviews per week, which email brought the reviews, the rating distribution and a sortable table of ratings per product.
Shortcodes and blocks
A reviews slider or wall, a rating badge and the reviews section of any product, anywhere on your site.
What it does not do
- It does not publish reviews on its own. Reviews are Pending until you approve them, unless you switch on automatic approval.
- It does not reward only good reviews. A thank-you coupon never depends on the rating: rewarding only positive reviews is not allowed by Google, the FTC and EU consumer law.
- It does not email anyone who unsubscribed, neither automatically nor from a bulk action or a manual send.
- It does not prove delivery. WordPress can only report that it handed an email to the mail system. The log says exactly that and never claims an email was delivered or opened.
- It does not import reviews from other sites or services, and it does not send review requests for orders that are not in an eligible status.
- It does not replace WooCommerce reviews. Reviews are ordinary WooCommerce product reviews, so they keep working if you deactivate the plugin.
2. Requirements
| Requirement | Needed |
|---|---|
| WordPress | 6.2 or later (tested up to 7.1) |
| WooCommerce | 8.0 or later (tested up to 11.2). Product reviews must be enabled under WooCommerce → Settings → Products. |
| PHP | 7.4 or later (tested on 8.2 to 8.5) |
| Order storage | High-Performance Order Storage (HPOS) or the classic storage. The plugin only uses WooCommerce's order API. |
| Background jobs | Action Scheduler (included with WooCommerce) is used when present; otherwise WP-Cron. On a quiet site add a real server cron job for reliable timing. |
| Working email delivery. An SMTP or email-service plugin with delivery logs is recommended. |
3. Installation
- Download the plugin zip from your account on wpexpertshub.com.
- In WordPress open Plugins → Add New → Upload Plugin, choose the zip and press Install Now.
- Activate the plugin. It creates five small tables and adds WooCommerce → Review Requests.
- Open Review Requests → Settings and check the eligible order statuses and the reminder timing.
- Open WooCommerce → Settings → Emails and read the seven emails of the plugin (three review requests, three answers to a review and the low rating alert). Send yourself a test email from Settings → Email.
- Open a product with reviews and look at the reviews section in your theme. Settings → Product page switches its parts, or the whole section, off.
- Activate your licence under Plugins → WpExperts Hub Licences to receive updates.
Licence and updates
Open Plugins → WpExperts Hub Licences, enter your licence key and the email address used for the purchase, and press Activate. The licence is only used for updates: every feature works without it.
The licence and update check contacts wpexpertshub.com with the licence key, your site address and the plugin version. It never sends orders, customers, emails or reviews.
What activation creates
| What | Details |
|---|---|
| Five tables | {prefix}wphub_reviews_orders (one row per order in the sequence), {prefix}wphub_reviews_items (one row per order and product), {prefix}wphub_reviews_log (one row per email attempt), {prefix}wphub_reviews_optouts (unsubscribed addresses, as one-way codes) and {prefix}wphub_reviews_votes (helpful votes). |
| One option | wphub_reviews_settings holds every setting. wphub_reviews_db_version tracks the table version. |
| A daily job | wphub_reviews_daily: deletes old log rows, revokes long-expired links, un-sticks interrupted sends and re-creates queue jobs that went missing. |
| Queue jobs | wphub_reviews_process_stage (one per scheduled email) and wphub_reviews_bulk_item (one per order in a bulk action), in the Action Scheduler group wphub-reviews. |
Updating, deactivating and deleting
- Updating keeps your settings and records. The tables are upgraded automatically when needed (1.3.0 adds the unsubscribe and vote tables).
- Deactivating pauses the queue and deletes nothing. When you activate again, missing queue jobs are re-created. The reviews stay on your product pages in your theme's own layout.
- Deleting the plugin removes its data only if Delete all plugin data on uninstall is on (Settings → Data & privacy), including the queued emails. Reviews are WooCommerce reviews and thank-you coupons are WooCommerce coupons: neither is ever deleted.
Multisite
Each site of a network has its own tables, settings and queue. Network activation creates the tables on every site, and on sites created later.
4. Quick start
Five minutes to your first review requests:
- Check the basics. Review Requests → Settings → General: Automatic review requests is on and Completed is ticked under eligible order statuses. That is the default.
- Look at the review page. Settings → Review form → Preview the review page shows it with your latest products. Pick a Review page colour if your email colour does not suit it.
- Look at the emails. Settings → Email shows the timing (5 and 7 days by default), the stars and your logo. Press Preview next to an email, then send yourself a test email.
- Look at a product page. Open a product that has reviews: the reviews section shows the summary, the photos and the filters. Settings → Product page sets the order and the number of reviews per page.
- Optional: thank reviewers. Settings → Rewards → Thank-you coupon: a personal coupon for every review, sent when you approve it.
- Complete an order. Mark a test order Completed. It appears under Review Requests with its initial email scheduled. Open Details and press Send now if you do not want to wait.
- Write a review. Open the link from the email, rate the product and submit. The review is Pending. Or sign in as a customer with a completed order and press Leave a review in My Account → Orders.
- Approve it. Products → Reviews (or Comments): approve the review. It appears on the product page with a Verified Buyer label, and the customer gets the Review published email.
- Ask for older orders too. On WooCommerce → Orders select completed orders and choose Review request: send initial email from Bulk actions.
5. Features
The review sequence
| When it is sent | What it says | |
|---|---|---|
| Initial review request | When the order reaches an eligible status, plus the optional delay | A friendly request with a review button for every product |
| First reminder | 5 days after the initial email was sent | A light reminder, only for products that still have no review |
| Final reminder | 7 days after the first reminder was sent | The last note. The customer is not asked about these products again |
- Once per order. The sequence of an order starts once. Completed → On hold → Completed does not start it again. An administrator can reset it from the order's detail screen.
- A disabled email is skipped, not stuck. If you switch an email off in WooCommerce, that step is marked skipped and the next one is planned from the same moment.
- Rechecked before every send. The order status, refunds and existing reviews are checked at the moment of sending. A product that was reviewed in the meantime, by any route, is never emailed.
- Cancelled automatically. If the order becomes cancelled, refunded or failed, the waiting emails are cancelled (setting Skip refunded, cancelled and failed orders). A completely refunded product is always skipped, and you choose whether a partial refund stops the sequence.
- Retries. If WordPress cannot hand an email to the mail system, the plugin tries again after 15, 30 and 45 minutes, then marks the email Failed with the error text. Each attempt is logged once.
- Unsubscribed means unsubscribed. When the customer uses Stop review emails, the waiting emails of all their orders are cancelled, and no later order, bulk action or manual send emails that address again.
Who is asked, and for what
An order is asked when it has a valid billing email address, an eligible status and passes your rules. Each product is checked on its own.
| Rule | Setting |
|---|---|
| Order statuses | Eligible order statuses (Completed by default; you can add Processing and others) |
| Guest orders | Ask customers without an account (on by default) |
| Virtual and downloadable products | Include them or not |
| Excluded products and categories | Never asked. Variations follow their parent product |
| Minimum order value | Orders below it are not asked |
| Refunds | Skip refunded, cancelled and failed orders; partial refunds optionally stop the sequence |
| Repeat purchases | Ask again when the same customer buys the same product in a later order |
| Existing reviews | A review by the same customer stops requests and reminders for that product |
| Unsubscribed addresses | Never asked again (Review Requests → Unsubscribed). The customer can still review from My Account. |
The emails
| To | When | |
|---|---|---|
| Review request, Review reminder (first), Review reminder (final) | The customer | The sequence above |
| Review published | The customer | When you approve a review the customer wrote with the plugin. With the thank-you coupon when it is earned at that moment, and the other products of the order that still wait for a review. |
| Review thank-you coupon | The customer | The coupon on its own: when it is sent as soon as the review is written, or when Review published is switched off |
| Reply to a review | The reviewer | When you or a shop manager reply to a review in the admin. Never for a reply of another visitor, and never to yourself. |
| Low rating alert | You (the recipient you set) | A review with the rating of Low rating alert for or lower (2 stars or fewer by default), from the review page or the normal product page form |
- Native WooCommerce emails. All seven emails are registered under WooCommerce → Settings → Emails, so enabling, subject, heading, additional content and HTML or plain text work like any other WooCommerce email, with WooCommerce's live preview. Each answer email is sent once per review or reply, however often a review is moderated back and forth.
- Stars in the email. Five clickable stars under every product. A click opens the review page with that rating chosen; nothing is saved until the customer sends the review. Switch them off with Stars in the email.
- Stop review emails. Every request and reminder has an unsubscribe link and the one-click unsubscribe header (RFC 8058) that Gmail, Yahoo and Outlook show as their own Unsubscribe button. See Unsubscribe.
- Placeholders for subject and heading:
{site_title},{order_number},{order_date}and{customer_first_name}. - Branding. Choose an email logo and the sender name and address in Review Requests → Settings → Email, and whether product images and prices appear.
- Built for mail clients. Table-based layout with inline styles, a bulletproof button, no JavaScript and a plain-text version, readable on phones.
- Theme overrides. Copy any template of
templates/emails/(and its plain version) toyourtheme/woocommerce/emails/. See Template overrides. - Preview and test. A preview with sample data, and a test email to any address. Neither creates a record.
- No attachments. Review emails never carry attachments, even when an invoice or packing-slip plugin adds PDFs to customer emails.
The review page
- No account needed. The link is the key. You can require customers who have an account to sign in first (Sign-in requirement); guest orders never need one.
- Several products, one page. The order number and date, and for several products a progress bar ("1 of 3 products reviewed"). Products still to review come first; the one from the button that was pressed is at the top. Reviewed products show the review with its stars and status.
- Fields. Star rating (required or not) with words such as Good or Excellent, name, the billing email (read-only, never shown publicly), optional title, review text with a counter and the minimum length, and optional photos. A star clicked in the email is already selected.
- How the name is shown. The customer chooses Maya Collins, Maya C. or Maya (setting Name display choice). The choice applies on the product page, in the slider and in emails; in the admin you always see the full name.
- The coupon offer. When thank-you coupons are on, the page says what the customer gets, "whatever your rating", and after sending shows the code or says when it will arrive.
- Photos. Previews before sending, with a remove button per photo. JPG, PNG, GIF and WebP only, checked by content on the server and not just by file name, with a maximum number and size per image.
- Friendly errors. The page checks the rating, name, length and photos before sending, so a photo is not lost to an avoidable mistake; the server checks everything again. If something is wrong the customer sees what to fix and keeps everything they typed.
- Thank-you and edit. After submitting the customer sees a thank-you and a link to the next product; when everything is reviewed, a thank-you card with Back to your order and Continue shopping. Refreshing the page cannot create a second review. If you allow it, Edit your review opens the form again until you moderate it.
- Your colours. Buttons, links and highlights use Review page colour (Settings → Review form), or your WooCommerce email base colour when it is empty, with white or dark text chosen for contrast. Your email logo is shown at the top.
- Accessible and private. Real labels, keyboard-friendly star radios in reading order, visible focus, good contrast, dark mode, a phone layout. The page is not indexed, sends no referrer and is never cached.
Leave a review in My Account
- Where it appears. Next to View in My Account → Orders, and with the order actions on the order page. It is a normal WooCommerce order action, so it appears in any theme without template changes. Themes that give the Actions column room for one button only get a little more room on pages that show it.
- When. For the signed-in customer of the order, when the order is in an eligible status and at least one product can still be reviewed. Reviewed, refunded and excluded products are not offered. Never on the thank-you page right after checkout.
- What it opens. The same private review page as the email, with Back to your order at the top. An older order without a review request gets one at that moment (no email is sent because of it), and an expired link is renewed.
- Safe to share by accident. The button carries the order number and a security code that expires within a day (a nonce), never the review link. Only the signed-in customer of that order gets through; anyone else is sent back to their own orders.
- Your reviews on the order page. Under the order details, every product of the order with its status (Not reviewed yet, Awaiting approval, Published), its stars, a Write a review button or a link to the published review.
- Settings. Review Requests → Settings → My Account: switch the button and the list on or off, and change the button text.
Review links and security
- Random and unguessable. A link carries a random selector and a signature derived from your site's secret keys. A copy of the database alone cannot produce a working link, and the order number is not in the link.
- They expire. Links expire after the number of days you set, counted from the last email sent (60 by default). An expired link shows a plain message and nothing about the order. A daily job permanently revokes links that expired long ago.
- Only what was bought. The page and the form only ever accept products that belong to the order behind the link. The product in the URL only chooses which product is shown first.
- Spam protection. A WordPress nonce on every form, a hidden honeypot field, and rate limits per address and link. A nonce alone is never treated as authorisation.
- One review per product. Duplicate prevention is atomic, so two parallel submissions cannot both succeed. You can choose one review per product and order, or one per customer and product across orders.
- Sharing a link yourself. The order's detail screen shows the customer's link with Copy link, for example to send it in a chat, and Renew link makes an expired link work again for the number of days you set.
Reviews, moderation and Verified Buyer
- Native reviews. A submitted review is a normal WooCommerce product review. It is Pending by default, and you approve, reject or trash it in Products → Reviews or Comments. The request status follows what you do there.
- Automatic approval is off by default. You can switch it on in Settings → Review form.
- What makes a review verified. The review gets WooCommerce's own verified-owner flag only when the order exists, is paid, contains the product on a line that is not completely refunded, and has the same billing email as the review. A guest is never marked verified just because an email matches.
- The label. Show a Verified Buyer badge, WooCommerce's own "(verified owner)" text, or nothing. It is shown in the reviews section, and through WooCommerce's review hooks in your theme's review list when you switch the section off.
- Titles and photos are shown with the review text on the product page.
Reviews on the product page
- Where. In the Reviews tab of the product page, in place of the theme's review list. WooCommerce's own review form stays below it, and Write a review scrolls to it. With the shortcode or block it can be placed on any page.
- Rating summary. The average, the number of reviews and a bar for each star level. A click on a bar shows only those reviews.
- Customer photos. A strip of every photo from the reviews (swipe on phones), and a full-screen viewer with previous and next and a link to the review the photo belongs to.
- Filters and sorting. All reviews, With photos, Verified buyers and the star bars; sort by newest, highest, lowest or most helpful. Show more reviews loads the next ones without reloading the page.
- Was this helpful? Yes and No under every review: one vote per visitor and review (signed-in customers by account, guests by a cookie), never on one's own review, with a limit per address against scripted voting.
- Replies. Approved replies are shown under the review they answer.
- Long reviews are folded behind Read more. Reviewer pictures are initials in a coloured circle by default; Gravatar is a choice.
- Theme-proof and light. The styles are scoped to the section, follow the review page colour and work from phone to desktop. Its files load only on pages that show the section, a slider or a badge.
Thank-you coupons
- Off by default. Switch it on in Settings → Rewards.
- Every review counts. The coupon never depends on the rating. Rewarding only good reviews is not allowed by Google, the FTC and EU consumer law, and the review page says "whatever your rating".
- When. When the review is approved (recommended: spam and empty reviews never earn one), or as soon as it is sent. One coupon per order or one per reviewed product, for any review or only reviews with a photo.
- What. A percentage or a fixed amount, a minimum spend, an expiry, your code prefix (
THANKS-7KQ4MZP2), individual use and sale items as you choose. Each coupon is single use and works only with the billing email of the order. - Only customers' own reviews. Reviews written on the review page or from My Account earn a coupon; a review you add for a customer never does. A coupon is created once per order (or product), even if a review is approved twice.
- Disclosure. Mark rewarded reviews shows "Received a thank-you coupon for reviewing" under those reviews, as consumer-protection rules recommend for incentivised reviews.
- Where to see them. The code is in the email and on the review page, an order note records it, and the Rewards tab lists the latest coupons with their order and whether they were used. The coupons are normal WooCommerce coupons.
Answers to a review
- Review published. When you approve a review written with the plugin, the customer hears that it is live, with a link to it, the coupon if one was earned, and the other products of the order that still wait for a review.
- Reply to a review. Reply to a review in Products → Reviews and the reviewer receives your reply with their review. Only replies of the shop's staff are sent.
- Low rating alert. You hear about a 1 or 2-star review (or 3, as you choose) the moment it is written, with the customer, the order and buttons to reply or moderate. Choose who receives it in WooCommerce → Settings → Emails.
Unsubscribe
- Link and header. Every request and reminder has a Stop review emails link and the
List-Unsubscribe/List-Unsubscribe-Postheaders (RFC 8058), which Gmail, Yahoo and Outlook show as their own Unsubscribe button. Large mailbox providers expect them from senders. Setting: Unsubscribe link (on). - What it stops. Review requests and reminders to that address, from any order, also from bulk actions and manual sends. Answers to the customer's own review, your replies and the coupon are still sent, and order emails are not affected.
- The list. Review Requests → Unsubscribed shows the addresses masked (
m***a@example.com), how and when they unsubscribed, and lets you add, find or remove one. The list stores a one-way code of each address, so it cannot be read back as a mailing list.
Shortcodes and blocks
| Block / shortcode | What it shows | Options |
|---|---|---|
Reviews slider[wphub_reviews_slider] | Recent approved reviews of the shop as a slider or a wall | count (9), min_rating (4), layout slider|grid, photos yes|no, verified yes|no, product (ids), category (slugs or ids), title, excerpt (words, 40) |
Rating badge[wphub_reviews_badge] | The shop's (or a product's) average rating and number of reviews | style inline|card, link, product |
Product reviews[wphub_reviews product="12"] | The reviews section of one product on any page | product, form yes|no, heading yes|no |
In the block editor search for "reviews": the three blocks show a live preview. The same list, with copy buttons, is under Settings → Product page.
Insights
- Key numbers of the shop rating, review emails and reviews in the last 12 weeks, and unsubscribed addresses.
- Emails and reviews per week for 12 weeks, as a chart with the numbers in a table below it.
- Which email worked. For the request, the first and the final reminder: emails sent, reviews written after it and the share of orders that reviewed after receiving it; plus the reviews written from the My Account button. Reviews written before 1.3.0 are counted separately, because the email was not recorded then.
- Rating distribution of all approved product reviews of the shop.
- Ratings per product. Average rating, reviews (with photos), 1–2 star reviews, reviews awaiting approval, the review rate of the requests and the newest review; sortable, searchable and with a Below 3 stars view.
Managing requests
- Dashboard. What needs your attention (reviews waiting for approval, emails that could not be sent), four key numbers (reviews collected, review rate, average rating, emails sent), filters (waiting, awaiting approval, fully reviewed, email failed, cancelled), search by order number, name or email, sortable columns and 20 requests per page.
- The three emails at a glance. Each row shows the request, the reminder and the final reminder as a small track (sent, planned, failed, cancelled) with what comes next or what was sent last.
- A status for every product. Waiting, Awaiting approval, Approved, Rejected, plus an overall status for the order: Not Requested, Scheduled, Email Sent, Reminder Scheduled, Partially Reviewed, Submitted — Awaiting Approval, Review Approved, Completed, Email Failed, Unsubscribed, Cancelled.
- Order detail. The customer, the review status, the next email, every product with its review, the customer's review link with Copy link and Renew link, and the three emails as a timeline with Send now or Send again, Reschedule, Cancel pending reminders, Retry failed emails and Reset sequence.
- Resending needs a confirmation. An email that was already sent is only repeated after you confirm it. Manual sends still respect product eligibility and existing reviews; administrators can tick Ignore eligibility checks for the order rules.
- Reset never deletes reviews. It revokes the old links, clears the email progress and starts again for the products without a review.
On the WooCommerce Orders screen
- A Review request column with a short status (Not Requested, Email Sent, Awaiting Review, Partially Reviewed, Reviewed, Failed) that links to the order's detail screen.
- Bulk actions for the selected orders: send the initial email, the first or the final reminder, cancel pending reminders and retry failed emails.
- A Review request box on the order edit screen with the status, the three emails and one-click actions.
- Works with HPOS and with the classic order list, and does not interfere with WooCommerce's filtering, sorting or other plugins' actions.
Bulk sending
- Background processing. A bulk action never sends emails during the click. Each order becomes one queued job, so hundreds of orders are safe.
- Every order is checked on its own. Ineligible orders, orders without a billing email, products that were already reviewed and emails that were already sent are skipped and logged. A bulk action never repeats an email that was already sent.
- A summary. A banner shows how many orders are done, skipped or failed, and the Email log shows each one with the trigger Bulk action.
- Confirmation. You are asked before emails are queued and for large selections.
- Sending limit. Set a maximum of emails per hour; the rest waits in the queue.
Add a review for a customer
- Load an order, choose one of its products, and the customer's name and email are filled in from the order. Or search for a product and a customer without an order.
- The review is saved as a normal review, Pending unless you choose Approved. With an order it is recorded as a verified purchase only if the order is paid and contains the product.
- Without an order you can tick Verified Buyer, for a customer you know bought the product (an offline or old order). It is recorded as set by you, not proven by an order, and the customer email is optional.
- It is marked as entered by an administrator, with your user and the time, in a box on the review's edit screen, so it is never mistaken for a review the customer wrote. An order note records it too.
- Duplicates for the same order and product are refused.
Email log and reliability
- Each attempt records the order, product when relevant, address, type, scheduled time, attempt time, result, error text, the trigger (automatic, manual or bulk) and the administrator for manual sends.
- The result is worded honestly: Handed to mail system means WordPress passed it on without an error. It is not proof of delivery.
- Newest first; filter by order, type, result and date. Message bodies are not stored, and old rows are deleted after the retention period you choose.
- The answer emails (published, coupon, reply, low rating alert) are logged too.
Tools
- Export every request as a CSV file (spreadsheet formulas in customer text are neutralised).
- Retry failed emails, clean up expired links, delete old log entries and re-create missing queue jobs.
- Scheduled jobs: the list of what is waiting in the queue.
- Reset the plugin's settings (administrators only) after a confirmation.
6. Admin screens
Everything is under WooCommerce → Review Requests, in seven tabs, plus a column and a box on the Orders screens. What customers see in My Account is described under Leave a review in My Account.
| Screen | What it is for |
|---|---|
| Review requests | What needs your attention, key numbers and the table of every order in the sequence |
| Order detail | One order: products, reviews, the review link, the three emails and their actions |
| Insights | Emails and reviews per week, which email worked, rating distribution, ratings per product |
| Add a review | Enter a review on behalf of a customer |
| Email log | Every email attempt, with filters |
| Unsubscribed | Addresses that asked for no more review emails |
| Settings | General, Email, Review form, Product page, Rewards, My Account, Data & privacy |
| Tools | Export, retry, clean-up and the queue |
Review requests
At the top, a line for anything that needs you: reviews waiting for your approval (with Moderate reviews) and orders whose review email could not be sent (with Show them). Then four key numbers, with fixed counting rules so that nothing is counted twice:
| Number | What it counts |
|---|---|
| Reviews collected | Products that have a review collected by the plugin, whatever its moderation state, split into published and awaiting approval |
| Review rate | Requested products that received a review: reviews submitted ÷ (reviews submitted + pending requests), and how many products still wait |
| Average rating | The average star rating of the reviews collected by the plugin (pending and approved) |
| Emails sent | Initial requests, first and final reminders, each email once however many attempts it took; with the reminders and the failed attempts (a retry counts as a new attempt) |
All numbers in Insights opens the Insights tab.
The table has one row per order: the order number, date and status (with links to the email log and the order); the customer; the products with a status each; the three emails as a track with what comes next or what was sent last; and the overall review status with "x of y reviewed". Bulk actions are above the table.
Order detail
Open it with Details in the table, with the status in the Orders list, or from the box on the order screen. See the figure under Managing requests. Actions:
| Action | What it does |
|---|---|
| Send now / Send again | Sends that email immediately. A repeat needs the confirmation box ticked. |
| Reschedule | Moves the email to the date and time you choose |
| Ignore eligibility checks | Administrators only: sends even if the order status or other order rules would stop it |
| Cancel pending reminders | Cancels the emails still waiting. Links keep working. |
| Retry failed emails | Puts a failed email back in the queue |
| Reset sequence | Revokes old links, clears the email progress and starts again. Existing reviews are kept. |
| Copy link | Copies the customer's private review link (the same as in the emails), for example to send it in a chat |
| Renew link | Makes the link work again for the number of days in Review link lifetime, counted from now |
| Email history | Opens the log filtered to this order |
Add a review
See the figure under Add a review for a customer. Enter an order number and press Load order to choose one of its products and prefill the customer; leave the order empty to enter a review without an order (it is then verified only if you tick Verified Buyer).
Email log
Filters for order, type, result and dates. Columns: time, order, address, type, result, scheduled time, who triggered it and the details (the error text of a failure).
Settings
Seven sections with a Save button each. Saving one section never changes another, and options that depend on a switch are dimmed while it is off. All settings are listed under Settings.
Tools
7. Settings
Open Review Requests → Settings. The defaults are chosen so that the plugin works without changes. Subject, heading, additional content and the on/off switch of each email are in WooCommerce → Settings → Emails.
General
Who is asked, for which orders and products, and how long the review links last.
| Setting | What it does | Default |
|---|---|---|
| Automatic review requests | Send review requests automatically when an order reaches an eligible status. Manual and bulk sending keep working when this is off. | On |
| Eligible order statuses | The sequence starts when an order changes to one of these statuses. It starts once per order; going back and forth between statuses does not restart it. | Completed |
| Guest orders | Also ask customers who checked out without an account. | On |
| Virtual and downloadable products | Include virtual and downloadable products in review requests. | On |
| Excluded products | Never ask for a review of these products (variations follow their parent product). | None |
| Excluded categories | Products in these categories are never requested. | None |
| Minimum order value | Orders below this total are not asked. 0 = no minimum. | 0 |
| Skip refunded, cancelled and failed orders | Pending emails of an order are cancelled when it becomes refunded, cancelled or failed. | On |
| Partially refunded orders stay eligible | Products that are completely refunded are always skipped. When this is off, any refund on the order stops the sequence. | On |
| Repeat purchases | Ask again when the same customer buys the same product in a later order. | On |
| An existing review stops requests | Do not ask for (or remind about) a product the customer has already reviewed. | On |
| Review link lifetime (days) | Counted from the last email that was sent. 0 = links never expire (not recommended). | 60 |
Timing, what the emails show, sender and logo, the unsubscribe link and the low rating alert.
| Setting | What it does | Default |
|---|---|---|
| Delay before the first email (hours) | 0 = send as soon as the order is completed. | 0 |
| First reminder (days after the request) | Default 5 days after the initial request. | 5 |
| Final reminder (days after the first reminder) | Default 7 days after the first reminder. | 7 |
| Sender name | Leave empty to use the WooCommerce "From" name. | Empty (uses the WooCommerce value) |
| Sender email address | Leave empty to use the WooCommerce "From" address. Use an address on your own domain so mail is not marked as spam. | Empty (uses the WooCommerce value) |
| Email logo | Shown at the top of the review emails. Empty = the WooCommerce email header image. | None |
| Product images in emails | Show a picture of every product next to its stars and button. | On |
| Product prices in emails | Show the current price under each product name. | Off |
| Stars in the email | Show five clickable stars under each product. A click opens the review page with that rating already chosen; the customer still writes and sends the review there. | On |
| Unsubscribe link | Add a "Stop review emails" link and the one-click unsubscribe header (used by Gmail, Yahoo and Outlook) to review requests and reminders. Strongly recommended. | On |
| Low rating alert for | Which reviews trigger the "Low rating alert" email to you. Switch the alert on or off and choose who receives it in WooCommerce โ Settings โ Emails. Choices: 1 star; 2 stars or fewer; 3 stars or fewer. | 2 stars or fewer |
| Sending limit (emails per hour) | Emails over the limit wait in the queue. 0 = no limit. Useful on shared hosting. | 0 |
Review form
What the review page asks for, how reviews and names are shown and the colour of the page.
| Setting | What it does | Default |
|---|---|---|
| Review title | Show a title field on the review form. | On |
| Image attachments | Let customers add photos (JPG, PNG, GIF, WebP). | Off |
| Maximum images per review | Maximum images per review. | 3 |
| Maximum size per image (MB) | Maximum size per image (MB). | 2 |
| Minimum review length (characters) | Minimum review length (characters). | 10 |
| Maximum review length (characters) | Maximum review length (characters). | 2000 |
| Star rating required | Customers must choose 1 to 5 stars before they can send the review. | On |
| Sign-in requirement | Guest orders never need an account. Choices: Never - the email link is enough; Customers with an account must sign in first. | Never - the email link is enough |
| Duplicate prevention | Choices: One review per product in each order; One review per customer and product (across orders). | One review per product in each order |
| Approve reviews automatically | Off by default: reviews wait for moderation in WooCommerce / Comments. | Off |
| Customers can edit before approval | The email link keeps working to change rating, title and text until the review is moderated. | Off |
| Verified Buyer label | Only reviews of a real purchase carry the label. Choices: Verified Buyer badge; WooCommerce default text "(verified owner)"; Do not show a label. | Verified Buyer badge |
| Name display choice | Customers choose how their name appears with the review: full name, first name and initial ("Maya C.") or first name only. You always see the full name in the admin. | On |
| Review page colour | Buttons, links and highlights on the review page. Leave empty to use the WooCommerce email base colour, so the page matches your emails. | Empty (the WooCommerce email base colour) |
Product page
The reviews section on product pages, and the shortcodes and blocks.
| Setting | What it does | Default |
|---|---|---|
| Enhanced reviews section | Replace the plain review list on product pages with a rating summary, filters, sorting, customer photos and "load more". The WooCommerce review form stays below it. Switch off to keep your theme's own review template. | On |
| Rating summary | Average rating and a bar for each star level. A click on a bar shows only those reviews. | On |
| Customer photos | A strip of all photos from the reviews above the list, and a full-screen viewer for every review photo. | On |
| Helpful votes | "Was this helpful?" Yes / No under every review (one vote per visitor) and a "Most helpful" sort. | On |
| Filters and sorting | Filter by stars, "with photos" and "verified buyers"; sort by newest, highest, lowest or most helpful. | On |
| Default order | Choices: Newest first; Highest rating first; Lowest rating first; Most helpful first. | Newest first |
| Reviews per page | Shown at first; "Show more reviews" loads the next ones without reloading the page. | 5 |
| Reviewer picture | Gravatar asks gravatar.com for every reviewer's picture; initials need no outside service. Choices: Initials in a coloured circle; Gravatar (initials when there is none); No picture. | Initials in a coloured circle |
Rewards
The thank-you coupon for reviewers: who gets one, the discount and the disclosure under rewarded reviews.
| Setting | What it does | Default |
|---|---|---|
| Thank-you coupon | Send a personal, single-use WooCommerce coupon to customers who write a review. Every review counts, whatever its rating: rewarding only good reviews is not allowed by Google and consumer-protection rules. | Off |
| Send the coupon | After approval, spam and empty reviews never earn a coupon. With automatic approval both choices are the same. Choices: When the review is approved (recommended); As soon as the review is sent. | When the review is approved (recommended) |
| How many coupons | Choices: One coupon per order; One coupon per reviewed product. | One coupon per order |
| Which reviews earn it | "Only reviews with a photo" needs photos switched on in Review form. Choices: Any review; Only reviews with a photo. | Any review |
| Discount type | Choices: Percentage discount; Fixed amount off the cart. | Percentage discount |
| Discount | Percent or amount in the shop currency, depending on the type. A percentage is limited to 100. | 10 |
| Minimum spend | 0 = no minimum. | 0 |
| Valid for (days) | 0 = the coupon never expires. | 30 |
| Code prefix | Letters, digits and dashes. A random part is added, for example THANKS-7KQ4MZP2. | THANKS |
| Individual use only | The coupon cannot be combined with other coupons. | On |
| Exclude sale items | The coupon does not reduce products that are already on sale. | Off |
| Mark rewarded reviews | Shows "Received a thank-you coupon" under reviews that earned one, so shoppers know (recommended by consumer-protection rules for incentivised reviews). | On |
My Account
The Leave a review button on the customer's orders and the Your reviews list on the order page.
| Setting | What it does | Default |
|---|---|---|
| Review button on orders | Adds a button to the customer's orders in My Account โ Orders and on the order page while the order has a product to review. It opens the same private review page as the email link, and only for the signed-in customer of the order. | On |
| Button text | Leave empty for "Leave a review" (translated with the plugin). | Empty (“Leave a review”) |
| Review status on the order page | Lists the products of the order under the order details with their review status (not reviewed yet, awaiting approval, published) and a "Write a review" button for each product that still needs one. | On |
Data & privacy
Log retention and what happens when the plugin is deleted.
| Setting | What it does | Default |
|---|---|---|
| Keep the email log for (days) | 0 = keep forever. | 90 |
| Delete all plugin data on uninstall | Removes the tables and settings when the plugin is deleted. Submitted reviews are WooCommerce reviews and are never deleted. | Off |
8. Developer reference
Hooks
| Hook | Type | What it does |
|---|---|---|
wphub_reviews_order_problem | filter | ( string $problem, WC_Order $order, bool $check_status ). The reason an order cannot be asked, or an empty string. Return a non-empty code to exclude an order; return an empty string to allow it. |
wphub_reviews_product_problem | filter | ( string $problem, int $product_id, WC_Order $order, $item ). The same for one product of an order. Use it to exclude products by any rule of your own. |
wphub_reviews_review_created | action | ( int $comment_id, int $product_id, int $order_id, string $source ). A review was saved. $source is customer or admin. |
wphub_reviews_email_sent | action | ( int $order_id, string $stage, string $trigger ). An email was handed to the mail system. $stage is initial, first or final; $trigger is auto, manual or bulk. |
wphub_reviews_upload_handler | filter | The WordPress upload function used for review photos: wp_handle_upload (default) or wp_handle_sideload (for tests and importers). |
wphub_reviews_account_context | filter | ( bool $here, WC_Order $order ). Whether the My Account button and the Your reviews list may show on the current page. Default: is_account_page(), so never on the thank-you page after checkout. Return true to show them on your own order pages too. |
wphub_reviews_unsubscribed | action | ( string $email, string $source, int $order_id ). An address asked for no more review emails. $source is link, oneclick or admin; $order_id is the order of the email (0 for the administrator). |
wphub_reviews_reward_coupon | filter | ( WC_Coupon $coupon, WC_Order $order, WP_Comment $comment ). The thank-you coupon before it is saved: change limits, add product restrictions… |
wphub_reviews_reward_created | action | ( WC_Coupon $coupon, WP_Comment $comment, WC_Order $order ). A thank-you coupon was created. |
wphub_reviews_list_page | filter | ( WP_Comment[] $list, int $product_id, array $state ). One page of the reviews section, in order (for example to hide some reviews). $state holds sort, rating, photos, verified and page. |
wphub_reviews_review_card | action | ( WP_Comment $comment ). Inside a review of the reviews section, after its text and photos: print your own output. |
wphub_reviews_slider_query | filter | ( array $args, array $atts ). The get_comments() arguments of the reviews slider or wall, with its shortcode or block attributes. |
// Never ask for reviews of products tagged "gift-card".
add_filter( 'wphub_reviews_product_problem', function ( $problem, $product_id ) {
if ( '' === $problem && has_term( 'gift-card', 'product_tag', $product_id ) ) {
return 'gift_card';
}
return $problem;
}, 10, 2 );
The seven emails are standard WooCommerce emails (ids wphub_reviews_initial, wphub_reviews_first, wphub_reviews_final, wphub_reviews_published, wphub_reviews_reward, wphub_reviews_reply and wphub_reviews_low_rating), so WooCommerce's own email filters such as woocommerce_email_subject_{id} apply. Review emails never carry attachments.
The product page section
- Swapped in on
comments_templatefor product pages only (WooCommerce'ssingle-product-reviews.php); a theme can override it withyourtheme/wphub-reviews/product-reviews.php. Its stylesheet is printed right before the section and its script in the footer, only on pages that show the section, a slider or a badge. - Filters, sorting and Show more reviews call
admin-ajax.php?action=wphub_reviews_list, voteswphub_reviews_vote(both also for visitors; read-only lists and one vote per visitor need no nonce). A guest's vote is kept with a random id in the cookiewphub_reviews_voter; votes are limited to 60 per hour per address. - The rating summary of a product is cached in the transient
wphub_reviews_sum_{product id}and the shop's inwphub_reviews_store_stats; both are cleared when a review changes. - Colours:
--wphub-pr-accentand--wphub-pr-on-accenton.wphub-pr,.wphub-rw(slider) and.wphub-rb(badge), set from the review page colour.
The My Account button
- The button is the WooCommerce order action
wphub-reviews-leave(filterwoocommerce_my_account_my_orders_actions), so it is printed by WooCommerce's own templates and by themes that callwc_get_account_orders_actions(). Its CSS class iswphub-reviews-leave. - Its URL is the order page plus
?wphub-review-order=<order id>&_wpnonce=<nonce>(and&wphub-review-product=<product id>from the list). A handler ontemplate_redirectchecks the signed-in customer, the nonce and the order, creates the review request if there is none (no email is scheduled), renews an expired link and redirects to the review page withvia=account. via=accountonly marks where the visit came from; it is stored with the review as_wphub_reviews_channelfor the dashboard. It never grants access.- The list on the order page is printed on
woocommerce_order_details_after_order_table(priority 20), styled byassets/css/account.cssunder.wphub-reviews-account.
Queue jobs
wphub_reviews_process_stage( $order_id, $stage )sends one email of the sequence. A job that runs before the time on the record (left over from an earlier plan) puts itself back at that time.wphub_reviews_bulk_item( $batch_id, $order_id, $action, $admin_id )runs one order of a bulk action.- Both run in the Action Scheduler group
wphub-reviews(WooCommerce → Status → Scheduled Actions) and are de-duplicated. Without Action Scheduler the same hooks run from WP-Cron. Deactivating the plugin and deleting its data cancel them.
Data model
| Table | Holds |
|---|---|
{prefix}wphub_reviews_orders | One row per order: order id, customer id, name, email, order date, link selector and expiry, sequence state (active or cancelled), and for each email (initial, first, final) a status, planned time and sent time, plus last email, retry count and last error. |
{prefix}wphub_reviews_items | One row per order and product (unique): order item id, product and variation id, status, linked review id and submission time. |
{prefix}wphub_reviews_log | One row per email attempt: order, product, address, type, scheduled and attempt time, result, error, trigger, administrator and batch id. |
{prefix}wphub_reviews_optouts | One row per unsubscribed address: a SHA-256 code of the lower-case address (unique), a masked hint, how (link, one click, administrator), the order of the email and the time. |
{prefix}wphub_reviews_votes | One row per review and voter (unique): the vote, and the voter as u: plus a user id or c: plus a code of the guest cookie. |
The orders and items tables also hold reward_coupon_id: 0 for no coupon, -1 while one is being created, else the coupon's id.
Email statuses: none, scheduled, sending, sent, failed, skipped, cancelled. Product statuses: requested, submitting, submitted (awaiting approval), approved, rejected (trashed, spam or deleted), skipped, cancelled.
Review meta
| Comment meta | Meaning |
|---|---|
rating, verified | WooCommerce's own rating and verified-owner flag |
_wphub_reviews_order_id | The order the review belongs to |
_wphub_reviews_title | The review title |
_wphub_reviews_images | Attachment ids of the customer's photos (only attachments the plugin created are shown) |
_wphub_reviews_source | customer or admin |
_wphub_reviews_channel | Customer reviews (1.2.0 and later): email or account, the button that opened the review page |
_wphub_reviews_stage | Customer reviews (1.3.0 and later): the email the review came from, initial, first or final, or account or link |
_wphub_reviews_name_format | How the name is shown: full, initial (Maya C.) or first |
_wphub_reviews_rewarded | The id of the thank-you coupon the review earned (the disclosure under the review) |
_wphub_reviews_verified_manual | Set when an administrator ticked Verified Buyer for a review entered without an order |
_wphub_reviews_admin_id, _wphub_reviews_admin_time | Who entered an administrator review and when |
Reason codes
Order: missing, reviews_disabled, invalid_email, guest, status, refunded, min_value. Product: product_unavailable, reviews_closed, virtual, excluded_product, excluded_category, refunded_item, already_reviewed, repeat_purchase.
Template overrides
Copy templates/emails/wphub-review-request.php, wphub-review-published.php, wphub-review-reward.php, wphub-review-reply.php or wphub-review-alert.php (and the same files in templates/emails/plain/) to yourtheme/woocommerce/emails/ and yourtheme/woocommerce/emails/plain/. The reviews section: templates/product-reviews.php to yourtheme/wphub-reviews/product-reviews.php. The review page's look is set by one small stylesheet with CSS variables (--wh-accent, --wh-text, --wh-bg …) that you can override with your own CSS on the .wphub-reviews-page body class; the colour itself is a setting.
CSV export
Columns: order_id, order_date, customer, email, sequence, initial_status, initial_sent, first_status, first_sent, final_status, final_sent, products_eligible, products_reviewed, reviews_approved, reviews_awaiting_approval, last_email_at. Times are UTC.
9. Privacy and data
| What | Where | How long |
|---|---|---|
| Order id, billing name and email, email progress and times | Table wphub_reviews_orders | Until the order is deleted, the data is erased, or the plugin data is removed |
| Email attempts: order, address, type, time, result, error text | Table wphub_reviews_log | The number of days in Settings → Data & privacy (90 by default; 0 keeps everything). No message bodies are stored. |
| The review: name, text, rating, title, photos, the order it belongs to | WordPress comments (WooCommerce reviews) | Until you delete the review. WordPress's own privacy tools handle it. |
| The customer's IP address with a review they submit | The review (WordPress's standard comment field) | Same as the review |
Unsubscribed addresses: a one-way code (SHA-256) of the address and a masked hint such as m***a@example.com | Table wphub_reviews_optouts | Until you remove the address from the list. Kept on erasure, so the address is never emailed again. |
| Helpful votes: the vote with the user id, or with a code of a random guest id | Table wphub_reviews_votes; the guest id in the cookie wphub_reviews_voter | Votes until the review is deleted; the cookie one year |
| Thank-you coupons, limited to the billing email of the order | WooCommerce coupons | Until you delete the coupon |
- Export and erase. The plugin registers a personal-data exporter and eraser by email address (Tools → Export / Erase Personal Data). The export includes the unsubscribe entry and the votes. Erasing removes the request records and log rows of that address, the votes of the account and the queued emails; the unsubscribe entry is kept (and reported as kept), because erasing it would let the review emails start again.
- Reviewer pictures. Initials by default. If you choose Gravatar, visitors' browsers load the pictures from gravatar.com.
- Suggested policy text is added under Settings → Privacy.
- Deleted orders. When an order is deleted, its request record and queue jobs are removed.
- The email address is never shown on the review page or on the product page, and links do not contain it or the order number.
- Outside servers. The only outside contact is the WpExperts Hub licence and update check, if you activate a licence. It sends the licence key, your site address and the plugin version.
Uninstalling
Deleting the plugin keeps everything unless Delete all plugin data on uninstall is on. With it on, the five tables, the settings, transients and queued jobs are removed. Reviews and thank-you coupons are never deleted.
10. Troubleshooting
First, the quick checks
- Review Requests → Email log shows every attempt with its result and error text.
- Review Requests → Tools → Scheduled jobs shows what is waiting in the queue, and WooCommerce → Status → Scheduled Actions (group
wphub-reviews) shows the Action Scheduler side. - Settings → Email shows whether each of the seven emails is enabled in WooCommerce.
Emails are not sent
| Symptom | What to do |
|---|---|
| The order has no row under Review Requests | Its status is not eligible (Settings → General), the billing email is missing or invalid, guests are excluded, no product can be reviewed, or product reviews are off in WooCommerce. The order was also not completed after the plugin was activated: use Bulk actions on the Orders screen for older orders. |
| The email is "Scheduled" but never goes out | The queue is not running. Check Scheduled Actions. Without Action Scheduler the queue depends on WP-Cron: visit the site, or add a real server cron job that calls wp-cron.php. Tools → Re-create missing queue jobs repairs a cleared queue. |
| The log says "Skipped" | The details column says why: the order status changed, the product was refunded or already reviewed, the email is disabled, or nothing was left to review. This is the plugin protecting the customer from a pointless email. |
| The log says "Cancelled" with "The customer unsubscribed from review emails" | The address is on the Unsubscribed list. If that was a mistake (for example the customer asks for the emails again), remove it under Review Requests → Unsubscribed. |
| The log says "Failed" | WordPress could not hand the email to the mail system. The error text comes from your mail setup. Fix it (SMTP details, sender address), then use Retry failed emails. |
| "Handed to mail system" but the customer got nothing | WordPress cannot see past its own mail transport. Check your SMTP or email service's delivery log, the spam folder and your domain's SPF and DKIM. Use a sender address on your own domain (Settings → Email). |
| Emails are late | Check Delay before the first email and Sending limit. Over the limit, emails wait ten minutes and try again. |
| An email is stuck on "Sending" | A request was interrupted. The daily job turns it into Failed so you can retry it. |
The review page
| Symptom | What to do |
|---|---|
| "This review link is not valid" | The link is incomplete, was revoked by a reset, or belongs to another site. Use the button in the latest email. |
| "This review link has expired" | Raise Review link lifetime, or open the order's detail screen and send the email again (every send renews the expiry). |
| "Reviews are not available for this order" | The order is no longer in a status that allows a review (for example refunded or cancelled). |
| "This page has expired" | The form was open for more than a day. Reload the page and submit again. |
| The page is cached or shows a login prompt | Exclude URLs containing wphub-review from page caching. The plugin sends no-cache headers, but some hosts ignore them. A login prompt appears only if Sign-in requirement is on and the order belongs to a registered customer. |
| A photo is refused | Only JPG, PNG, GIF and WebP are accepted, within the count and size limits of Settings → Review form. |
The My Account button
| Symptom | What to do |
|---|---|
| An order has no Leave a review button | The button shows only for the signed-in customer of the order (guest orders use the email link), when the order is in an eligible status (Settings → General) and a product can still be reviewed. Reviewed, refunded and excluded products, and products the customer already reviewed from an earlier order, are not offered. Check Settings → My Account too. |
| The button shows in the list but not on the order page | The order page shows WooCommerce's order actions in the order details table. A theme that rebuilt that page without them can still show the Your reviews list, which has a button per product. |
| "There is nothing to review in this order." | Between showing the button and pressing it, every product was reviewed or became ineligible. The Your reviews list on the order page shows the current status. |
| "That link has expired. Please press the review button again." | The page with the button was open for more than a day. Reload it and press the button again. |
The product page
| Symptom | What to do |
|---|---|
| The reviews section does not show | Check Enhanced reviews section under Settings → Product page and that reviews are enabled on the product. Some themes, and block themes that show the product details as an accordion, do not print WooCommerce's review template: add the Product reviews block or [wphub_reviews] where the reviews should appear. |
| I want my theme's review list back | Switch off Enhanced reviews section. Reviews, labels and photos stay; only the layout changes. |
| The colours do not match the shop | The section uses Review page colour (Settings → Review form), or your WooCommerce email base colour when it is empty. |
| A visitor cannot vote again | One vote per visitor and review, by design. Guests are recognised by a cookie; a browser that blocks cookies cannot vote. More than 60 votes an hour from one address are refused. |
| A review shows on the product page but not in the slider | The slider shows reviews with at least min_rating stars (4 by default) and, with photos="yes" or verified="yes", only those. |
Thank-you coupons
| Symptom | What to do |
|---|---|
| A review earned no coupon | Check Settings → Rewards: the coupon is on, it is sent when the review is approved (approve it), Which reviews earn it may require a photo, and with One coupon per order an order earns one coupon only. Reviews you add for a customer never earn one. |
| The coupon was created but no email arrived | Check that Review published or Review thank-you coupon is enabled in WooCommerce → Settings → Emails, and the email log. The code is also in the order notes and on the review page. |
| The customer says the code does not work | It works once, only with the billing email of the order, until it expires, and not together with other coupons when Individual use only is on. Open it from the Rewards tab to see its limits. |
Reviews
| Symptom | What to do |
|---|---|
| A review does not show on the product page | It is still Pending. Approve it in Products → Reviews. Also check that reviews are enabled on the product. |
| A review has no Verified Buyer label | The order must be paid, contain the product and have the review's billing email. Check Settings → Review form → Verified Buyer label, and WooCommerce's setting that shows the verified label. |
| The customer cannot review a product again | One review per product and order is allowed. If the review was removed, the product becomes open again. |
11. FAQ
When are the emails sent?
The initial request goes out when the order reaches an eligible status (Completed by default), after the optional delay. The first reminder follows 5 days after the request and the final reminder 7 days after the first reminder. All the delays are settings.
Will a customer who already reviewed get more emails?
No. Every email is checked again right before it is sent and only lists the products without a review. When every product has a review, the remaining reminders are cancelled.
What happens if an order goes Completed, then On hold, then Completed again?
Nothing is restarted. An order enters the sequence once. An administrator can reset it from the order detail screen.
Can the same email be sent twice by accident?
No. Each email is claimed with an atomic step in the database, so repeated status changes, a retried queue job, parallel workers or a double click cannot send it twice. A bulk action also never repeats an email that was already sent.
Does the plugin approve reviews automatically?
Only if you switch it on. By default reviews are Pending, like any WooCommerce review, and you approve them in the normal review list.
How does Verified Buyer work?
The review gets WooCommerce's own verified-owner flag only when the order exists, is paid, contains the product and has the same billing email as the review. You can show a Verified Buyer badge, WooCommerce's text, or nothing.
Do customers need an account?
No. The link in the email is enough. You can require customers who have an account to sign in first; guests never need one.
Can customers leave a review from their account?
Yes. Customers with an account see a Leave a review button on their orders in My Account → Orders and on the order page while a product still needs a review, and the order page lists every product with its review status. It opens the same private page as the email. Settings → My Account switches both off and changes the button text.
Does the My Account button send any email?
No. An older order without a review request gets one when the button is pressed so that the page can open, but no email is scheduled because of it. An expired link is renewed for the signed-in customer.
Can I send a customer their review link myself?
Yes. Open the order in Review Requests and press Copy link in the Review link box. Renew link makes an expired link work again.
Can I change how the review page looks?
Pick a Review page colour in Settings → Review form, or leave it empty to use your WooCommerce email base colour; your email logo is shown at the top. Preview the review page shows the result with sample products. Developers can override the CSS variables of the page.
Can customers add photos?
Yes, if you switch it on. Only JPG, PNG, GIF and WebP images are accepted, checked by content, within a count and size limit you set.
Can I ask for reviews of orders from before I installed the plugin?
Yes. On WooCommerce → Orders select the completed orders and use Bulk actions → Review request: send initial email. Each order is checked on its own and the emails go out from the background queue.
Can I send an email to one customer by hand?
Yes. Open the order's detail screen (or the Review request box on the order) and press Send now. A repeat of an email that was already sent needs a confirmation.
Does "sent" mean the customer received the email?
No. WordPress can only tell whether it handed the message to your mail system. The log says "Handed to mail system" and never claims delivery or opens. Use an SMTP or email service with delivery logs if you need proof.
Which emails does the plugin send, and can I edit them?
Seven, all in WooCommerce → Settings → Emails: the review request and two reminders, Review published, the thank-you coupon and Reply to a review to the customer, and a Low rating alert to you. Subject, heading, additional content, HTML or plain text and the enable switch work like any WooCommerce email. The logo, sender, stars and what the product rows show are in Review Requests → Settings → Email.
What does the reviews section on the product page show?
The average rating with a bar per star level, a strip of customer photos with a full-screen viewer, filters (stars, with photos, verified buyers), sorting (newest, highest, lowest, most helpful), the reviews with their Verified Buyer label and Was this helpful? votes, and Show more reviews. WooCommerce's review form stays below it.
Can I keep my theme's review list?
Yes. Switch off Enhanced reviews section in Settings → Product page. Everything else, including the emails and the Verified Buyer label, keeps working.
Is it allowed to give a coupon for a review?
Yes, if every review earns it whatever the rating, and rewarded reviews are disclosed. That is how the plugin works: there is no setting to reward only good reviews, and Mark rewarded reviews shows "Received a thank-you coupon for reviewing" under them. Rewarding only positive reviews is not allowed by Google, the FTC and EU consumer law.
Can customers stop the review emails?
Yes. Every request and reminder has a Stop review emails link and the one-click unsubscribe header that Gmail, Yahoo and Outlook show as their own button. The address is never sent review requests again, also not from bulk actions; you see and manage the list under Review Requests → Unsubscribed.
Can I show reviews elsewhere on my site?
Yes, with the blocks or shortcodes: a reviews slider or wall ([wphub_reviews_slider]), a rating badge for the shop or a product ([wphub_reviews_badge]) and the reviews section of any product ([wphub_reviews product="12"]).
Which email brings the most reviews?
Review Requests → Insights shows, for the request and each reminder, how many were sent, how many reviews followed and the share of orders that reviewed, next to the reviews from the My Account button.
Does it work with HPOS and the Cart and Checkout blocks?
Yes. The plugin only uses WooCommerce's order API, the tables never assume an order id is a post id, and it is declared compatible with both.
Does it work with a caching plugin?
The review page sends no-cache headers and is marked as not cacheable. If your host or cache plugin still caches it, exclude URLs containing wphub-review.
Does it slow my site down?
Emails are sent from a background queue, never during a visitor's request. The admin files load only on the plugin's screens and the Orders screens, the review page loads one small stylesheet and script, and the reviews section loads its files only on pages that show it. Its rating summary is cached.
What if WooCommerce or the plugin is deactivated?
Your reviews stay exactly as they are, because they are ordinary WooCommerce reviews. Pending emails pause; when you activate the plugin again, missing queue jobs are re-created.
Does it contact any outside server?
Only wpexpertshub.com for the licence and update check, if you activate a licence. It sends the licence key, your site address and the plugin version, and no customer, order or review data. If you choose Gravatar for reviewer pictures, visitors' browsers load them from gravatar.com; the default initials need no outside service.
How is this different from a review service?
There is no service. The plugin runs on your site, uses your own mail setup and stores everything in your database, so there is no subscription and no third party holding your customers' data.
Does it work without a licence?
Yes. The licence is only for updates.
How do I get support?
Email support@wpexpertshub.com with your order ID, the plugin version and what you see in the email log.
12. Changelog
1.3.0 · 2026-10-26
- New: reviews section on product pages: rating summary with a bar per star level, customer photos with a full-screen viewer, filters (stars, photos, verified buyers), sorting (newest, highest, lowest, most helpful), Was this helpful? votes and Show more reviews without reloading. Settings → Product page.
- New: five clickable stars under every product in the review emails; the review page opens with that rating selected.
- New: Stop review emails link and one-click unsubscribe header (RFC 8058) in every request and reminder, and Review Requests → Unsubscribed. Unsubscribed addresses are never asked again, whatever sends the email.
- New: thank-you coupons for reviews (Settings → Rewards, off by default): single use, for the order's email only, never depending on the rating, with a disclosure under rewarded reviews.
- New emails: Review published, Review thank-you coupon, Reply to a review (to the customer) and Low rating alert (to you).
- New: customers choose how their name is shown with the review (full name, "Maya C.", first name).
- New: shortcodes and blocks: reviews slider or wall, rating badge, product reviews section.
- New: Review Requests → Insights: emails and reviews per week, which email brought the reviews, rating distribution, ratings per product.
- Change: the dashboard shows what needs your attention and four key numbers; each order's three emails appear as a track. Settings are grouped, and options that depend on a switch are dimmed while it is off.
- Change: the review box in the admin says which email or button a review came from; the email log lists attempts newest first; a cancelled request still lists its products.
- Fix: deactivating the plugin, Delete all plugin data on uninstall and the reset now really remove the queued review emails (since 1.0.0 the queue jobs stayed behind).
- Fix: a queued email that runs before its planned time (left over from an earlier plan) waits for that time instead of going out early.
- Developer: hooks
wphub_reviews_unsubscribed,wphub_reviews_reward_coupon,wphub_reviews_reward_created,wphub_reviews_list_page,wphub_reviews_review_card,wphub_reviews_slider_query; templatewphub-reviews/product-reviews.php; two new tables (unsubscribe list, votes).
1.2.0 · 2026-10-13
- New: Leave a review button on the customer's orders in My Account → Orders and on the order page, for the signed-in customer of the order. It opens the same private review page as the email; an order without a review request gets one (no email is sent), and an expired link is renewed.
- New: Your reviews on the order page in My Account, with the status, stars and a Write a review button for every product.
- New: Settings → My Account (button and list on or off, button text).
- New: redesigned review page: order number and progress, star words, photo previews and checks before sending, an edit view for pending reviews, a thank-you screen, Back to your order, dark mode and a better phone layout.
- New: review page colour (default: the WooCommerce email base colour) and a preview of the review page with sample products.
- New: the customer's review link on the order detail screen with Copy link and Renew link.
- New: dashboard row with the average rating, the review rate and where reviews come from.
- Change: the settings sections use the same pill style as the tabs.
- Fix: themes with a narrow Actions column in the orders list make room for the review button instead of cutting it off.
- Developer: filter
wphub_reviews_account_context; review meta_wphub_reviews_channel.
1.1.1 · 2026-10-11
- Fix: review request and reminder emails never carry an attachment. Invoice or packing-slip plugins that attach PDFs to customer emails can no longer add their files to a review email.
1.1.0 · 2026-10-10
- New: when an administrator adds a review without an order number, a Verified Buyer checkbox marks it as a Verified Buyer review, recorded as set by the administrator.
- Fix: the customer email is optional when an administrator adds a review without an order (1.0.1).
1.0.0 · 2026-10-10
- First release.
- Automatic review requests when an order is completed, with a reminder after 5 days and a final reminder 7 days later, all configurable.
- Three native WooCommerce emails with preview, test email, logo and sender settings.
- Private, accessible review page with ratings, optional titles and photos, spam protection and duplicate prevention.
- Pending WooCommerce reviews, Verified Buyer label based on the real order, and request status that follows moderation.
- Review Requests dashboard, order detail, email log, CSV export and tools.
- Orders screen column, bulk actions and an order meta box, on HPOS and classic storage.
- Add a review on behalf of a customer, marked as entered by an administrator.
- Personal data export and erase, log retention and a clean uninstall.
- Hooks for developers:
wphub_reviews_order_problem,wphub_reviews_product_problem,wphub_reviews_review_createdandwphub_reviews_email_sent.
13. Support
Email support@wpexpertshub.com and a person will help. Please include:
- Your order ID (from your purchase email or My Account on wpexpertshub.com).
- The plugin version (shown on Plugins) and your WordPress, WooCommerce and PHP versions.
- What you expected, what happened and what you already tried.
- The relevant rows from Review Requests → Email log and the error text of a failed email.
- Whether you use SMTP or an email service, and whether Action Scheduler or WP-Cron runs your queue.
Please do not send passwords or customer data. Support never needs them.