How to Enrich Purchase Events with Bazaarvoice UGC

Join Bazaarvoice ratings, review count, and UGC engagement onto the purchase event server-side, then measure whether AI-sourced traffic actually converts through reviews.

Ecem Bircan
Data Analyst
Marketing

Reviews, ratings, and Q&A on a product page often decide the purchase. Measurement usually treats them as a separate system: the Bazaarvoice widget lives in the browser, the purchase event lives in analytics.

That split costs you two questions you cannot answer later:

  • Did this SKU sell with a 4.8 rating and 728 reviews, or with almost none?
  • Did the shopper actually see or use that UGC before they bought?

It also blocks a newer funnel: someone lands from ChatGPT, Perplexity, or Gemini, reads reviews, and converts. Client-side tags miss a lot of that traffic. The join has to happen server-side.

1. Enrich the purchase event from Bazaarvoice

A typical purchase payload only has the SKU and the money:

{
  "event": "purchase",
  "product_id": "SKU-123",
  "value": 149,
  "currency": "EUR"
}

Hardal's server-side collector receives that event, looks up product_id against the Bazaarvoice API, and attaches the live rating and review count. First-party events on the same session say whether UGC was shown and whether the user engaged with it. The enriched event looks like this:

{
  "event": "purchase",
  "product_id": "SKU-123",
  "value": 149,
  "currency": "EUR",
  "bv_rating": 4.8,
  "bv_review_count": 728,
  "bv_review_exposed": true,
  "bv_review_engaged": true
}
FieldMeaning
bv_ratingBazaarvoice average rating for the purchased product
bv_review_countNumber of reviews on that product
bv_review_exposedThe shopper saw reviews / ratings on the page
bv_review_engagedThe shopper interacted with UGC (read, filter, Q&A)

Send the same payload to analytics, the warehouse, and ad platforms. Then you can cut revenue by rating band, or purchase rate by "saw reviews" vs "did not". Watching the widget in the browser and firing purchase somewhere else will not give you that join.

2. Measure UGC on AI-sourced traffic

The second flow is the AI commerce path:

  1. The shopper gets a product suggestion in ChatGPT, Perplexity, or Gemini.
  2. They land on the brand product page.
  3. Bazaarvoice UGC (reviews, ratings, Q&A) renders.
  4. They engage with it and buy.
  5. Hardal first-party, server-side measurement keeps the UGC events and the purchase on the same session.

The report is AI Visibility → Revenue. Four numbers:

  • AI-sourced traffic — sessions from assistants / AI search
  • UGC engagementbv_review_exposed and bv_review_engaged
  • Purchases — conversions in those sessions
  • Revenue — value on the same sessions

That is how you tell whether AI-referred users actually use Bazaarvoice content, and whether that use turns into money. A browser pixel is the wrong instrument here: assistant and crawler-origin hits often never run your JS.

Where to start

  1. Make product_id on purchase match the Bazaarvoice catalog ID.
  2. Add the Bazaarvoice lookup on the collector so rating and review count land on the event.
  3. Collect UGC impression and engagement as first-party events and stitch them to the session.
  4. Put AI-sourced traffic, UGC, purchases, and revenue on one report.

Leaving Bazaarvoice as "just the review widget" leaves purchase data half-empty. Put rating, review volume, and UGC engagement next to the purchase and you can read both catalog performance and whether AI demand actually converts.