Use BV Pixel to capture data about product purchases and non-transactional events, such as clicks on a Store Locator or Where To Buy link. You can also use BV Pixel to stop Bazaarvoice from tracking a user across your domain.

Implementing BV Pixel is essential for measuring the business impact of your user-generated content (UGC). Watch this video to learn why.

BV Pixel is implemented using JavaScript. It’s similar to other analytics-tracking services from Google Analytics or Omniture. You must implement BV Pixel on the following pages:

  • For product purchases (transactions), implement BV Pixel on all order confirmation pages on your website.
  • For non-transactional interactions (conversions), implement BV Pixel on pages where the interactions will occur.

After you implement BV Pixel, you can:

  • Generate valuable insights into your user-generated content (UGC) program.
  • Discover key information about the impact of Bazaarvoice content on your online business.
  • Use Bazaarvoice features to increase the volume of UGC.
  • Generate return-on-investment (ROI) reports related to key performance indicators.
  • Use data collected about consumers along with UGC to target the right shoppers at the right time.
Note: If you have an existing BV Pixel implementation that uses the scout file (bvapi.js), refer to the BV Pixel v1 documentation. However, Bazaarvoice encourages you to migrate to v2 (using the BV loader file, bv.js) for performance improvements and future innovations.

Events captured by BV Pixel

BV Pixel captures these event types:

  • Transactions—Product purchases. These events are captured if you implement BV Pixel on the order confirmation page.
  • Conversions—Non-transactional interactions, such as clicks on a Store Locator or Where to Buy link, newsletter sign-ups, product registrations, or PDF downloads. These events are captured if you implement BV Pixel on pages where the conversion events occur.
  • Page views—Page loads for webpages that contain Bazaarvoice code. These events are captured automatically when you set up your Conversations display code.
  • Impressions—Instances of Bazaarvoice content that are served to a device and loaded on the page. For example, a consumer viewing a review is an impression. Impressions include interactions with content hidden by code, such as on tabs and accordions. These events are captured automatically when you set up your Conversations display code.
  • Feature events—Content views and interactions, including the following:
    • InView events, which indicate that content is visible on the page. This event is triggered only once per page load.
    • ViewedUGC events, which are triggered if Bazaarvoice content is visible on the page for at least five seconds. This event is triggered only once per page load.
    • Used events, which indicate user interactions with Bazaarvoice content and are used for clicked features such as Filter, Sort, and Paginate. This event is triggered only once per page load.

    Feature events are captured automatically when you set up your Conversations display code.

General steps for implementing BV Pixel (bv.js)

Perform the following steps to implement the transaction and conversion events. The other BV Pixel events are captured automatically when you set up your Conversations display code.

Transaction event for eCommerce sites

  1. Add the BV loader.
  2. Add the transaction event.
  3. (Optional) Add PII parameters to send post-interaction email (PIE) messages.
  4. Test your implementation.

Conversion event for non-eCommerce sites

  1. Add the BV loader.
  2. Add the conversion event.
  3. (Optional) Add PII parameters to collect information about the consumer.
  4. Test your implementation.

You must implement BV Pixel on a whitelisted domain. Bazaarvoice manages the domain whitelist internally. If you are in the implementation stage of a project, contact your Bazaarvoice implementation team to request changes to the whitelist. If you are in the support stage, contact Bazaarvoice Client Care to request changes.

Note: If your implementation uses an API, implement BV Pixel with the rest of the Bazaarvoice analytics events as described in the API Analytics documentation . If you have a native app, you can use the Mobile SDK.

Refer to the Quick-start implementation steps for code examples you can follow to implement BV Pixel quickly.

Add the BV loader

To enable BV Pixel, you must add the BV loader to every webpage where you intend to collect events. The BV loader loads the Bazaarvoice JavaScript library, which is required to track activities on your website.

Caution: If you added the BV loader while implementing Bazaarvoice-hosted display or DCC, do not add it again. Add the BV loader only once per page.

To add the BV loader to a webpage, add the following code:

<!-- load BV loader -->
<script async src="https://apps.bazaarvoice.com/deployments/<client_name>/<site_ID>/<environment>/<locale>/bv.js"></script>

where:

  • client_name—Client name provided by Bazaarvoice. Be sure to use lowercase letters for the value.
  • site_ID—ID of the deployment zone you want to use. This is set in the Bazaarvoice configuration hub within the Bazaarvoice Workbench. The default deployment zone is “main_site”. Check with your Bazaarvoice representative to ensure the correct ID, or select to the right of the deployment zone on the Site Manager page of the configuration hub.
  • environment—Deployment environment on which you want to implement BV Pixel. For a production environment, include production in the path. If you are referencing a staging environment, include staging in the path.
  • locale—Locale used by the BV Pixel implementation. If you are not using US English (en_US), use the correct locale code.

Here is an example URL for Endurance Cycle’s staging environment of the Main Site deployment zone: https://apps.bazaarvoice.com/deployments/endurancecycles/main_site/staging/en_US/bv.js

Here is an example URL for Endurance Cycle’s production environment of the implementation. The deployment zone (site ID) is mobile:

https://apps.bazaarvoice.com/deployments/endurancecycles/mobile/production/en_US/bv.js

Add the transaction event

If you have an eCommerce website, add the transaction event below the BV loader. This event captures purchase data when a customer buys a product. A purchase comprises an order and the items purchased in the order.

The transaction event is required on eCommerce websites. We recommend adding the transaction event to a confirmation page, such as a thank you page or payment confirmation page. Add the transaction event and its required parameters below the BV loader, as shown in the following code example.

<!-- load bv.js -->
<script async src="https://apps.bazaarvoice.com/deployments/<client_name>/<site_ID>/<environment>/<locale>/bv.js"></script>

