← Back to Events

Product Review Submission

Also known as: Review Submit, review_submit, Write a Review, Rating Submitted, Post-Purchase Review Submission

RetentioneventE-commerce: Customer Retention, Loyalty & LTVE-commerce

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

PlatformEvent
Google Analytics 4submit_form
AdobeForm 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

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

Data SensitivityInternal

Dimensions

Derived Entities

Governance & Metadata

Created bydevyendarm
Created on9/17/2026
Last modified bydevyendarm
Last modified on9/20/2026
Version1.0.0
Validation stateqa passed
StatusPUBLISHED

GitHub

View related Pull Requestcatalog/events/product-review-submission.yml

Community Discussion