See example export CSV
See example export CSV
Required fields
These are the compulsory fields in the CSV:string
required
Used to groups reviews that belong together so they are shown and aggregated as one set.In the example CSV this value equals
Example: “107”
ProductGroupId.Group: “Product”Example: “107”
string
required
Identifier of the product feed which the product comes from.In the example it equals the
Example: “107-blue-xl”
ProductVariantId value.Group: “Product”Example: “107-blue-xl”
string
required
The parent product shared by all the various colour and size variants. Matches
Example: “107”
data-product-group-id in the widget.In the example it equals ReviewGroupId.Group: “Product”Example: “107”
string
required
Product within the group. Matches
Example: “107-blue”
data-product-id in the widget.Group: “Product”Example: “107-blue”
string
required
The sellable variant (SKU, size or colour level). Matches
Example: “107-blue-xl”
data-variant-id in the widget.Group: “Product”Example: “107-blue-xl”
integer 1-5
required
The star rating (1-5).Group: “Review”
Example: “4”
Example: “4”
string
required
The language and market the review was written in (as a BCP 47 language tag string).Group: “Review”
Example: “en-GB”
Example: “en-GB”
enum
required
How the reviewer is identified in
Example: “Email”
UserDetail, either:- Guest (display name)
- Email (email address)
- ContactId (Customer Engagement contact ID)
Example: “Email”
string
required
The reviewer, interpreted by
Example: “john.doe@example.com”
UserType (either display name, email address or contact GUID).Group: “Reviewer”Example: “john.doe@example.com”
boolean
required
Whether the reviewer is a confirmed purchaser. Controls the
Example: “True”
verified-buyer badge in the Reviews widget.Group: “Reviewer”Example: “True”
timestamp (UTC)
required
When the review was originally written on the original platform.Group: “Review”
Example: “01/15/2025 10:30:00 +00:00”
Example: “01/15/2025 10:30:00 +00:00”
timestamp (UTC)
required
When the review was approved or published. Migrated reviews should already be approved by the previous provider and are not re-moderated.Group: “Review”
Example: “01/16/2025 08:00:00 +00:00”
Example: “01/16/2025 08:00:00 +00:00”
Optional fields
These are the optional fields in the CSV:string
The review text in its original language.Group: “Review”
Example: “Great product, highly recommended!”
Example: “Great product, highly recommended!”
integer ≥ 0
Number of “helpful” votes carried over.Group: “Review”
Example: “3”
Example: “3”
integer ≥ 0
Number of “dislike” votes carried over.Group: “Review”
Example: “0”
Example: “0”
JSON object
Free-form metadata. The samples use
Example: “{“importId”:“abc123”,“contactName”:“John D”}”
importId (unique row id for tracing) and contactName.Group: “Review”Example: “{“importId”:“abc123”,“contactName”:“John D”}”
JSON
Existing translations of
Example: “{“translations”:[{“locale”:“en-GB”,“text”:“Great product, highly recommended!”},{“locale”:“es-ES”,“text”:“Great product, highly recommended!”},{“locale”:“sv-SE”,“text”:“Utmärkt produkt, rekommenderas varmt!”}]}”
ReviewText, with the original locale first. Supplying them avoids the separately priced migration translation.Group: “Review”Example: “{“translations”:[{“locale”:“en-GB”,“text”:“Great product, highly recommended!”},{“locale”:“es-ES”,“text”:“Great product, highly recommended!”},{“locale”:“sv-SE”,“text”:“Utmärkt produkt, rekommenderas varmt!”}]}”
string
The merchant’s reply to the review.Group: “Reply”
Example: “Thanks for your review!”
Example: “Thanks for your review!”
JSON
Translations of the reply, same structure as
Example: “{“translations”:[{“locale”:“es-ES”,“text”:“Thanks for your review!”},{“locale”:“sv-SE”,“text”:“Tack för din recension!”}]}”
TranslationsJson.Group: “Reply”Example: “{“translations”:[{“locale”:“es-ES”,“text”:“Thanks for your review!”},{“locale”:“sv-SE”,“text”:“Tack för din recension!”}]}”
timestamp (UTC)
When the reply was written.Group: “Reply”
Example: “01/16/2025 08:00:00 +00:00”
Example: “01/16/2025 08:00:00 +00:00”
integer ≥ 0
“Helpful” votes on the reply.Group: “Reply”
Example: “1”
Example: “1”
integer ≥ 0
“Dislike” votes on the reply.Group: “Reply”
Example: “0”
Example: “0”
string
Who replied, shown as the author of the reply.Group: “Reply”
Example: “Admin User”
Example: “Admin User”
timestamp (UTC)
When the reply was approved or published.Group: “Reply”
Example: “01/16/2025 08:15:00 +00:00”
Example: “01/16/2025 08:15:00 +00:00”
JSON
Free-form custom attributes. Matches
Example: “{“size”:{“value”:0.5},“quality”:{“value”:0.8}}”
id in the widget for custom data.Group: “Extension”Example: “{“size”:{“value”:0.5},“quality”:{“value”:0.8}}”
Service reviews
A service review is about the company rather than a product. In the migration file a service review will have a normal review row, using the same column format as a product reviews. The difference is in the product references. For a service review, the following attributes must all have the literal string value of “service”:ReviewGroupIdProductFeedIdProductGroupIdProductIdProductVariantId
Beginning of service review row
Everything else
The other fields in a service review work as they do for product reviews. That covers rating, text, locale, reviewer (UserType and UserDetail), verified-buyer flag, dates, votes, translations and merchant replies.