<!--load Transaction event and parameters-->
<script>
window.bvCallback = function (BV) {
  BV.pixel.trackTransaction({
    "currency" : "value",
    "orderId" : "value",
    "total" : "value",
    "items" : [
      {
        "price" : "value",
        "quantity" : "value",
        "productId" : "value",
        "optional_item_parameter" : "value"
      },
      ...
    ],
    "optional_order_parameter" : "value",
    ...
    "optional_PII_parameter" : "value",
    ...
  });
};
</script>
Note: Parameter names are case sensitive and must be specified as shown.

Required order parameters

Parameter Description Example value
currency

ISO 4217 alphabetic currency code of the order.

Impact:

  • If you have multiple locales, the Conversion Impact report (CIR) needs currency to display revenue with each currency in its own row.

    Note: If currency is not included, values in the CIR will be displayed in USD.
  • Can be used in maintenance-free PIE messages.
CHF
orderId

Unique ID of an order generated by a site.

Impact:

  • Required to distinguish unique counts of orders.
  • An important factor in measuring ROI.
55555
total

Total cost of the product order with discounts and coupons applied but excluding tax and shipping. Specify the value for total in English format using two decimal places. Do not include a currency symbol, such as $ for USD.

Impact:

  • Affects revenue in the CIR.

  • An important factor in measuring ROI.
178.07
items Array of the individual items in the transaction. See the following sections for required and optional array parameters.

Required item parameters

The following item parameters are important factors in measuring ROI.

Parameter Description Example
price

Individual price of the item, not price x quantity.

Specify the value for price in the English format using two decimal places. Do not include a currency symbol, such as $ for USD.

12.95
quantity Number of items purchased. 3
productId

Must match the product <ExternalId> in your Bazaarvoice product catalog. Do not set this to standard SKU unless you use SKU to identify products in your Bazaarvoice catalog.

908736

Optional order and item parameters

Note: If you don't need an optional parameter, don't include it in the event. For example, if the tax parameter has no data, do not add "tax" : "" (an empty string). Instead, omit the parameter.
Parameter Description Example
name

Name of the item.

Serena Boots
category

(Recommended) Item parameter that captures the product category used on the website.

Impact: Enables you to measure ROI by category.

Mens casual boots
shipping

(Recommended) Order parameter that captures the cost of shipping the order. Specify the value for shipping in the English format using two decimal places. Do not include a currency symbol, such as $ for USD.

Impact: Enables you to verify total is correct and helps you understand the true product order cost.

10.00
shippingDate

Used instead of the transaction date to determine when Bazaarvoice sends the post-interaction email (PIE) message. The date must be in the following format: YYYY-MM-DD.

If a first PIE delay is configured, that delay is added to the date specified here. For example, if you specify "shippingDate" : "2016-12-21" and the PIE delay is set to 10 days, the PIE message is sent on Dec 31, 2016 (2016-12-31).

You can use shippingDate or shippingDelay, but do not use both.

2016-12-21
tax

(Recommended) Order parameter that captures the amount of tax applied to the order. Specify the value for tax in the English format using two decimal places. Do not include a currency symbol, such as $ for USD.

Impact: Enables you to verify total is correct and helps you understand the true product order cost.

11.44
discount

(Recommended) Amount discounted from the order or item. Specify the value for discount in the English format using two decimal places. Do not include a currency symbol, such as $ for USD. This value should be a non-negative number. You can apply this parameter to the order to capture the discount applied to the entire transaction, or you can apply this parameter to individual items to capture the discount applied to each item.

Impact: Enables you to verify total is correct and helps you understand the true product order cost.

5.00
city

Order parameter that captures the end user specifying the order’s city.

Detroit
state

Order parameter that captures the end user specifying the order’s state.

Utah
country

Order parameter that captures the end user specifying the order’s country.

CA
deploymentZone Order parameter that specifies the ID of the deployment zone to which the implementation is deployed. Specify this parameter if you have multiple deployment zones. The parameter instructs Bazaarvoice to use the implementation's email templates when sending PIE messages. The implementation containing the configured email templates must be published to the deployment zone before you reference the deployment zone in the PIE feed. If you omit this parameter, the deployment zone specified by <environment> in the BV loader's path is used. secondary_site
Note: You can send email messages to consumers to request reviews or answers to product questions by adding personally identifiable information (PII) parameters to the transaction event. See Add PII parameters for details.

Add the conversion event

If you have a non-Commerce website, add the conversion event below the BV loader. This event captures customer interactions that are non-transactional, such as selecting a “Where to Buy” link.

The conversion event is required on non-Commerce websites, such as brand websites, and to generate non-Commerce Conversion Impact reports. The event is optional on e-Commerce websites.

Add the event only to high-value, non-transactional goals that are intended to be reasonably influenced by Bazaarvoice content.

Note: Data captured by the conversion event cannot be used in post-interaction email (PIE) messages. To send PIE messages, use the transaction event.

Add the conversion event and its parameters to the page below the BV loader, as shown in the following example code.

<!-- load BV loader -->
<script async type="text/javascript" src="https://apps.bazaarvoice.com/deployments/<client_name>/<site_ID>/<environment>/<locale>/bv.js"></script>

<!--load Conversion event and parameters-->
<script>
window.bvCallback = function (BV) {
BV.pixel.trackConversion({
  "type" : "value",
  "label" : "value",
  "value" : "value"
});
};
</script>
Note: Parameter names are case sensitive and must be specified as shown.

Parameters

Parameter Description Example
type

(Required) Type of conversion that is taking place. Refer to the following Recommended Values table to define the values of this parameter.

Impact: Creates conversion events that are measured in the Conversion Impact report (CIR). The type parameter maps directly to each goal that appears in the non-Commerce CIR.

StoreLocator
value (Optional) Value attributed to the conversion. This value does not appear in the non-Commerce CIR. 55781
label (Optional) Descriptive label to apply to the conversion. This value does not appear in the non-Commerce CIR. ProductPage

