Product Display Page - Feature Used Events

To collect the granular interactions with UGC (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 user-generated content. It is valuable to also know how end users interact with user-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 user-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 user-generated content.

trackEvent()

BV.pixel.trackEvent('Feature', { eventObject });

This method communicates that the customer has interacted with the user-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

NameTypeDefaultDescriptionPriority
eventTypeString'Feature'String value to indicate user interaction with HTML controlRequired
eventObjectObjectN/AAn object containing data related to the Bazaarvoice products and the HTML control with which the user interacted with Bazaarvoice products and the HTML control with which the user interacted withRequired

Usage

The FeatureUsed analytics code should execute each time a user interacts with a control that displays or manipulates any UGC. 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 UGC.

The example below queues the FeatureUsed event and associated parameters when the user clicks a control with ID 'sort_UGC':

$( "#sort_UGC" ).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.

FieldTypeSample valuePriority
TypeString'Used'Required
productIdStringX5-2000'Required
bvProductString'RatingsAndReviews' | 'AskAndAnswer'Required
brandString'GoPro'Recommended
categoryIdString'electronics'Recommended
nameStringName of the feature used (such as 'paginate'). See transaction nomenclatureRequired
detail1StringSee transaction nomenclature discussion belowRecommended
detail2StringSee transaction nomenclature discussion belowRecommended

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 user-generated content (UGC) 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.

📘

Use with the API Analytics Extension

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
1
2
3
4
5
6
7
8
9
10
11
12
$( "#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
1
2
3
4
5
6
7
8
9
10
11
12
$( "#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 Button
Image
Name 'profile'
Detail 1 ''
Detail 2 ''
Priority Optional
Code Sample
1
2
3
4
5
6
7
8
9
10
11
12
$( "#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 user-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
GamerGuy
Member since: July 2010
Number of reviews: 27
Avg rating: 3.22
Last review: August 2016
User: GamerGuy
Name 'profile'
Detail 1 'hover'
Detail 2
Priority Optional
Code Sample
1
2
3
4
5
6
7
8
9
10
11
12
$( "#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
1
2
3
4
5
6
7
8
9
10
11
12
$( "#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
1
2
3
4
5
6
7
8
9
10
11
12
$( "#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.

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
false
Priority Required
Code Sample
1
2
3
4
5
6
7
8
9
10
11
12
$( ".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

355 reviews | 3.8 out of 5

- Stars
Image
Name 'filter'
Detail 1 stars
Detail 2 {number of stars}
Priority Required
Code Sample
1
2
3
4
5
6
7
8
9
10
11
12
$( "#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
1
2
3
4
5
6
7
8
9
10
11
12
$( "#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
1
2
3
4
5
6
7
8
9
10
11
12
$( "#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.

HTML Control
Name 'paginate'
Detail 1 'previous'
'next'
''
Detail 2 {Page #}
Priority Optional
Code Sample
1
2
3
4
5
6
7
8
9
10
11
12
$( ".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 user-generated content.

HTML Control
Name 'ask'
Detail 1 'Button'
Detail 2 'PrimaryRatingSummary'
'ContentTop'
Priority Required
Code Sample
1
2
3
4
5
6
7
8
9
10
11
12
$( "#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 Statistics
Name 'statistics'
Detail 1 'hover'
Detail 2 'PrimaryRatingSummary'
'SearchBarRatingSummary'
Priority Optional
Code Sample
1
2
3
4
5
6
7
8
9
10
11
12
$( ".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
1
2
3
4
5
6
7
8
9
10
11
12
$( "#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
1
2
3
4
5
6
7
8
9
10
11
12
$( "#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
Image
Name 'sort'
Detail 1 'mostRecent'
'negative'
'mostHelpful'
'positive'
'relevancy'
'recentQuestionsFirst'
'featured'
Detail 2
Priority Required
Code Sample
1
2
3
4
5
6
7
8
9
10
11
12
$( "#sort" ).click(function() {
    BV.pixel.trackEvent('Feature', {
        type: 'Used',
        name: 'sort',
        brand: 'Test Brand',
        productId: '1234567',
        bvProduct: 'RatingsAndReviews',
        categoryId: 'hats',
        detail1: 'mostHelpful',
        detail2: ''
    });
});

Search

HTML Control
Name 'search'
Detail 1 '{User's search string}'
Detail 2
Priority Required
Code Sample
1
2
3
4
5
6
7
8
9
10
11
12
$( "#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
Name 'search'
Detail 1 '{User's search string}'
Detail 2
Priority Required
Code Sample
1
2
3
4
5
6
7
8
9
10
11
12
$( "#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: ''
    });
});

Question Submission

HTML Control
Image
Name 'submit'
Detail 1 'question'
Detail 2
Priority Required
Code Sample
1
2
3
4
5
6
7
8
9
10
11
12
$( "#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
1
2
3
4
5
6
7
8
9
10
11
12
$( "#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 UGC data (such as sorting, filtering, paginating), Featured Used transaction analytic tags are used. A naming standard should be used to differentiate between the GC interaction events. The name, detail1, and detail2 parameters used in the Featured Used transaction analytic tags should be set up accordingly.

  1. 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'
  1. 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'
  1. 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'

Ultimately the syntax used here is up to the clients discretion since it will be terminology they will be filtering with in the Conversion Impact Report (CIR).