In brief
- WooCommerce stores product reviews as WordPress comments with a rating, reviewer name and email, date, status and a verified-purchase flag, all readable through the REST endpoint /wc/v3/products/reviews.1
- Judge.me requires a review body and a 1–5 rating, matches reviews by product_url, product_id or product_handle, accepts up to five images per review, and does not import videos or star-only reviews.2
- Loox requires product_handle, rating, author, body and created_at, imports up to 100,000 reviews per store with up to five JPG or PNG photos each, and carries a verified_purchase flag.3
- Yotpo requires product ID, date, content, score, email and customer country, imports up to 100,000 reviews at a time, and imports media only on Pro, Premium and Enterprise plans.4
- Imported reviews are generally not marked as verified on Shopify, which affects Google Shopping and TikTok Shop syncing in Judge.me.5
What WooCommerce stores
A WooCommerce review is a WordPress comment on the product with extra data. The WooCommerce REST API exposes each review with an id, date_created, product_id, status, reviewer, reviewer_email, the review text, a rating and a verified flag.1 That is enough for every review app, with two gaps: WooCommerce core stores no review title and no photos. Photos and titles come from a review plugin, most often Customer Reviews for WooCommerce, which keeps them in its own tables and export.
Exporting from WooCommerce
- REST API. A read-only key and
GET /wp-json/wc/v3/products/reviewsreturns every review with the fields above, page by page.1 This is the most complete route for core reviews and the one we use. - Review plugin export. Customer Reviews for WooCommerce and similar plugins export their own CSV with titles, photos and votes. Use it when the store's reviews live in the plugin.
- Judge.me on WooCommerce. If the WooCommerce store already used Judge.me, reviews can no longer be exported from the WooCommerce admin; Judge.me support provides the export, and the Shopify app imports it with manual product mapping.5
Whichever route you use, keep the WooCommerce product ID and slug on every review row. Matching to Shopify products depends on it.
Import requirements by app
| Requirement | Judge.me | Loox | Yotpo |
|---|---|---|---|
| Required fields | body, rating2 | product_handle, rating, author, body, created_at3 | product ID, date, content, score, email, customer country4 |
| Product matching | product_url, product_id or product_handle; empty for store reviews2 | product_handle, product_Id as fallback3 | Product ID only; empty means a site review4 |
| Photos | Up to 5, JPG/JPEG/PNG2 | Up to 5, JPG/JPEG/PNG3 | Pro, Premium and Enterprise plans only4 |
| Videos | Not imported2 | Contact support3 | Video URL columns on media-enabled plans4 |
| Star-only reviews | Rejected2 | Body must contain at least one character3 | Content required4 |
| Verified flag | Imported reviews are not marked verified2 | verified_purchase TRUE/FALSE3 | User type on supported Premium and Enterprise accounts4 |
| Reply from the store | reply, reply_date2 | reply, replied_at3 | Not in the required set |
| Publish state | curated: ok, not-yet, spam2 | Imported as published | Published and unpublished media columns4 |
| Limits | Body up to 5,000 characters2 | 100,000 reviews per store, 15 MB file3 | 100,000 reviews per import4 |
| Date format | dd/mm/yyyy2 | YYYY-MM-DD3 | Date column required4 |
Each app also offers an import wizard that maps arbitrary column names, so the exact headers matter less than having the data.
Column map from WooCommerce
| WooCommerce field | Judge.me column | Loox column | Yotpo column |
|---|---|---|---|
| product_id → Shopify product | product_handle or product_id | product_handle | Product ID (Shopify) |
| rating | rating | rating | Review Score |
| review (text) | body | body | Review Content |
| reviewer | reviewer_name | author | Display name |
| reviewer_email | reviewer_email | ||
| date_created | review_date (dd/mm/yyyy) | created_at (YYYY-MM-DD) | Date |
| verified | not imported | verified_purchase | User type (plan-dependent) |
| status (approved / hold) | curated: ok / not-yet | published only | published / unpublished |
| Plugin photo URLs | picture_urls | photo_url | Published Image URL |
| Plugin review title | title | not in template | Review Title (optional) |
The matching key
WooCommerce product IDs do not exist on Shopify. The reliable join is the slug: if the Shopify handle equals the WooCommerce slug, every review maps by handle. If handles changed, build a WooCommerce ID → Shopify ID table first and map on that. Judge.me recommends product_id over handle because WooCommerce products can share a handle.5
What does not survive the move
- Verified badges. Judge.me does not mark imported reviews as verified, and the same reviews are then excluded from its Google Shopping feed and cannot sync to TikTok Shop.5 Loox accepts a verified_purchase flag in the file.3
- Star-only reviews. All three apps require text; ratings without a body are dropped. Count them before you promise a total.
- Videos. Not imported by Judge.me; Loox handles them through support; Yotpo only on media-enabled plans.
- Helpful votes, reviewer avatars and comment threads. No app's import template includes them.
- Photos hosted on the old site. Apps fetch photos from the URLs in the file, so the WooCommerce media library must stay online until the import finishes.
Step by step
- Count and classify. Total reviews, reviews with text, reviews with photos, reviews with a verified flag. This sets expectations before anyone promises "all reviews will move".
- Choose the app before the product import. The handle strategy for products decides how reviews match, so the decision belongs at the start.
- Export through the REST API or the review plugin, keeping product ID and slug on every row.
- Build the product join: slug to handle, or a WooCommerce ID to Shopify ID table.
- Transform into the app's template: date format, rating as a whole number, photo URLs comma-separated, publish state mapped.
- Import a sample of 20 reviews first, check them on product pages, then import the rest in batches within the app's limits.
- Keep the old site online until photos have been fetched, and verify the counts against step 1.
Reviews are part of every migration we run.
- Export through the API, with photos
- Product join built on slugs or an ID table
- Formatted for Judge.me, Loox or Yotpo
- Sample import checked before the full run
- Counts reported: moved, dropped and why
- Preview before you pay
Frequently asked questions
Does Shopify have built-in product reviews?
No. Shopify's own Product Reviews app was removed in May 2024. Reviews on Shopify are handled by apps such as Judge.me, Loox and Yotpo, which is where migrated reviews are imported.
Will migrated reviews show a verified purchase badge?
It depends on the app. Judge.me does not mark imported reviews as verified. Loox accepts a verified_purchase flag in the import file. Yotpo's user type field is limited to certain plans.
Can I migrate reviews that only have a star rating?
No. Judge.me, Loox and Yotpo all require review text, so star-only ratings are dropped. Count them in advance so the totals after migration are not a surprise.
How are reviews matched to products?
By product handle or Shopify product ID. If the Shopify handle equals the WooCommerce slug, matching by handle works for every review. Otherwise a table mapping WooCommerce IDs to Shopify IDs is needed first.
Do review photos migrate?
Yes, when the file includes photo URLs the app can fetch: up to five per review in Judge.me and Loox, and on media-enabled plans in Yotpo. Videos generally do not import.
Sources
- WooCommerce. REST API reference: Product reviews.
- Judge.me. Importing reviews using the Judge.me template.
- Loox. Importing reviews using a custom file.
- Yotpo. Importing reviews to Yotpo.
- Judge.me. Migrating reviews from your Judge.me account on WooCommerce to Shopify.
- Shopify Community. Shopify Product Reviews app discontinued: removal in May 2024 and recommended alternatives.
Mufatech Studio migrates stores to Shopify. App requirements are quoted from each app's own documentation as of September 2026 and can change; check the current template before importing.