Bazaarvoice can support any value for the type parameter, but the following list provides recommended values for specified conversion types. If you see a permutation that better matches your needs, use it as the value for label to make it more specific to your site.

Type Value Description
StoreLocator

Enables the consumer to locate a store or determine where to purchase products offline.

Permutations: DealerLocator, FindStore

WhereToBuy Indicates where to buy products (online or in store).
BuyNow

Enables the consumer to purchase now.

Permutations: BuyOnline, ClickToBuy

Compare Enables the consumer to compare two or more products.
ProductDetail Provides additional product details.
AddToCart Adds a product to a cart.
Quote Enables a consumer to request a price quote.

Add PII parameters

You can add personally identifiable information (PII) parameters to BV Pixel transaction and conversion events. PII comprises data that is personal and often private to consumers. If you add PII, it could potentially identify a specific individual or distinguish one person from another.

PII is:

  • Never associated with the Bazaarvoice persistent cookie
  • Always transmitted over HTTPS
  • Encrypted before writing to disk
  • Stored separately from non-PII data
  • Never processed by Bazaarvoice analytics

Add PII parameters to:

  • Send personalized email messages to consumers to request reviews if post-interaction email (PIE) is enabled.
  • Request answers to product questions if Ask a Product Owner is enabled.

  • Send consumers additional notifications about their reviews or questions.
Note: Only the transaction event sends automated email messages. If you have a non-Commerce website and want to trigger PIE or other automated messages, add the transaction event.

If you add PII parameters to an event, you must add the required parameters. Add optional parameters based on your needs.

Required parameters

Some parameters are required if you are using a specific Conversations feature, such as site authentication. This information is noted in the table when necessary.

Note: All parameters are case sensitive and must be formatted correctly. For example, "userId" should not be "UserID".
Parameter Description Example
email

The customer's email address.

Note: If using maintenance-free PIE, you can use encryption to ensure the security of customer email addresses used for notifications and requests. To learn how, refer to Encrypting email addresses for maintenance-free PIE.
username@example.com
locale

The locale to use to determine the language-specific email template to use. Refer to Supported locales and languages for the list of supported values.

This parameter is required if you are sending unique templates for multiple locales.

fr_CA
nickname

The customer's first name or nickname, captured when the customer creates an account. Used to personalize the email greeting.

This parameter is required if your site is injecting a nickname. Otherwise, it is recommended.

MaryO
userId

The customer's user ID, which must match the userToken (user ID) that is sent to Conversations during the review submission process.

This parameter is required if you are using site authentication. It can be omitted if an ID is not created, such as in the case of guest purchasers.

Note: If you are using Conversations PRR, ensure your PIE configuration worksheet reflects this parameter value accurately.
7448dc2

Optional parameters

If you are providing PII parameters in a transaction event, you can specify parameters for the order or item. If you are providing PII parameters in a conversion event, only order-level parameters are available.

Note: Parameter names and values are case sensitive. If you do not need an optional parameter, do not include it in the event. For example, if the orderID parameter has no data, do not set add "orderID" : "" (an empty string). Instead, omit the parameter.

Order parameters

Parameter Description Example
shippingDelay

Used to increase the time (in days) between the transaction date and the date Bazaarvoice sends the PIE message. This can be useful if you expect delayed fulfillment.

This delay is added to the first PIE delay. For example, if the PIE delay is set to 10 days and you specify "shippingDelay" : "10", the PIE message is sent on May 25 if the transaction date is May 5.

You can use either shippingDelay or shippingDate, but do not use both.

25

Item parameters

Parameter Description Example
imageURL

The full, absolute URL to the product image (not a relative path). If omitted, Bazaarvoice will retrieve the value from our database by matching the productId parameter to the product <ExternalId> sent in your product feed.

This parameter is useful if you want to use a specific image. For example, if your product feed includes a picture of a white shirt but a blue shirt is purchased, the email message can display the blue shirt.

http://www.test.com/1.jpg
shippingDate

Used instead of the transaction date to determine when Bazaarvoice sends the post-interaction email (PIE) message. The date must be in the following format: YYYY-MM-DD.

If a first PIE delay is configured, that delay is added to the date specified here. For example, if you specify "shippingDate" : "2016-12-21" and the PIE delay is set to 10 days, the PIE message is sent on Dec 31, 2016 (2016-12-31).

You can use shippingDate or shippingDelay, but do not use both. Also, if shippingDate is specified as an item parameter, it overrides the value of shippingDate that is specified in the order parameter.

2016-12-21
shippingDelay

Used to increase the time (in days) between the transaction date and the date Bazaarvoice sends the PIE message. This can be useful if you expect delayed fulfillment.

This delay is added to the first PIE delay. For example, if the PIE delay is set to 10 days and you specify "shippingDelay" : "10", the PIE message is sent on May 25 if the transaction date is May 5.

You can use either shippingDelay or shippingDate, but do not use both. Also, if shippingDelay is specified as an item parameter, it overrides the value of shippingDelay that is specified in the order parameter.

25

PII Examples

If the following products are ordered from the StuffForSale.com website:

Product 1

  • Category: Mens Casual Boots
  • Price: $140
  • Discount: $9.99
  • Quantity: 1
  • Name: Leather Chukka
  • Product ID (external ID): 156278

Product 2

  • Category: Home Decor
  • Price: $12.69
  • Quantity: 3
  • Name: Polar White Candle
  • Product ID (external ID): 908736

The transaction event would look like the following code:

<!-- load bv.js -->
<script async type="text/javascript" src="https://apps.bazaarvoice.com/deployments/stuffforsale/main_site/staging/en_US/bv.js"></script>

