4 min read

How to Import WooCommerce Product Reviews from CSV

To import WooCommerce product reviews from CSV safely, every row needs to identify an existing product and contain the review data you want to preserve. Shirely creates reviews through the WordPress comment API, writes the WooCommerce rating and verified-owner fields, and skips a row when its product cannot be found.

This workflow is for moving or restoring legitimate reviews you already control. Import the products first, keep their SKUs stable, test a small file on staging, and reconcile the completed run before publishing the imported reviews.

What the review importer can preserve

A WooCommerce review is a comment attached to a product. Shirely can import the reviewer’s name and email, review text, moderation status, rating, verified-owner value and—when a new review is created—the original date.

The importer does not create a missing product. If a row cannot resolve a real WooCommerce product, that row is skipped with a warning instead of creating an orphan review.

Prepare products before reviews

Complete the product import first. For a move between stores, preserve product SKUs and use product_sku in the review file. WordPress product IDs belong to one database, so a product_id exported from the old store usually does not identify the same product on the new store.

Product matching follows a strict order:

  1. If the row contains a numeric product_id, Shirely checks that ID.
  2. If no product ID is supplied, Shirely can look up product_sku.
  3. If the selected value does not resolve to a product, the row is skipped.

For cross-store migrations, omit foreign product IDs and use stable SKUs. Do not include both fields expecting an invalid ID to fall back to the SKU.

Review CSV columns

Column Purpose Important boundary
product_sku Matches the review to a product by SKU. Recommended between different stores.
product_id Matches the review to a numeric product ID. Use only when the ID belongs to the target store.
reviewer Review author name. Stored on the comment; it does not prove a customer-account link.
reviewer_email Review author email. Stored as comment data, not used to connect a WordPress user.
content Review text. Review the source and encoding before import.
rating WooCommerce star rating. Prepare values from 1 to 5 and validate them in the result.
verified Verified-owner flag. Use 1/0; yes/no and true/false are also accepted.
status Approval or moderation state. Blank values default to approved. Use pending or hold when reviews need moderation.
date Original date for a newly created review. Shirely does not change the date when updating an existing review.
review_id Updates an existing review by comment ID. Review IDs are local to a WordPress database; normally keep them only for a same-store round trip.

Example review import file

product_sku,reviewer,reviewer_email,rating,verified,status,date,content
SHIRT-001,Ana Reyes,ana@example.com,5,1,approved,2025-06-14 09:30:00,"Lovely fabric and a reliable fit."
SHIRT-001,Ben Okafor,ben@example.com,4,1,pending,2025-07-02 16:10:00,"Good quality; check the size guide first."
MUG-014,Eve Lang,eve@example.com,3,0,approved,2025-07-19 11:45:00,"Keeps coffee warm and arrived intact."

Save the file as UTF-8. Keep one row per review, quote text that contains commas, and start with a small sample that includes approved and pending rows.

Create versus update

Without a valid review_id, Shirely creates a new review. With a valid review ID from the target store, it updates the existing review’s author name, author email, content and status when those columns are present. Rating and verified-owner metadata can also be updated.

The update path in Shirely does not change the review date. If date preservation matters during a migration, import the review as a new record with its original date. Do not describe an export-edit-reimport workflow as updating dates in place.

What preview does—and does not—confirm

Use the preview to confirm that the CSV parses correctly and that columns map to the intended review fields. In Shirely, preview does not pre-classify reviews by successful product match or show a reliable orphan-review count.

Product resolution happens during the import. Review the completed run and its warnings to find rows skipped because a product ID or SKU was not found.

Verify the import

  1. Compare the number of created, updated and skipped rows with the source file.
  2. Read warnings for missing products instead of relying on a visual sample alone.
  3. Open representative products and check author, content, rating and verified-owner display.
  4. Check pending reviews in WordPress moderation and confirm they are not public.
  5. Verify dates on newly created reviews, especially when the source spans different time zones.

Importing customer accounts is a separate workflow. A matching reviewer email is stored with the review, but Shirely does not use that email to attach the review to an imported WordPress user account.

Common failure cases

  • Every row is skipped: the products are missing, foreign product IDs were used, or SKUs changed during migration.
  • Reviews are duplicated: a file was re-imported without valid target-store review_id values, so the rows were treated as new reviews.
  • Reviews are public too early: the status column was empty and therefore defaulted to approved.
  • Existing dates do not change: date updates are not part of the review update path.
  • Names or review text look corrupted: resave the source as UTF-8 and test a small file again.

A controlled migration sequence

  1. Back up both stores and prepare staging.
  2. Import the WooCommerce products and verify their SKUs.
  3. Export or prepare the review CSV.
  4. Remove source-store product and review IDs when they are not valid on the target.
  5. Import a small review sample, review warnings and verify the storefront.
  6. Run the complete file and reconcile totals before approving pending reviews.

If you need the other half of the workflow, see how to export WooCommerce product reviews to CSV. For the complete released data scope, review the Shirely features.