Migrating from another reviews app

What comes across when you import a Yotpo, Judge.me, Okendo, Stamped or Loox export with Format set to that app, and what doesn't. For the steps, see Importing reviews.

Warning

These mappings were written from each app's published documentation, not from a real export file. Compare the table for your app against your own export before you upload. If a column name differs, tell us and we'll fix it; in the meantime, rename the column in a spreadsheet, or reshape the file and use the Cascade format.

Four things are true of every format:

  • The picker is not a guess. Cascade reads the file as the format you picked, and refuses it if the columns don't match.
  • Column names are matched loosely. Product Handle, product_handle and productHandle are the same column.
  • Nothing is dropped quietly. Every column the mapping doesn't carry across is listed on the import job with the reason.
  • Cascade's own site column is accepted alongside, for stores that sell the same catalog on more than one site.

Yotpo

The Format picker listing Cascade, Yotpo, Judge.me, Okendo, Stamped and Loox

Yotpo identifies products by ID rather than handle, so connect your Shopify store first, or make sure product_url points at pages whose last path segment is your product slug.

Yotpo columnBecomesNotes
review_id or idexternalIdRequired. What makes a re-run safe.
reviewer_email or emailcustomerRequired.
review_score, score or ratingratingRequired. Rounded to a whole star.
product_id or external_product_idproductExternalIdRequired. Matched against the Shopify product ID.
product_urlproductUrlThe fallback when the ID does not resolve.
review_title or titletitle
review_content, content or bodybody
review_created_at, created_at or datecreatedAt
publishedpublished
review_state or statusmoderationStatusspam rows are not imported.
verified_buyer or verifiedverifiedBuyer
order_id or external_order_idorderReference
images, image_urls, review_images, video_urlsimageUrlsAll of them together.
review_comment or commentresponseYour reply to the review.
comment_created_atresponseCreatedAt
reviewer_name, display_nameNot importedNames belong to the customer.
votes_up, votes_downNot importedCascade counts helpful votes from its own widget.
sentimentNot imported
deletedNot importedRemove deleted reviews from the file before you upload.
product_titleNot imported
custom_fieldsNot importedPut the ones you need in a metadata column as JSON.
sourceNot imported

Check the deleted column. Cascade imports every row, so an export that still carries deleted reviews brings them back. Filter them out in a spreadsheet first.

Judge.me

Judge.me exports the Shopify handle, which is Cascade's product slug, so this migration works with or without a connected store.

Judge.me columnBecomesNotes
id or review_idexternalIdRequired. What makes a re-run safe.
reviewer_email or emailcustomerRequired.
ratingratingRequired.
product_handle or handleproductRequired.
product_idproductExternalIdThe fallback when the handle has been renamed.
product_urlproductUrl
titletitle
body or review_contentbody
review_date or created_atcreatedAt
publishedpublished
hiddenhiddenThe opposite of published.
curatedmoderationStatusspam rows are not imported.
verifiedverifiedBuyerbuyer counts as verified.
order_id, order_numberorderReference
picture_urls, pictures, photo_urlsimageUrlsAll of them together.
replyresponseYour reply to the review.
reply_dateresponseCreatedAt
reviewer_name, nameNot importedNames belong to the customer.
ip_addressNot imported
custom_questionsNot importedPut the ones you need in a metadata column.
votes_up, votes_downNot imported
product_title, location, sourceNot imported

Custom question answers are the loss to plan for. Cascade has no field for Judge.me's "How did it fit?" answers. If you need them, copy the columns into a metadata column of JSON before you upload.

Okendo

Okendo identifies products by Shopify ID, so connect your store first.

Okendo columnBecomesNotes
reviewId or idexternalIdRequired. What makes a re-run safe.
reviewerEmail or emailcustomerRequired.
ratingratingRequired.
productIdproductExternalIdRequired. Matched against the Shopify product ID.
productUrlproductUrlThe fallback when the ID does not resolve.
title, reviewTitletitle
body, reviewBody, reviewTextbody
dateCreated, reviewDatecreatedAt
publishedpublished
statusmoderationStatusspam rows are not imported.
verifiedPurchase, verifiedverifiedBuyer
orderIdorderReference
media, mediaUrls, imageUrl, videoUrlimageUrlsA JSON array of URLs is read as a list.
response, replyresponseYour reply to the review.
responseDateresponseCreatedAt
reviewerName, displayNameNot importedNames belong to the customer.
attributes, customAttributesNot importedPut the ones you need in a metadata column.
helpfulVotes, upVotes, downVotesNot imported
productName, sourceNot imported

Okendo often exports media separately. If your export has no media column, the photos are in a second file keyed by review ID. Join the two in a spreadsheet into one media column of comma-separated URLs before you upload, or import the reviews now and their photos later with a two-column file of externalId and imageUrls.

Okendo attributes (fit, size, your own questions) have no field in Cascade, the same as Judge.me's custom questions.

Stamped

Stamped columnBecomesNotes
id or reviewIdexternalIdRequired. What makes a re-run safe.
email or authorEmailcustomerRequired.
reviewRating or ratingratingRequired. Rounded to a whole star.
productIdproductExternalIdRequired. Matched against the Shopify product ID.
productHandleproductUsed first when the export carries it.
productUrlproductUrl
reviewTitle, titletitle
reviewMessage, message, bodybody
reviewDate, dateCreatedcreatedAt
published, isPublishedpublished
reviewState, statusmoderationStatusspam rows are not imported.
verifiedBuyer, verifiedverifiedBuyer
orderId, orderReforderReference
reviewPhotos, photos, photo, photo1 to photo3, reviewVideoimageUrlsAll of them together.
reviewReply, replyresponseYour reply to the review.
replyDateresponseCreatedAt
author, reviewerNameNot importedNames belong to the customer.
customFields, reviewQuestionsNot importedPut the ones you need in a metadata column.
reviewVotesUp, reviewVotesDown, location, productTitleNot imported

Loox

Loox exports the Shopify handle, so this migration works without a connected store.

Loox columnBecomesNotes
id or review_idexternalIdRequired. What makes a re-run safe.
emailcustomerRequired.
rating or starsratingRequired.
product_handle or handleproductRequired.
product_idproductExternalId
product_urlproductUrl
titletitle
body, review, textbody
date, created_atcreatedAt
publishedpublished
statusmoderationStatusspam rows are not imported.
verifiedverifiedBuyer
order_id, order_nameorderReferenceUsually what marks a Loox reviewer as a verified buyer.
photo, photos, photo_url, image_url, videoimageUrlsAll of them together.
replyresponseYour reply to the review.
reply_dateresponseCreatedAt
name, reviewer_nameNot importedNames belong to the customer.
product_title, featured, sourceNot imported

When Cascade refuses the file

If the columns aren't the format's, nothing is imported and the job says what it looked for and what it found:

This file does not look like a Yotpo export.
Missing the review id column: expected "review_id" or "id".
Missing the product id column: expected "product_id" or "external_product_id".
Your file has: "email", "rating", "body".

That's almost always the wrong format picked or the wrong export downloaded. Fix whichever it was and upload again.