<!--load Transaction event and parameters-->
<script>
window.bvCallback = function (BV) {
BV.pixel.trackTransaction({
  "orderId" : "55552",
  "total" : "168.08",  //(sum of all products' items * price with discounts applied, without the $ sign)
  "currency" : "USD",
  "tax" : "11.44",  //(tax amount without the $ sign)
  "shipping" : "10.00",  //(shipping amount without the $ sign)
  "items" : [
    {
      "name" : "Leather Chukka",
      "price" : "140.00", //(individual price of item, not price X quantity, without the $ sign)
      "quantity" : "1",
      "productId" : "156278", //(ExternalId in product feed)
      "category" : "Mens Casual Boots",
      "discount" : "9.99" //(discount applied to this item, without the $ sign)
    },
    {
      "name" : "Polar White Candle",
      "price" : "12.69", //(individual price of item, not price X quantity, without the $ sign)
      "quantity" : "3",
      "productId" : "908736", //(ExternalId in product feed)
      "category" : "Home Decor"
        }
    ],
    "email" : "drew@example.com", //Optional PII parameters
    "locale" : "en_US",
    "nickname" : "Drew"
});
};
</script>

The following transaction event collects the unencrypted email address and nickname of a customer in the Canadian English locale:

<!-- load BV loader -->
<script async type="text/javascript" src="https://apps.bazaarvoice.com/deployments/stuffforsale/main_site/staging/en_CA/bv.js"></script>

<!--load Transaction event and parameters-->
<script>
window.bvCallback = function (BV) {
BV.pixel.trackTransaction({
  "orderId" : "69872",
  "total" : "64.95",  //(sum of all products' items * price, without the $ sign)
  "currency" : "USD",
  "tax" : "5.89",  //(tax amount without the $ sign)
  "shipping" : "10.00",  //(shipping amount without the $ sign)
  "discount" : "5.00", //(discount applied to the entire transaction, without the $)
  "items" : [
    {
      "name" : "Ivory Throw",
      "price" : "69.95", //(individual price of item, not price X quantity, without the $ sign)
      "quantity" : "1",
      "productId" : "100598", //(ExternalId in product feed)
      "category" : "Home Decor"
    },
  ],
  "email" : "cheryllynne@example.com",
  "locale" : "en_CA",
  "nickname" : "Cheryl"
});
};
</script>

This example tracks click events for a StoreLocator. It sends the zip code along with the event, and “StoreLocator_ProductPage” identifies that the store locator was used on the product page.

<!-- load BV loader -->
<script async type="text/javascript" src="https://apps.bazaarvoice.com/deployments/stuffforsale/main_site/staging/en_US/bv.js"></script>

<!--load Conversion event and parameters-->
<script>
window.bvCallback = function (BV) {
BV.pixel.trackConversion({
  "type" : "StoreLocator",
  "label" : "StoreLocator_ProductPage",
  "value" : "78701"  //(value attributed to conversion, the zip code)
});
};
</script>

The following example tracks click events for downloading an owner manual. The product identifier is sent with the event to indicate the owner manual that was downloaded by the user. The type parameter will appear on reports.

<!-- load bv.js -->
<script async type="text/javascript" src="https://apps.bazaarvoice.com/deployments/stuffforsale/main_site/staging/en_US/bv.js"></script>

<!--load Conversion event and parameters-->
<script>
window.bvCallback = function (BV) {
BV.pixel.trackConversion({
  "type" : "Download",
  "label" : "OwnersManual_ProductDetails",
  "value" : "Product78493_OwnerManual"
});
};
</script>

Add an opt-out function

If a user does not want their personal data and events tracked by BV Pixel, you can invoke the doNotTrack() function, which will stop Bazaarvoice from tracking a user across your domain.

Stopping tracking for an individual user is as simple as calling the following function:

BV.pixel.doNotTrack();

For example, you can create on a button on your site that a user selects to state that they do not want to be tracked:

// Example of logic where you might have a "BV opt-out" button.
<script src="bv.js"></script>
<script>
// Usage of the "BV" global *must* be wrapped inside bvCallback to ensure
// it is present when called.
window.bvCallback = function () {
  // Create a button.
  var button = document.createElement(button);
  // Add an onClick function
  button.onClick = function () {
    // Invoke the "doNotTrack" function, which will stop BV from tracking
    // this user across your domain.
    BV.pixel.doNotTrack();
  }
  // Append button.
  body.appendChild(button);
}
</script>

As in the above example, the BV global is only accessible after the BV loader has loaded. As always, to ensure you have access to the doNotTrack() function, redeploy your implementation to update the BV loader.

For more detailed information, see the doNotTrack() implementation documentation in the Bazaarvoice Developer portal.

Note: doNotTrack() only opts the user out of personal data collection on your domain, per browser. For example, if your site uses mydomain.com and has a redirect to otherdomain.com, you must call doNotTrack() again for each domain.

Refer to our Privacy Policy for more on how users can opt out of sending their analytics and tracking data across the Bazaarvoice Network.

Test your BV Pixel implementation

BV Pixel must be implemented correctly to capture accurate data about the events on your website. Without accurate data, you cannot fully understand the impact your Bazaarvoice program has on your online business.

Use the following tools to test and debug your BV Pixel implementation:

  • Bazaarvoice Analytics Inspector extension for Google Chrome
  • Transactions monitoring tool in Bazaarvoice Portal

Test all event types in the web browser

Use the Bazaarvoice Analytics Inspector extension for Google Chrome to test and debug transaction events, conversion events, and product display page events. The extension displays messages about events that are executed and data that events might be missing.

Complete these steps to use the extension:

  1. Add the Bazaarvoice Analytics Inspector extension to Chrome.
  2. View Bazaarvoice content on your company’s website.
  3. Select in the browser menu to display the Analytics Inspector.

Transaction event

