product-review.submitted
Sent when a customer submits a product review, with the review, the reviewer's profile and their loyalty standing.
Use it to copy reviews into a CRM or a support tool, or to alert a team about low ratings.
When it fires
- Once per review, when a customer submits it through a Cevoid review form or widget.
- Reviews imported through the API start no Flows, and past reviews cannot be enrolled later.
- The review can still be waiting for moderation: check
data.product_review.statusbefore you show it anywhere. profile,pointsandtierdescribe the reviewer.
Receive it
In Settings โ Flows, choose Create flow โ Forward event โ Webhook and pick the Product review submitted trigger. See Set up a webhook.
The Company review request action can also send to a webhook from this trigger. Its data is different from the payload below.
Payload
{
"created_at": "2026-08-12T18:40:23.000Z",
"data": {
"points": {
"expiring_30d": 0,
"expiring_60d": 200,
"expiring_90d": 200,
"lifetime_earned": 3870,
"lifetime_spent": 2450,
"next_expiration_at": "2026-09-30T23:59:59.999Z",
"pending": 130,
"spendable": 1290,
"total": 1420
},
"product_review": {
"answers": [
{
"format": "SCALE",
"prompt": "How does it fit?",
"scale": {
"center_label": "Just right",
"end_label": "Too large",
"start_label": "Too small",
"steps": 5
},
"type": "PRODUCT_ATTRIBUTE",
"value": 3
}
],
"approved_at": "2026-08-12T18:40:22.000Z",
"body": "The linen is soft from the first wash and the medium fits as expected.",
"channel": "REQUEST",
"created_at": "2026-08-12T18:39:02.000Z",
"helpful_down_count": 0,
"helpful_up_count": 0,
"id": "rev_9d4f2k7m1x8wqa",
"identity_verification": "CONFIRMED",
"is_incentivized": false,
"is_insider": false,
"language": "en",
"market_id": "mar_s3k8w1n5q2x7ye",
"media": [],
"order_id": "ord_7k2m4n8p5x9qwe",
"product": {
"id": "prd_2w8k4m6q1x9zne",
"options": [
"size:M"
],
"price": {
"amount": 1190,
"currency": "SEK"
},
"sku": "LINEN-SHIRT-M",
"title": "Linen shirt",
"variant_id": "var_6t1q9m3k7w2xpa"
},
"profile_id": "prf_c4n8x2q1m5v7rt",
"published_at": "2026-08-12T18:40:22.000Z",
"purchase_verification": "VERIFIED",
"rating": 5,
"rejection_reasons": [],
"responses": [],
"status": "PUBLISHED",
"submitted_at": "2026-08-12T18:40:21.000Z",
"title": "Soft and true to size",
"updated_at": "2026-08-12T18:40:22.000Z"
},
"profile": {
"country": "SE",
"created_at": "2026-03-14T08:12:44.000Z",
"email": "astrid.lindqvist@example.com",
"external_id": "7391056823401",
"first_name": "Astrid",
"id": "prf_c4n8x2q1m5v7rt",
"language": "sv",
"last_name": "Lindqvist",
"name": "Astrid Lindqvist",
"name_display_format": "FIRST_LAST_INITIAL",
"updated_at": "2026-08-03T11:58:02.000Z"
},
"tier": {
"current_tier": {
"expires_at": "2026-12-31T23:59:59.999Z",
"id": "tier_0m3v8k2q9x1sdf",
"name": "Silver"
},
"next_tier": {
"entry_rewards": [
{
"title": "15% off your next order",
"type": "DISCOUNT_CODE"
}
],
"id": "tier_5p7w2n4k8c1zyh",
"milestones": [
{
"current": 1420,
"percent_complete": 71,
"remaining": 580,
"required": 2000,
"type": "POINTS"
}
],
"name": "Gold",
"perks": [
{
"value": "Free shipping on every order"
}
]
}
}
},
"id": "c7e9a1b3-5d2f-84c6-a8e0-1b3d5f7a9c2e",
"origin": {
"flow": {
"id": "wfl_8q2m5k1x7w4npa",
"name": "Sync product reviews to CRM"
}
},
"type": "product-review.submitted",
"version": 1
}Show all 122 linesShow fewer lines
typestringrequiredThe event type, always product-review.submitted.
idstring<uuid>requiredUnique event ID, the same value as the webhook-id header. Retries keep it; a replay gets a new one.
created_atstring<date-time>requiredWhen the delivery was scheduled to send, in ISO 8601 UTC: for a Flow, when its webhook action ran, after any Wait step. Retries and replays keep it.
versionintegerrequiredPayload version, currently 1.
originobjectWhy this destination received the event. Absent when no Flow sent it.
dataobjectrequiredThe product review and its reviewer.