Conversations API: Retrieve and submit consumer-generated content (CGC), and retrieve your product catalog and statistics about your CGC.
Featured Used Events
Contents
To collect the granular interactions with CGC (e.g. clicks, sorts, filters, and hovers, invoking an image overlay, clicking a user profile, loading more content), the trackEvent
event is used.
Feature Used analytic events
It's not enough to know that a user has viewed pages with consumer-generated content. It is valuable to also know how end users interact with consumer-generated content on a web page. This information can provide insights on the information users value before making a conversion, or purchase. Capturing the relationship between consumer-generated content and client actions is made possible by the API Analytics Feature Used tagging. The following is a partial list of user events that indicate user interaction with consumer-generated content.
trackEvent()
BV.pixel.trackEvent('Feature', { eventObject });
This method communicates that the customer has interacted with the consumer-generated content in some way. For instance:
- Searching
- Filtering (age range or gender filters)
- Sorting (such as top rated, least rated, most recent)
- Paginating
- Helpfulness voting
- Viewing a profile
- Clicking on stars
- Reading more of a review
- Reading content behind a tab
Arguments
Name | Type | Default | Description | Priority |
---|---|---|---|---|
eventType |
String | 'Feature' | String value to indicate user interacation with HTML control | Required |
eventObject |
Object | N/A | An object containing data related to the Bazaarvoice products and the HTML control with which the user interacted with | Required |
Usage
The FeatureUsed
analytics code should execute each time a user interacts with a control that displays or manipulates any CGC. This can include button click events that filter content, a hover event that brings up a modal dialog, or a tablet swipe event that fetches additional CGC.
The example below queues the FeatureUsed
event and associated parameters when the user clicks a control with ID 'sort_CGC':
$( "#sort_CGC" ).click(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'sort', brand: 'Test Brand', productId: '1234567-bunnyhat', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: 'ascending', detail2: '' }); });
Feature Used data
The Feature Used data is passed to trackEvent('Feature', eventObject) as an object as demonstrated in the example above.
Field | Type | Sample value | Priority |
---|---|---|---|
Type | String | 'Used' | Required |
productId | String | X5-2000' | Required |
bvProduct | String |
'RatingsAndReviews' | 'AskAndAnswer'
|
Required |
brand | String |
'GoPro'
|
Recommended |
categoryId | String |
'electronics'
|
Recommended |
name | String |
Name of the feature used (such as 'paginate'). See transaction nomenclature
|
Required |
detail1 | String |
See transaction nomenclature discussion below
|
Recommended |
detail2 | String |
See transaction nomenclature discussion below
|
Recommended |
When multiple Bazaarvoice products are used on the same page (such as Ratings and Reviews and Ask and Answer), the use of the bvProduct
parameter is highly recommended. This allows the Conversion Impact report to be granular to the specific Bazaarvoice product. Furthermore, when using the bvProduct
, it is required that the numQuestions
and numAnswers
be included.
Interactive Feature Used samples
This section documents the numerous trackEvent
tags and describes the attributes (detail1
and detail2
) that Bazaarvoice suggests when implementing BV Pixel.
This tutorial borrows from the static hosted HTML Analytic page. Various HTML controls below are represented on that web page. The larger image below provides a visualization of some the possible consumer-generated content (CGC) elements that users can interact with.
Within product display pages (PDPs), there are often layouts where similar or identical HTML elements exist in different locations on the page. When this occurs, the detail2
attribute is used to distinguish the HTML element being used. Readers should familiarize themselves with the basic anatomy of product display page components.
Although exhaustive, the events tracked can be expanded upon. This list is the same as those events that are tracked for clients using our hosted display solution.
Interacting with the HTML controls below also will invoke the Feature Used event, which the elements document. This can be seen in the Chrome browser with the Bazaarvoice Chrome extension installed.
Desktop experience
Helpfulness vote
When users interact by clicking elements on a web page, those analytics events are captured. The following lists the elements that should be tagged.
-
HTML Control - Positive Helpfulness Vote Image Name 'helpfulness' Detail 1 'positive' Detail 2 Priority Optional Code Sample $( "#YesHelpfulVote" ).click(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'helpfulness', brand: 'Test Brand', productId: '1234567', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: 'positive', detail2: '' }); });
-
HTML Control - Negative Helpful Vote Image Name 'helpfulness' Detail 1 'negative' Detail 2 Priority Optional Code Sample $( "#NoHelpfulVote" ).click(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'Helpfulness', brand: 'Test Brand', productId: '1234567', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: 'Negative', detail2: '' }); });
Profile
-
HTML Control Staff- View Profile ButtonImage Name 'profile' Detail 1 '' Detail 2 '' Priority Optional Code Sample $( "#ViewProfileButton" ).click(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'profile', brand: 'Test Brand', productId: '1234567', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: '', detail2: '' }); });
- Hovering to activate profile
When consumer-generated content is discovered while hovering HTML elements, the preferred analytic nomenclature is described below.
Detail1
contains the name of the element hovered.HTML Control GamerGuyMember since: July 2010Number of reviews: 27Avg rating: 3.22Last review: August 2016User: GamerGuyName 'profile' Detail 1 'hover' Detail 2 Priority Optional Code Sample $( "#ViewProfileButton" ).hover(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'profile', brand: 'Test Brand', productId: '1234567', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: 'hover', detail2: '' }); });
Report
-
HTML Control - Report Link Image Name 'report' Detail 1 '' Detail 2 '' Priority Optional Code Sample $( "#reports_btn" ).click(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'report', brand: 'Test Brand', productId: '1234567', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: '', detail2: '' }); });
Read more
When the request to see additional content hidden by a tab, accordion, or other HTML control is made, the 'Read more' feature event should be invoked. Detail1
for this action should contain be 'expand'. In the opposite scenario, when a request is made to 'read less', the same feature event 'Read more' is called Detail1
should have a value of 'collapse'.
-
HTML Control Image Name 'read_more' Detail 1 'expand' | 'collapse' Detail 2 container name Priority Optional Code Sample $( "#reports_btn" ).click(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'read_more', brand: 'Test Brand', productId: '1234567', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: 'expand', detail2: 'mainReviews' }); });
Filter
Captures when users request to see a subset of content based on criteria.
- Filter
HTML Control Gender
Image Name 'filter' Detail 1 {Filter Name}
'GenderMale'
'GenderFemale'
'Age_18_24'
'Age_65_plus' '5_stars'
Detail 2 {Filter Status}
true
falsePriority Required Code Sample $( ".filter_gender" ).click(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'filter', brand: 'Test Brand', productId: '1234567', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: 'genderMale', detail2: 'true' }); });
- Star Filter
HTML Control - Stars Image Name 'filter' Detail 1 stars Detail 2 {number of stars} Priority Required Code Sample $( "#Stars_n" ).click(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'filter', brand: 'Test Brand', productId: '1234567', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: 'stars', detail2: 3 }); });
Link
-
HTML Control Questions & Answers Image Name 'link' Detail 1 'q_and_a' Detail 2 'PrimaryRatingSummary' Priority Optional Code Sample $( "#QandA_Label" ).click(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'link', brand: 'Test Brand', productId: '1234567', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: 'q_and_a', detail2: 'PrimaryRatingSummary' }); });
-
HTML Control 355 reviews - ReviewCount Image Name 'link' Detail 1 'review_count' Detail 2 'PrimaryRatingSummary'
'SearchBarRatingSummary'Priority Required Code Sample $( "#ReviewcCnt" ).click(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'link', brand: 'Test Brand', productId: '1234567', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: 'review_count', detail2: 'PrimaryRatingSummary' }); });
Paginate
When users interact with a control to request content from a different page. Detail2
contains the requested page number.
- Pagination
HTML Control Name 'paginate' Detail 1 'previous'
'next'
''Detail 2 {Page #} Priority Optional Code Sample $( ".js-pagination.link" ).click(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'paginate', brand: 'Test Brand', productId: '1234567', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: 'previous', detail2: '' }); });
Ask
Implementations that have access to Bazaarvoice Questions and Answers API may build features to post questions to product owners. Often a product detail page hides the questions form until it is requested. This HTML control represents that scenario, clicking the button would display a form containing inputs a user interacts with.
The Detail2
attribute details the location of the where the button is found in relation to the other consumer-generated content.
- Ask a question button
HTML Control Name 'ask' Detail 1 'Button' Detail 2 'PrimaryRatingSummary'
'ContentTop'Priority Required Code Sample $( "#ViewProfileButton" ).click(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'ask', brand: 'Test Brand', productId: '1234567', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: 'button', detail2: 'PrimaryRatingSummary' }); });
Statistics
- Histogram
HTML Control See StatisticsName 'statistics' Detail 1 'hover' Detail 2 'PrimaryRatingSummary'
'SearchBarRatingSummary'Priority Optional Code Sample $( ".histogram_hover" ).hover(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'statistics', brand: 'Test Brand', productId: '1234567', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: 'hover', detail2: '' }); });
Write
This action is tagged when a user interacts with the control to contribute or author some type of user generated content. This often is seen in adding a review, asking a question, or providing an answer.
Because there can be multiple controls soliciting the same action on the same page, the detail2
attribute captures which control was interacted with. A descriptive identifier of the control is suggested.
- Write
HTML Control Image Name 'write' Detail 1 'review' Detail 2 'PrimaryRatingSummary'
'ContentTop'
'SearchBarRatingSummary'Priority Required Code Sample $( "#ItemWriteReviewLnk" ).click(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'write', brand: 'Test Brand', productId: '1234567', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: 'review', detail2: '' }); });
-
HTML Control Write a review - Write Review Label Name 'write' Detail 1 'review' Detail 2 'PrimaryRatingSummary' Priority Required Code Sample $( "#ItemWriteReviewLnk" ).click(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'write', brand: 'Test Brand', productId: '1234567', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: 'review', detail2: 'PrimaryRatingSummary' }); });
Sort
When users interact with a control to rearrange the presentation order of content.
- Sort
HTML Control Most helpfulImage Name 'sort' Detail 1 'mostRecent'
'negative'
'mostHelpful'
'positive'
'relevancy'
'recentQuestionsFirst'
'featured'Detail 2 Priority Required Code Sample $( "#sort" ).click(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'sort', brand: 'Test Brand', productId: '1234567', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: 'mostHelpful', detail2: '' }); });
Search
This action is tagged when a user searches for a specific string within the consumer-generated content.
- Search
HTML Control Name 'search' Detail 1 '{User's search string}' Detail 2 Priority Required Code Sample $( "#bv-content-search-btn" ).click(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'search', brand: 'Test Brand', productId: '1234567', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: '{User\'s search string}', detail2: '' }); });
Submission
- Review Submission
HTML Control Image Name 'submit' Detail 1 'review' Detail 2 Priority Required Code Sample $( "#bv-content-search-btn" ).click(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'submit', brand: 'Test Brand', productId: '1234567', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: 'review', detail2: '' }); });
- Question Submission
HTML Control Image Name 'submit' Detail 1 'question' Detail 2 Priority Required Code Sample $( "#bv-content-search-btn" ).click(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'submit', brand: 'Test Brand', productId: '1234567', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: 'question', detail2: '' }); });
- Answer Submission
HTML Control Name 'submit' Detail 1 'answer' Detail 2 Priority Required Code Sample $( "#bv-content-search-btn" ).click(function() { BV.pixel.trackEvent('Feature', { type: 'Used', name: 'submit', brand: 'Test Brand', productId: '1234567', bvProduct: 'RatingsAndReviews', categoryId: 'hats', detail1: 'answer', detail2: '' }); });
Mobile experience
Bazaarvoice offers 2 native mobile solutions, IOS and Android, both of which implement BV Pixel. A hybrid app solution will be offered in the near future.
Feature event nomenclature
In order to capture the impact of different user events on CGC data (such as sorting, filtering, paginating), Featured Used transaction analytic tags are used. A naming standard should be used to differentiate between the CGC interaction events. The name
, detail1
, and detail2
parameters used in the Featured Used transaction analytic tags should be set up accordingly.
- Name - used to describe the purpose of the HTML control. Values that Bazaarvoice suggests using include:
- 'sort'
- 'paginate'
- 'profile
- 'link'
- 'statistics'
- 'expand'
- 'filter'
- 'helpfulness'
- 'write'
- 'ask'
- 'search'
- 'submit'
- Detail1 - this value aims at capturing secondary metadata about the Feature Used active event. For instance, when 'filtering', what is the criteria being considered? If sorting, which direction is the content being sorted, 'ascending' or 'descending'? Bazaarvoice suggests using the following combinations:
Name Detail1 'sort' 'mostRecent' | 'negative' | 'mostHelpful' | 'positive' | 'relevancy' | 'recentQuestionsFirst' | 'featured' 'filter' {value that is being used} e.g. 'genderMale' 'paginate' {page number} 'helpfulness' 'positive' | 'negative' 'link' 'question' | 'answer' | 'review' 'search' {search string value} 'write' 'question' | 'answer' | 'review' 'submit' 'question' | 'answer' | 'review' - Detail2 - when applicable, this attribute should capture additional metadata about the HTML control. This attribute is helpful to identify the specific control that is being interacted with in cases where similar controls exist. Take for instance the image below. The star rating appears twice on the page. Interacting with either set of stars performs the same function. The
Detail2
captures information that identifies the set of stars where the interaction occurred.Common
Detail2
values include:- 'primaryRatingSummary'
- 'mainReview'
- 'searchBarRatingSummary'
- 'mainQuestion'