To test a transaction event, go through the process of a transaction and land on the order confirmation page. You can use a fake product or dummy credit card number to place an order and get to the confirmation page. After the confirmation page is displayed, information similar to the following is displayed in the extension.

To view details, select Conversion under Event Counts. The type is “Transaction.”

  • One order parameter is listed in each row. Verify that all required parameters are listed.
  • Item parameters are listed in the items row. Verify that all required parameters are listed.

Conversion event

To test a conversion (non-transactional) event, select the event on the webpage that corresponds to the conversion event that was added to the code, and then watch for the event to occur. Select Conversion under Event Counts in the analyzer to display details. The type is “Conversion”.

PDP page

To test the various product display page (PDP) events, go to any PDP with Bazaarvoice, load the page, which causes the PageView event to occur. Select PageView under Event Counts to see details.

Note: A Feature event occurs for each of your Bazaarvoice products.
  • When you scroll down to Bazaarvoice content on the page, an InView event should fire. Select Feature under Event Counts to see details.
  • If the Bazaarvoice content is displayed in view for at least five seconds, a ViewedUGC event should fire. Select Feature under Event Counts to see details.
  • When you interact with Bazaarvoice content, a UsedFeature event should fire. Select Feature under Event Counts to see more details.

In the following example, the InView count is 2 because the user scrolled down to Ratings & Reviews and Questions & Answers on the page. The ViewedUGC event count is 2 because the user viewed the Bazaarvoice content on that page for at least five seconds. Lastly, the user interacted with the content, so additional events were captured—the user clicked to ask a question (Ask), clicked to write a review (Write), closed the submission form (Close), and used a filter (Filter).

Test transaction events using the Transactions monitoring tool

Monitor and troubleshoot live transaction event data using the Transactions monitoring tool. You can use the tool whether you’re using the BV Pixel v1 schema, which uses the bvapi.js scout file, or the latest BV Pixel schema, which uses the bv.js BV loader file.

Note: The Transactions monitoring tool provides data about parameters that aren't in the BV Pixel v1 schema, such as discounts for items and orders. Contact Bazaarvoice Client Care if you want to upgrade to the latest schema.

Follow these steps to get started:

  1. Sign in to Bazaarvoice Portal .
  2. Select the menu icon menu in the upper-left corner, and select Monitoring tools. The Transactions page opens.
  3. Apply filters to narrow the list of transactions to those of interest.
    Note: The tool only displays transaction data received during the past 30 days, including the current date. If you filter by date, transactions that occurred during the specified time period but were received more than 30 days ago will not appear in the Transactions list.
  4. Select an Order ID to view key transaction details about the order.
  5. Take note of any errors in the Transaction details and Order details sections.

    You can also select View all transaction details to see a JSON file containing all the information BV Pixel captured about the transaction. Take note of any bv_pixel_violations.

    Note: Select Download as file to export the transaction details.
  6. Troubleshoot and correct errors in your BV Pixel transaction event implementation.

Troubleshoot transaction event issues

Step 1: Verify the transaction event’s location on the confirmation page

Typically, the transaction event is added to a confirmation page, such as a thank-you page or payment confirmation page. Make sure the transaction event JavaScript is below the BV loader in the <head> of the page, as shown in the following example:

<!-- load bv.js -->
<script async src="https://apps.bazaarvoice.com/deployments/<client_name>/<site_ID>/<environment>/<locale>/bv.js"></script>

<!--load Transaction event and parameters-->
<script>
window.bvCallback = function (BV) {
  BV.pixel.trackTransaction({
    "currency" : "value",
    "orderId" : "value",
    "total" : "value",
    "items" : [
      {
        "price" : "value",
        "quantity" : "value",
        "productId" : "value",
        "optional_item_parameter" : "value"
      },
      ...
    ],
    "optional_order_parameter" : "value",
    ...
    "optional_PII_parameter" : "value",
    ...
  });
};
</script>

Step 2: Make sure all values are being passed as strings

Ensure all values in the transaction event, including numbers, are enclosed in double quotation marks.

Step 3: Fix transaction event errors

The Transactions tool reveals errors and warnings about your transaction event implementation. Expand the following sections to learn about the issues and how to resolve them.

Issue Description Impact
Order discount invalid The discount is not in the correct format. Your Conversion Impact report will have incorrect data for Revenue, Average Order Value, and Revenue per Visitor.

What to do

Make sure the value for discount is in the English format using two decimal places. Do not include a currency symbol, such as $ for USD.

Examples

"discount" : "5.00" // VALID

"discount" : "5.0" // INVALID

"discount" : "5" // INVALID

"discount" : "5.000" // INVALID

"discount" : "$5.00" // INVALID

"discount" : 5.00 // INVALID

Issue Description Impact
Order ID missing The transaction does not have an order ID. Orders cannot be distinguished from one another in reports or during troubleshooting.

What to do

Provide a unique <orderID> for each order. The ID can contain numbers, letters, and special characters.

Examples

"orderId" : "55555", // VALID

"orderId" : "ABC-555", // VALID

"orderId" : , // INVALID

Issue Description Impact
Order total invalid The order total is not in the correct format. Your Conversion Impact report will have incorrect data for Revenue, Average Order Value, and Revenue per Visitor.
Order total missing The order did not have a total. Your Conversion Impact report will have incorrect data for Revenue, Average Order Value, and Revenue per Visitor.
Order total mismatch The captured order total does not match the order total calculated by the Transactions tool. Your Conversion Impact report will have incorrect data for Revenue, Average Order Value, and Revenue per Visitor.

