Product Review Submission
Also known as: Review Submit, review_submit, Write a Review, Rating Submitted, Post-Purchase Review Submission
Fires when the reviews platform acknowledges a product review submission (a star rating, a written review or both), covering both solicited submissions triggered by a post-purchase email or SMS request and unsolicited submissions written directly on the product detail page, in the app or from the order history screen. The event does not require a prior purchase: verified_buyer_flag is derived downstream in the warehouse by matching the submission to an earlier order line for the same item, never from a self-declared checkbox on the review form, and submissions with no order match are kept and reported as unverified reviews.
Event Serialization
always
Business Use Case
1️⃣ The Category Manager in Merchandising reviews rating coverage every Monday; when a top-100 SKU is still below five verified-buyer reviews 30 days after launch, they add it to the priority list for the next post-purchase solicitation wave and request vendor sampling before the seasonal campaign goes live.,2️⃣ The Lifecycle Marketing Manager uses the days_since_purchase distribution by category to move the review request send date to the observed peak submission window, and suppresses the request entirely for orders carrying an open return, refund or delivery exception so solicitation does not amplify a bad experience.,3️⃣ The Voice of the Customer lead in Customer Service monitors verified-buyer submissions with rating_value of 1 or 2 daily; when a single item_id crosses five such ratings inside seven days, they open a product quality case with the vendor and trigger proactive outreach to the affected buyers before the rating drop reaches the PDP.,4️⃣ The E-commerce Product Manager A/B tests the PDP review module and the post-purchase flow, using submission rate split by review_source and the share of submissions with has_photo = true to decide rollout, then routes photo-bearing reviews into the PDP user-generated content gallery.
Business Criticality
Medium
Journey / Navigation Area
Engagement
Owning Function
Merchandising
Calculation Notes
1️⃣ Instrumented as the unified submit_form event carrying form_type = 'product_review'; the ratings and reviews widget (Bazaarvoice, Yotpo, Okendo) fires its post-submit success callback into the site's own dataLayer / adobeDataLayer push, so this stays a first-party digital event and the full data-layer block remains in scope — it must never be modelled as an offline or backend-only feed.,2️⃣ Counted once per successful server acknowledgement (widget success callback or HTTP 201). Client-side validation failures, captcha rejections, saved drafts and abandoned review forms are excluded, and a retry that returns an already-seen review_id is deduplicated so double submissions do not inflate volume.,3️⃣ verified_buyer_flag is resolved in the warehouse, not in the browser: it is true only when the reviewer's customer identifier — or the tokenised recipient identifier carried by the post-purchase email or SMS link — joins to an order line containing the same item_id with an order date earlier than the submission timestamp. Any 'I bought this' checkbox on the form is ignored for this flag.,4️⃣ days_since_purchase is the whole-day difference between the matched order date and the submission date in the property's reporting time zone; when the customer has bought the same item more than once, the most recent order preceding the submission is the match. Submissions with no order match carry verified_buyer_flag = false and a null days_since_purchase and are reported separately as unverified reviews.,5️⃣ rating_value is normalised to a 1-5 scale before aggregation when the platform runs a 10-point or thumbs-up scale; zero, null and out-of-range ratings are dropped from any average-rating calculation but still count as submissions when review_has_text is true, so rating-free written contributions are not lost.,6️⃣ Sessionisation follows the standard 30-minute inactivity timeout. Because email and SMS solicitation land the customer in a new session, review submissions are routinely attributed to a campaign session rather than the purchase session — always report this event against item_id and order_id, not against the session's traffic source.,7️⃣ Excluded from all review reporting: syndicated reviews imported from manufacturers or marketplaces, seeded or incentivised sampling programmes flagged by the platform, internal employee and test accounts, and submissions later rejected by moderation. Moderation outcomes arrive late, so review counts and average ratings are restated for up to 7 days after the submission date.
Platform Events
| Platform | Event |
|---|---|
| Google Analytics 4 | submit_form |
| Adobe | Form Submit: Product Review |
Data Mappings
W3 Data Layer
{
"digitalData": {
"pageInstanceID": "prod-pdp-sku-4411-blk",
"page": {
"pageInfo": {
"pageID": "pdp-merino-wool-crew-sweater",
"pageName": "Product Detail: Merino Wool Crew Sweater",
"destinationURL": "https://www.example.com/p/merino-wool-crew-sweater",
"language": "en-US"
},
"category": {
"primaryCategory": "Product Detail",
"subCategory1": "Apparel",
"subCategory2": "Sweaters"
}
},
"product": [
{
"productInfo": {
"productID": "SKU-4411-BLK",
"productName": "Merino Wool Crew Sweater",
"manufacturer": "Northfell"
},
"category": {
"primaryCategory": "Apparel/Sweaters"
}
}
],
"event": [
{
"eventInfo": {
"eventName": "submit_form",
"eventAction": "product_review",
"type": "submit_form",
"timeStamp": "2026-09-17T14:32:08.000Z",
"effect": "Review accepted by reviews platform (HTTP 201 success callback)"
},
"category": {
"primaryCategory": "Engagement"
},
"attributes": {
"formType": "product_review",
"formName": "Write a Review",
"reviewId": "RV-8842179",
"reviewPlatform": "bazaarvoice",
"reviewSource": "post_purchase_email",
"ratingValue": 4.5,
"ratingScaleMax": 5,
"reviewHasText": true,
"hasPhoto": true,
"itemId": "SKU-4411-BLK",
"itemName": "Merino Wool Crew Sweater",
"itemBrand": "Northfell",
"itemCategory": "Apparel/Sweaters",
"orderId": "ORD-2026-0114-77301",
"submissionStatus": "success"
}
}
]
}
}GA4 Data Layer
{
"event": "submit_form",
"form_type": "product_review",
"form_name": "Write a Review",
"form_submit_status": "success",
"review_id": "RV-8842179",
"review_platform": "bazaarvoice",
"review_source": "post_purchase_email",
"rating_value": 4.5,
"rating_scale_max": 5,
"review_has_text": true,
"has_photo": true,
"item_id": "SKU-4411-BLK",
"item_name": "Merino Wool Crew Sweater",
"item_brand": "Northfell",
"item_category": "Apparel/Sweaters",
"order_id": "ORD-2026-0114-77301"
}Adobe Client Data Layer
{
"event": "submit_form",
"eventInfo": {
"path": "component.form.productReview",
"trigger": "reviewsWidgetSuccessCallback",
"eventName": "Form Submit: Product Review",
"timestamp": "2026-09-17T14:32:08.000Z"
},
"form": {
"formType": "product_review",
"formName": "Write a Review",
"submitStatus": "success"
},
"review": {
"reviewId": "RV-8842179",
"reviewPlatform": "bazaarvoice",
"reviewSource": "post_purchase_email",
"ratingValue": 4.5,
"ratingScaleMax": 5,
"reviewHasText": true,
"hasPhoto": true
},
"productListItems": [
{
"SKU": "SKU-4411-BLK",
"name": "Merino Wool Crew Sweater",
"brand": "Northfell",
"category": "Apparel/Sweaters"
}
],
"commerce": {
"order": {
"purchaseOrderNumber": "ORD-2026-0114-77301"
}
}
}XDM Mapping
{
"eventType": "web.formFilledOut",
"timestamp": "2026-09-17T14:32:08.000Z",
"web": {
"webPageDetails": {
"name": "Product Detail: Merino Wool Crew Sweater",
"URL": "https://www.example.com/p/merino-wool-crew-sweater"
},
"webInteraction": {
"name": "Form Submit: Product Review",
"type": "other",
"linkClicks": {
"value": 1
}
}
},
"productListItems": [
{
"SKU": "SKU-4411-BLK",
"name": "Merino Wool Crew Sweater",
"quantity": 1
}
],
"_experience": {
"analytics": {
"customDimensions": {
"eVars": {
"eVar61": "product_review",
"eVar62": "RV-8842179",
"eVar63": "post_purchase_email",
"eVar64": "4.5",
"eVar65": "bazaarvoice"
},
"props": {
"prop61": "SKU-4411-BLK",
"prop62": "Apparel/Sweaters",
"prop63": "Northfell"
}
}
}
},
"_openkpis": {
"reviewSubmission": {
"formType": "product_review",
"reviewId": "RV-8842179",
"reviewPlatform": "bazaarvoice",
"reviewSource": "post_purchase_email",
"ratingValue": 4.5,
"ratingScaleMax": 5,
"reviewHasText": true,
"hasPhoto": true,
"itemId": "SKU-4411-BLK",
"itemBrand": "Northfell",
"itemCategory": "Apparel/Sweaters",
"orderId": "ORD-2026-0114-77301",
"submissionStatus": "success"
}
}
}Source Data
Digital Analytics (GA4, reviews widget callback into the site dataLayer) + Reviews Platform (Bazaarvoice / Yotpo / Okendo) + Order Management
Dependencies
Prerequisite: List the dependencies required for this Event
Dimensions:
Report Attributes
Item Category Product Name Item Brand Review Source Rating Value Band Verified Buyer Flag Days Since Purchase Band Device Category Customer Loyalty Tier
Segment Eligibility
true
Governance
Dimensions
Related Dimensions
Derived Entities
Governance & Metadata
GitHub
catalog/events/product-review-submission.yml