What to do

  1. Make sure the value for total is in English format using two decimal places. Do not include a currency symbol, such as $ for USD. Do not use a comma when the total order value is over 1000.

    Examples:

    "total" : "168.08" // VALID

    "total" : "168.0" // INVALID

    "total" : "168" // INVALID

    "total" : "168.008" // INVALID

    "total" : "$168.08" // INVALID

    "total" : 168.08 // INVALID

    "total" : "1,168.08" // INVALID

    "total" : "1168.08" // VALID

  2. Compare the data BV Pixel captured against your own purchase history. If the captured value for total does not equal the sum of each item's price multiplied by each item's quantity minus any discount values, investigate where the calculation error is happening.

    Examples:

    If the following products are ordered from the StuffForSale.com website:

    Product 1

    • Category: Mens Casual Boots
    • Price: $140
    • Discount: $9.99
    • Quantity: 1
    • Name: Leather Chukka
    • Product ID (external ID): 156278

    Product 2

    • Category: Home Decor
    • Price: $12.69
    • Quantity: 3
    • Name: Polar White Candle
    • Product ID (external ID): 908736

    The transaction event would look like the following code:

    
                <!-- load bv.js -->
                <script async type="text/javascript" src="https://apps.bazaarvoice.com/deployments/stuffforsale/main_site/staging/en_US/bv.js"></script>
    
                <!--load Transaction event and parameters-->
                <script>
                window.bvCallback = function (BV) {
                BV.pixel.trackTransaction({
                  "orderId" : "55552",
                  "total" : "168.08",  //(sum of all products' items * price with discounts applied, without the $ sign)
                  "currency" : "USD",
                  "tax" : "11.44",  //(tax amount without the $ sign)
                  "shipping" : "10.00",  //(shipping amount without the $ sign)
                  "items" : [
                    {
                      "name" : "Leather Chukka",
                      "price" : "140.00", //(individual price of item, not price X quantity, without the $ sign)
                      "quantity" : "1",
                      "productId" : "156278", //(ExternalId in product feed)
                      "category" : "Mens Casual Boots",
                      "discount" : "9.99" //(discount applied to this item, without the $ sign)
                    },
                    {
                      "name" : "Polar White Candle",
                      "price" : "12.69", //(individual price of item, not price X quantity, without the $ sign)
                      "quantity" : "3",
                      "productId" : "908736", //(ExternalId in product feed)
                      "category" : "Home Decor"
                    }
                  ],
                  "email" : "drew@example.com", //Optional PII parameters
                  "locale" : "en_US",
                  "nickname" : "Drew"
                });
                };
                </script>

Issue Description Impact
Item discount invalid The discount is not in the correct format. Your Conversion Impact report will have incorrect data for Revenue, Average Order Value, and Revenue per Visitor.

What to do

Make sure the value for discount is in the English format using two decimal places. Do not include a currency symbol, such as $ for USD.

Examples

"discount" : "5.00" // VALID

"discount" : "5.0" // INVALID

"discount" : "5" // INVALID

"discount" : "5.000" // INVALID

"discount" : "$5.00" // INVALID

"discount" : 5.00 // INVALID

Issue Description Impact
Item price invalid Item prices are not in the correct format. Your Conversion Impact report will have incorrect data for Revenue, Average Order Value, and Revenue per Visitor. Return on investment (ROI) and return on ad spend (ROAS) calculations will also be incorrect.
Item price missing Items do not have associated prices. Your Conversion Impact report will have incorrect data for Revenue, Average Order Value, and Revenue per Visitor. Return on investment (ROI) and return on ad spend (ROAS) calculations will also be incorrect.

What to do

Provide the price of an individual item, not price X quantity. Make sure the value for price is in the English format using two decimal places. Do not include a currency symbol, such as $ for USD.

Examples

"price" : "16.00" // VALID

"price" : "16.0" // INVALID

"price" : "16" // INVALID

"price" : "16.000" // INVALID

"price" : "$16.00" // INVALID

"price" : 16.00 // INVALID

Issue Description Impact
Item quantity invalid The quantity of items purchased is not in the correct format. The order total will be incorrect, which impacts the accuracy of the Conversion Impact report.
Item quantity missing Items do not have an associated quantity. The order total will be incorrect, which impacts the accuracy of the Conversion Impact report.

What to do

Provide the quantity of individual items purchased per product ID. The value must be a whole number with no decimals or other punctuation marks.

Examples

"quantity" : "2" // VALID

"quantity" : "2.0" // INVALID

"quantity" : "02" // INVALID

"quantity" : "2," // INVALID

Issue Description Impact
Items missing The transaction did not contain any items. Your Conversion Impact report will have incorrect data for Revenue, Average Order Value, and Revenue per Visitor.

What to do

Make sure your BV Pixel implementation is configured to capture the price, quantity, and productId of each item in a purchase. Optional parameters include name, category, and discount.

Note: If the Order details section indicates a captured product ID is not in your Bazaarvoice catalog, make sure the product ID shown is correct and update your Bazaarvoice catalog with that product ID.
Tip: As a best practice, ensure your Bazaarvoice catalog includes all your active products.

Example

"items" : [
   {
    "name" : "Leather Chukka",
    "price" : "140.00", // (individual price of item, not price X quantity, without the $ sign)
    "quantity" : "1",
    "productId" : "156278", //(ExternalId in product feed)
    "category" : "Men's Casual Boots",
    "discount" : "9.99" //(discount applied to this item, without the $ sign)
   }
],

Issue Description Impact
Product ID not in catalog The product ID isn't in your Bazaarvoice product catalog.
  • PIE—If you use BV Pixel to generate PIE, PIE for this product won't contain a product name or product image, leading to a poor consumer experience.
  • Dashboards—The product will not appear in reporting dashboards unless a dashboard's Product Status filter is set to include inactive products. Even then, without the product's supporting catalog data, correlating the product to report entries will be difficult.
  • Implementation—The product will not be included in the ratings-only export feed.
  • Content management—Workbench won't have a product name, image, category, or PDP URL to associate with reviews submitted about the product.

What to do

Specify a valid product ID or add this product to your catalog.

Issue Description Impact
Locale invalid The locale isn't in a valid four-character locale code. We will send PIE in the default locale: en_US. Consumers who cannot read English won't understand the contents of the PIE and therefore won't write a review.
Locale missing The transaction did not specify a locale. When a locale is missing, we send PIE in the default locale: en_US. Consumers who cannot read English won't understand the contents of the PIE and therefore won't write a review.

What to do

Locale determines the language-specific PIE template to use when asking consumers for product reviews. The default locale is en_US. If you are sending unique PIE templates to other locales, provide a locale using the correct four-character locale code.

Examples

"locale" : "fr_FR" // VALID

"locale" : "French" // INVALID

"locale" : "FR" // INVALID

"locale" : fr_FR // INVALID

Issue Description Impact
Currency invalid The currency isn't in the correct ISO 4217 alphabetic code. The Conversion Impact report and Return on ad spend (ROAS) will list prices and totals in USD.
Currency missing The transaction did not have an associated currency. The Conversion Impact report (CIR) and Return on ad spend (ROAS) will list prices and totals in USD.

What to do

Provide a currency using the correct ISO 4217 alphabetic code .

Examples

"currency" : "USD" // VALID

"currency" : "EUR" // VALID

"currency" : "US" // INVALID

"currency" : "$" // INVALID

"currency" : USD // INVALID

Issue Description Impact
Shipping invalid The shipping cost is not in the correct format. Order totals in the Conversion Impact report may be incorrect.
Currency missing The transaction did not have an associated currency. The Conversion Impact report (CIR) and Return on ad spend (ROAS) will list prices and totals in USD.

What to do

Make sure the value for shipping is in the English format using two decimal places. Do not include a currency symbol, such as $ for USD.

Examples

"shipping" : "10.00" // VALID

"shipping" : "10.0" // INVALID

"shipping" : "10" // INVALID

"shipping" : "10.000" // INVALID

"shipping" : "$10.00" // INVALID

"shipping" : 10.00 // INVALID

Issue Description Impact
Tax invalid The tax is not in the correct format. Order totals in the Conversion Impact report may be incorrect.

What to do

Provide the tax. Make sure the value for tax is in the English format using two decimal places. Do not include a currency symbol, such as $ for USD.

Examples

"tax" : "10.00" // VALID

"tax" : "10.0" // INVALID

"tax" : "10" // INVALID

"tax" : "10.000" // INVALID

"tax" : "$10.00" // INVALID

"tax" : 10.00 // INVALID

Understand the JSON file

The JSON file contains all the information BV Pixel captures about your transaction events. The following table describes fields in the JSON file:

JSON field Description
partnerSource Source of a supported eCommerce plugin integration, when applicable.
total Total amount of the product order including discounts and coupons but excluding tax and shipping.
hadPII A true or false value that indicates whether the transaction data included an email address. For privacy purposes, email addresses are not displayed.
UA_Platform Operating system family of the consumer's agent's host machine.
host Hostname of the page that sent the event, as obtained from window.location.host.
cl BV Pixel event class, such as Conversion, Impression, and PageView. The Transactions monitoring tool shows Conversion events only.
orderId Unique ID of an order generated by a site.
UA_Device Name of the mobile device from which the transaction was made. This is null if the user agent isn't a mobile device.
IpState State from which the transaction was made as determined by a Geo-IP lookup on the partial IP.
tax Amount of tax applied to the order.
client Client name provided by Bazaarvoice.
UA Full user agent string from the HTTP header request containing information about the consumer's browser, operating system, and platform.
shipping Cost of shipping the order.
shippingDate Used instead of the transaction date to determine when Bazaarvoice sends the post-interaction email (PIE) message. The date must be in the following format YYYY-MM-DD.
shippingDelay Used to increase the number of days between the transaction date and the date Bazaarvoice sends the PIE message. The value should be in a numerical format, such as 10.
IpCountry ISO-3166 code for the country from which the transaction was made.
Page Page on the client site on which the transaction event fired.
Dt Timestamp of when Bazaarvoice received the event.
deploymentZone

ID of the deployment zone containing the BV Pixel implementation associated with the transaction. This is set in the configuration hub. The default deployment zone is main_site.

To verify the value of deploymentZone is correct, go to the Site Manager page in the configuration hub and select beside the deployment zone name listed in the JSON file. Contact Bazaarvoice Client Care for more help.

currency ISO 4217 alphabetic currency code of the transaction.
IpCity City from which the transaction was made as determined by a Geo-IP lookup on the partial IP.
bv_pixel_violations BV Pixel implementation issues you should correct to capture more accurate transaction data.
environment Deployment environment in which you implemented BV Pixel. Valid options are production and staging.
label Descriptive label to apply to the conversion.
UA_Browser Browser on which the transaction was made.
UA_Mobile Indicates whether the transaction was made on a mobile device.
Country Valid two- or three-letter ISO country code set by the client.
locale Locale captured by BV Pixel. If the transaction wasn't in US English (en_US), use the correct four-character locale code.
type Type of conversion that took place. Refer to Recommended values for the type parameter to define the values of this required parameter.
source Indicates whether the BV Pixel implementation uses the BV loader file (bv.js) or bvapi.js.
dc Display code or other UI variant identifier.
IpPostalCode Postal code from which the transaction was made as determined by a Geo-IP lookup on the partial IP.
UA_platformVersion Version of the operating system of the device from which the transaction was made.

Quick-start implementation steps

This section provides code examples you can follow to implement BV Pixel quickly. Refer to other sections of this topic for detailed implementation information.

For eCommerce sites, perform these steps:

  1. Add the BV loader code to your order confirmation page.
     <!-- load BV loader -->
     <script async type="text/javascript" src="https://apps.bazaarvoice.com/deployments/<client_name>/<site_ID>/<environment>/<locale>/bv.js"></script>
    
  2. Add the transaction event to the order confirmation page:
     <!-- load bv.js -->
     <script async type="text/javascript" src="https://apps.bazaarvoice.com/deployments/<client_name>/<site_ID>/<environment>/<locale>/bv.js"></script>
    
     <!--load transaction event and parameters-->
     <script type="text/javascript">
     window.bvCallback = function (BV) {
     BV.pixel.trackTransaction({
       "currency" : "value",
       "orderId" : "value",
       "total" : "value",
       "items" : [
         //For each item
         {
           "name" : "value",
           "price" : "value",
           "quantity" : "value",
           "productId" : "value", //(ExternalId in product catalog and productID on PDPs)
           "imageURL" :  "value", 
         },
         ... //Remove ellipsis if copying and pasting this example code so it doesn't result in a broken page
       ],
       "email" : "value", //Add PII parameters to be able to send PIE messages
       "locale" : "value",
       "nickname" : "value"
       ... //Remove ellipsis if copying and pasting this example code so it doesn't result in a broken page
     });
     };
     </script>
    
  3. Test the implementation by using the Bazaarvoice Analytics Inspector extension for Google Chrome. View Bazaarvoice content on your company’s website and select in the browser menu to display the Analytics Inspector.

    Monitor and troubleshoot the transaction event using the Transactions monitoring tool.

For non-eCommerce sites, perform these steps:

  1. Add the BV Loader code to any pages where non-transactional conversion events occur:
     <!-- load BV loader -->
     <script async type="text/javascript" src="https://apps.bazaarvoice.com/deployments/<client_name>/<site_ID>/<environment>/<locale>/bv.js"></script>
    
    Note: Non-transaction conversion data is data generated by clicks on newsletter signups, product registration, Where-to-Buy links, or PDF downloads.
  2. Add the conversion event:

     <!-- load BV loader -->
     <script async type="text/javascript" src="https://apps.bazaarvoice.com/deployments/<client_name>/<site_ID>/<environment>/<locale>/bv.js"></script>
    
     <!--load conversion event and parameters-->
     <script type="text/javascript">
     window.bvCallback = function (BV) {
     BV.pixel.trackConversion({
       "type" : "value",
       "label" : "value",
       "value" : "value"
     });
     };
     </script>
    
  3. Test transaction, conversion, and PDP events using the Bazaarvoice Analytics Inspector extension for Google Chrome. View Bazaarvoice content on your company’s website and select in the browser menu to display the Analytics Inspector.
Note: If your implementation uses an API, implement BV Pixel with the rest of the Bazaarvoice analytics events as described in the API Analytics documentation . If you have a native app, you can use the Mobile SDK.

Common questions

The following frequently asked questions can help you understand the security and performance impact of BV Pixel.

BV Pixel introduces no perceived performance impact in most conditions. While bandwidth and processing power is never free, Bazaarvoice is committed to being a responsible partner on your website. All Bazaarvoice applications, including the analytics application, are exposed and downloaded by the BV loader (a file that loads the Bazaarvoice JavaScript library that tracks activity on your website, providing a baseline for measuring specific events. It is required on all pages on your site that include events you want to track (do not add them to cart pages)) called bv.js. This file is 7-14KB depending on configuration and blocks a page for no longer that 15 milliseconds. It asynchronously downloads application files, particularly, the Bazaarvoice analytics application.

The analytics application, or tag, is 11KB. It is responsible for exposing the interface to create BV Pixel. The pixels created all reference 44B empty images (as most pixels do) and send 400-800B in their outgoing request. As a frame of reference, the combined size of downloaded content from Bazaarvoice is 2- 5% of the weight of pages we see accessing our network (1-4MB).

All payload sizes referenced are gzipped. Application assets and tags are delivered via global CDNs (Akamai and Amazon Cloudfront) and block no page actions in the event of unavailability.

Transaction data is stored in the Bazaarvoice platform, which is hosted by Amazon Web Services (AWS). The data is sent over HTTPS and stored in datastores that are protected with AWS security controls. Amazon outlines its practices in a comprehensive security whitepaper , which addresses access controls to its network.

Fields such as email, name, and IP address are stored within the Bazaarvoice platform, which is hosted in Amazon Web Services (AWS). Email addresses are encrypted, and IP addresses are truncated (anonymized). The data is sent over HTTPS and stored in datastores that are protected with AWS security controls. Amazon outlines its practices in a comprehensive security whitepaper , which addresses access controls to its network.

No, it is not stored separately.

Access is managed by access controls for Bazaarvoice internal employees who need the data for development or customer support.

It depends on the terms of your agreement with Bazaarvoice. If the terms of your agreement allow it, aggregated or anonymized BV Pixel data can be used to power solutions for all Bazaarvoice clients.

Yes, a non-eCommerce site can implement BV Pixel to capture non-transactional information, such as to locate a store, sign up for a newsletter, register a product, download a PDF, and request service information. Data captured by the conversion event is not used in post-interaction email (PIE) messages.

Yes, you can configure BV Pixel events to capture email addresses without enabling or using the Post-Interaction Email (PIE) feature, but there is no value to this option. Email addresses are only used by PIE and are stripped from the event before it is stored in the Bazaarvoice datastore because an email address is considered personally identifiable information (PII). Collecting email addresses without enabling PIE does not improve or change the Conversion Impact report.

You can access information collected by BV Pixel using the Bazaarvoice Workbench. The Workbench is password-protected, and passwords are a one-way hash using a 128-bit key.

The CIR uses data about transactions during which consumers interacted with Bazaarvoice components—such as ratings, reviews, questions, or answers—before making their purchases. The Transactions monitoring tool shows all transactions regardless of whether consumers interacted with a Bazaarvoice component before completing their purchases.