Ensighten Tag Manager - Bloomreach Experience - Open Source CMS

Ensighten Tag Manager

If your site uses Ensighten Tag Manager to implement third-party tags such as the Bloomreach's Pixel, we have created this guide to help you implement our Pixel specification.

Bloomreach will provide you a list of Tags and Variables to add to your Ensighten container to help get you started.

It will be your responsibility:

  • For each Bloomreach tag, associate the proper triggers needed for the tag specification as provided in the tag's notes section.
  • For each Bloomreach variable, configure the variable's type and definition to return data that matches our specification provided in the variable's notes section.

The Step-by-Step Guide below assumes that:

  • You already have a Ensighten account and a container published on your website.
  • You have edit permissions to the container you wish to implement against.

If you need further help, please see the main pixel specification or consult with your Bloomreach representative.

Step 1: Configure Bloomreach Tag Triggers

There are 5 different tags to fire from Ensighten for a Bloomreach Pixel implementation.

Bloomreach PageView Tag Trigger

This tag needs to fire on every page view, including any AJAX interactions that trigger an additional page view, but not a full page load. An important thing to note here is that getting an accurate page type ( ptype ) classification is a major component and is covered in further details in the Data section.

The conditions value is dependent on your site setup; however, example conditions using events have been added. These example events are described in the Events section.

Page View Tag for Ensighten

Parameter

Value

Tag Type Custom Javascript
Tag Name Bloomreach PageView Event
Labels bloomreach
Value

Page View Code Snippet for Ensighten

window.br_data = window.br_data || {};
window.br_data.acct_id = %%data.Manage.bloomreach.acct_id%%; 
window.br_data.ptype = %%data.Manage.bloomreach.ptype%%;
   
if (window.br_data.ptype === "product") {
  window.br_data.prod_id = %%data.Manage.bloomreach.prod_id%%;
  window.br_data.prod_name = %%data.Manage.bloomreach.prod_name%%;
  window.br_data.sku = %%data.Manage.bloomreach.sku%%;
}
   
if (window.br_data.ptype === "category") {
  window.br_data.cat_id = %%data.Manage.bloomreach.cat_id%%;
  window.br_data.cat = %%data.Manage.bloomreach.cat%%;
}
   
if (window.br_data.ptype === "search") {
  window.br_data.search_term = %%data.Manage.bloomreach.search_term%%;
}
   
if (%%data.Manage.bloomreach.is_conversion%% === 1) {
  window.br_data.is_conversion = %%data.Manage.bloomreach.is_conversion%%;
  window.br_data.basket_value = %%data.Manage.bloomreach.basket_value%%;
  window.br_data.order_id = %%data.Manage.bloomreach.order_id%%;
  window.br_data.basket = %%data.Manage.bloomreach.basket%%;
}
   
(function() {
  var brtrk = document.createElement('script');
  brtrk.type = 'text/javascript';
  brtrk.async = true;
  brtrk.src = 'https:' == document.location.protocol ? "https://cdns.brsrvr.com/v1/br-trk-"+%%data.Manage.bloomreach.acct_id%%+".js" : "http://cdn.brcdn.com/v1/br-trk-"+%%data.Manage.bloomreach.acct_id%%+".js";
  var s = document.getElementsByTagName('script')[0];
  s.parentNode.insertBefore(brtrk, s);
})();
Tag Space Depends on Ensighten manage setup
Conditions All Pages - Non blocking (Asynchronous)
Choose which tag must first fire Bloomreach Page View
How soon should the tag fire As soon as possible

Bloomreach ATC Tag Trigger

Any time a user adds an item to their cart, Bloomreach's Add To Cart Event should fire. Typically this includes the product display page and product listing pages such as category or search pages. If an Add To Cart button is located anywhere else on your site (e.g. Product Collection or Sku Set pages) , please also fire this tag there as well.

Add To Cart Tag for Ensighten

Parameter

Value

Tag Type Custom Javascript
Tag Name Bloomreach Add To Cart Event
Labels bloomreach
Value
window.br_data = window.br_data || {};
window.br_data.acct_id = %%data.Manage.bloomreach.acct_id%%; 
window.br_data.ptype = %%data.Manage.bloomreach.ptype%%;

if (window.br_data.ptype === "product") {
  window.br_data.prod_id = %%data.Manage.bloomreach.prod_id%%;
  window.br_data.prod_name = %%data.Manage.bloomreach.prod_name%%;
  window.br_data.sku = %%data.Manage.bloomreach.sku%%;
}

if (window.br_data.ptype === "category") {
  window.br_data.cat_id = %%data.Manage.bloomreach.cat_id%%;
  window.br_data.cat = %%data.Manage.bloomreach.cat%%;
}

if (window.br_data.ptype === "search") {
  window.br_data.search_term = %%data.Manage.bloomreach.search_term%%;
}

if (%%data.Manage.bloomreach.is_conversion%% === 1) {
  window.br_data.is_conversion = %%data.Manage.bloomreach.is_conversion%%;
  window.br_data.basket_value = %%data.Manage.bloomreach.basket_value%%;
  window.br_data.order_id = %%data.Manage.bloomreach.order_id%%;
  window.br_data.basket = %%data.Manage.bloomreach.basket%%;
}  

(function() {
  var brtrk = document.createElement('script');
  brtrk.type = 'text/javascript';
  brtrk.async = true;
  brtrk.src = 'https:' == document.location.protocol ? "https://cdns.brsrvr.com/v1/br-trk-"+%%data.Manage.bloomreach.acct_id%%+".js" : "http://cdn.brcdn.com/v1/br-trk-"+%%data.Manage.bloomreach.acct_id%%+".js";

  var s = document.getElementsByTagName('script')[0];
  s.parentNode.insertBefore(brtrk, s);
})();
Tag Space Depends on Ensighten manage setup
Conditions Events Add To Cart
Choose which tag must first fire Bloomreach Page View

Bloomreach Suggest Tag Trigger

If you have an auto-suggest feature in your search form, when a user clicks on a search suggestion, Bloomreach expects a Search Suggest Event to fire. 
If you do not have autosuggest, skip this section. 
Suggest Tag for Ensighten

Parameter

Value

Tag Type

Custom Javascript

Tag Name

Bloomreach Suggest Event

Labels

bloomreach
Value

Suggest Code Snippet

BrTrk.getTracker().logEvent('suggest', 'click', %%data.Manage.bloomreach.suggest%%, {}, true);

Note: The last parameter (deferred) is set to "true", which the next pixel that is fired (typically the search page view pixel) will automatically contain the parameters fired in the Search Suggest event pixel prefixed with "df_".

Tag Space Depends on Ensighten manage setup
Conditions Events - Suggest
Choose which tag must first fire Bloomreach Page View
How soon should the tag fire As soon as possible

Bloomreach Search Tag Trigger

If a user types`woven scarf` and then clicks the search button or hits enter to submit the search, Bloomreach expects a search event pixel to fire that contains information about the search query. 
Search Tag for Ensighten

Parameter

Value

Tag Type Custom Javascript
Tag Name Bloomreach Search Event
Labels bloomreach
Value

Search Code Snippet

BrTrk.getTracker().logEvent('suggest', 'submit', %%data.Manage.bloomreach.search%%, {}, true);

Note: The last parameter ( deferred) is set to "true", which the next pixel that is fired (typically the search page view pixel) will automatically contain the parameters fired in the Search Submit event pixel prefixed with "df_".

Tag Space Depends on Ensighten manage setup
Conditions Events - Search
Choose which tag must first fire Bloomreach Page View

Bloomreach Quick View Tag Trigger

The Quick View event should be fired directly after someone opens a product quick view, commonly found category display pages. However, if you have quick view on other page types as well, this event should be fired.

Quickview Tag for Ensighten

Parameter

Value

Tag Type Custom Javascript
Tag Name Bloomreach Quick View Event
Labels bloomreach
Value

Quick View Code Snippet

BrTrk.getTracker().logEvent('product', 'quickview', %%data.Manage.bloomreach.quickview%%);
Tag Space Depends on Ensighten manage setup
Conditions Events - Quickview
Choose which tag must first fire Bloomreach Page View

Step 2: Configure Bloomreach Events

Creating these events in Ensighten will make firing the appropriate BloomReach pixel easier to work with. Recommendation is to use Named Events and add the appropriate call to Bootstrapper.ensEvent.trigger in your application javascript

Add To Cart

ATC Event for Ensighten

Event

Value

Event Name Add To Cart
Condition All Pages - Non-blocking (Asynchronous)
Named Event

ATC Event Code Snippet

Bootstrapper.ensEvent.trigger("Add To Cart");

Suggest

Suggest Event for Ensighten

Event

Value

Event Name Suggest
Condition All Pages - Non-blocking (Asynchronous)
Named Event

Suggest Event Code Snippet

Bootstrapper.ensEvent.trigger("Suggest");

Search

Search Event for Ensighten

Event

Value

Event Name Search
Condition All Pages - Non-blocking (Asynchronous)
Named Event

Search Event Code Snippet

Bootstrapper.ensEvent.trigger("Search");

Quick View

Quick View Event for Ensighten

Event

Value

Event Name Quick View
Condition All Pages - Non-blocking (Asynchronous)
Named Event

Quick View Event Code Snippet

Bootstrapper.ensEvent.trigger("Quick View")

Step 3: Configure Bloomreach Variables

It is possible to add these data elements inline in the associated Tag’s javascript; however, it’s recommended to separate them out into their own data elements for easier management and tracking.

Custom example values have been provided; however, if you need assistance please reach out.

Bloomreach Data Variables for Ensighten

Account ID

Variable

Format

Examples

Dependencies

Description

acct_id Variable Type: String Variable Example: "1235" Consistent with acct_id passed in API call The BloomReach-provided Account identifier

Parameter

Value

Data Definition Name acct_id
What kind of data element are you creating Custom
Select collection bloomreach
Get the Data From Custom
Custom Example Value
function() {
  return "1235";
}
Advanced Settings, Persistence Instance

Advanced Settings, Trigger

Immediate
Spaces depends on ensighten manage setup
Conditions All Pages - Non-blocking (Asynchronous)

 Ptype

Variable

Format

Examples

Dependencies

Description

ptype Variable Type: String Variable Example: "homepage" Getting an accurate page type ( ptype ) classification is a major component for all of Bloomreach's products. Maps your site's page type classifications to the values BloomReach expects for our page type classifications. 

Required on all page views, including desktop, mobile, and tablet versions. 

BloomReach has 7 Page Type classifications: 
homepage - homepage or landing pages 
category - category listing pages and category product listing pages 
search - search listing pages 
product - product, product bundle, product collection or sku set pages 
thematic - BloomReach thematic pages 
content - content pages 
other - any page type that is not one of the above types == 

Parameter

Value

Data Definition Name ptype
What kind of data element are you creating Custom
Select collection bloomreach
Get the Data From Custom
Custom Example Value
function() {
  var pageType = "";

  if (dataLayer && dataLayer.pageType) {
    pageType = dataLayer.pageType
  }

  if (pageType === "home") {
    return "homepage";
  } 

  if (pageType === "pdp") {
    return "product";
  } 

  if (pageType === "Category Page" || pageType === "High Level Category") {
    return "category";
  }

  if (pageType === "search") {
    return "search";
  }

  if (pageType === "content") {
    return "content";
  }  

  if (pageType === "thematic") {
    return "thematic";
  }

  if (pageType === "mlt") {
    return "mlt";
  }

  if (pageType === "personalized") {
    return "personalized";
  }
}
Advanced Settings, Persistence Instance

Advanced Settings, Trigger

Immediate
Spaces depends on Ensighten manage setup
Conditions All Pages - Non-blocking (Asynchronous)

 Product ID

Variable

Format

Dependencies

Description

prod_id Variable Type: String 
This field value is case-sensitive.
Product ID or Product Collection ID needs to match the product ID field in the feed This is the unique ID, which describes a product, product bundle, product collection or sku set. If a product is available in multiple SKUs (e.g. color/size combinations), this field refers to the id shared by all the SKUs for a product.

Parameter

Value

Data Definition Name prod_id
What kind of data element are you creating Custom
Select collection bloomreach
Get the Data From Custom
Custom Example Value
function() {
  if (dataLayer && dataLayer.product && dataLayer.product.group_id) {
    return dataLayer.product.group_id;
  }
}
Advanced Settings, Persistence Instance

Advanced Settings, Trigger

Immediate
Spaces depends on Ensighten manage setup
Conditions All Pages - Non-blocking (Asynchronous)

Scenario

Examples

Product Detail Page (PDP) If your product ID is prod1234, br_data.prod_id="prod1234"
Product Collection page with a unique Product ID If your Product Collection page has their own unique ID and is sold exactly like a standalone product, enter the collection ID. Make sure that this collection ID is sent in the feed as a product ID.

If your collection ID is collection5678, br_data.prod_id="collection5678"
Product Collection page with a unique ID, but cannot be purchased as a whole If your Product Collection has their own unique ID, but cannot be purchased as a whole; only the collections' individual parts can be purchased and each of these individual parts have their own ID, enter the collection ID. 
Make sure that this collection ID is sent in the feed as a product ID

 Product Name

Variable

Format

Examples

Dependencies

Description

prod_name Variable Type: String Variable Example: "Blue Lace Dress" N/A The name of the product being viewed.

For Product PageViews (single product, product collection, product bundle, or sku set pages) only.

Parameter

Value

Data Definition Name prod_name
What kind of data element are you creating Custom
Select collection bloomreach
Get the Data From Custom
Custom Example Value
function() {
  if (dataLayer && dataLayer.product && dataLayer.product.name) {
    return dataLayer.product.name;
  }
}
Advanced Settings, Persistence Instance

Advanced Settings, Trigger

Immediate
Spaces depends on Ensighten manage setup
Conditions All Pages - Non-blocking (Asynchronous)

 SKU

Variable

Format

Examples

Dependencies

Description

sku Variable Type: String Variable Example: "sku7778" Needs to match the sku ID field in the feed. Unique SKU id that representing the selected variant of this product 
(e.g. size M, color blue of a t-shirt). 

If your site does not have SKUs, leave this blank.

Parameter

Value

Data Definition Name sku
What kind of data element are you creating Custom
Select collection bloomreach
Get the Data From Custom
Custom Example Value
function() {
  if (dataLayer && dataLayer.product && dataLayer.product.sku) {
    return dataLayer.product.sku;
  }
}
Advanced Settings, Persistence Instance

Advanced Settings, Trigger

Immediate
Spaces depends on Ensighten manage setup
Conditions All Pages - Non-blocking (Asynchronous)

 Category ID

Variable

Format

Dependencies

Description

cat_id Variable Type: String 
This field value is case-sensitive.

The category ID needs to match the "crumb_id" in the feed.

For Search implementations, the unique category ID needs to be passed in the API call.

Unique category ID as referred to in the database/catalog.
Bloomreach requires the cat_id field to be unique across your site.

Parameter

Value

Data Definition Name cat_id
What kind of data element are you creating Custom
Select collection bloomreach
Get the Data From Custom
Custom Example Value
function() {
  if (dataLayer && dataLayer.category && dataLayer.category.id) {
    return dataLayer.category.id;
  }
}
Advanced Settings, Persistence Instance

Advanced Settings, Trigger

Immediate
Spaces depends on Ensighten manage setup
Conditions All Pages - Non-blocking (Asynchronous)

Scenario

Examples

Unique Category ID (preferred scenario) Your site has a unique category ID for every category.

Variable Examples: 
br_data.cat_id="106121"
br_data.cat_id="cat749"
No unique category ID, but unique crumb path

Your site page does not have a unique category ID for every category, but it has a unique crumb path for every category.
In this case, we ask you to concatenate the unique crumb path without any delimiters or special characters and send the value 
in the cat_id field.


Variable Example: 
Your unique crumb path is " jewelry|by-collection|inspirational-jewelry"
br_data.cat_id="jewelrybycollectioninspirationaljewelry "

No unique category ID and no unique crumb path Please talk to your Bloomreach representative before or during the Kickoff call to discuss options for your implementation.

 Category Name/ Bread crumb

Variable

Format

Dependencies

Description

cat Variable Type: String
 
Match the "crumbs" field in the product feed The breadcrumb of the page.

Parameter

Value

Data Definition Name cat
What kind of data element are you creating Custom
Select collection bloomreach
Get the Data From Custom
Custom Example Value
function() {
  if (dataLayer && dataLayer.category && dataLayer.category.name) {
    return dataLayer.category.name.split(" > ").join("|");
  }
}
Advanced Settings, Persistence Instance

Advanced Settings, Trigger

Immediate
Spaces depends on Ensighten manage setup
Conditions All Pages - Non-blocking (Asynchronous)

Scenario

Examples

Unique Category ID and unique breadcrumb ID (preferred scenario)

Your site has a unique category ID for every category and a unique bread crumb in form of an ID for every category.

Variable Format: 
cat=" <unique bread crumb ID>|<unique catID> " 

Variable Example: 
cat="106120|106121"

Unique breadcrumb path Your site has a u nique bread crumb path for every category.

Variable Format: 
cat="<top level crumb>|<first level crumb>|<second level crumb>"
Crumbs need to be delimited by pipe (|) 

Variable Example: 
If your category crumb is "Home/Clothing/Outerwear" or "Home>Clothing>Outerwear" 
cat="Home|Clothing|Outerwear"
No unique category ID and Nounique crumb path Please talk to your Bloomreach representative before or during the Kickoff call to discuss options for your implementation.

 Search Term

Variable

Format

Examples

Dependencies

Description

search_term Variable Type: String Example Values: 
search_term="blue dress"
  The value of the search query describing the page.

For search page views only.

Parameter

Value

Data Definition Name search_term
What kind of data element are you creating Custom
Select collection bloomreach
Get the Data From Custom
Custom Example Value
function() {
  if (dataLayer && dataLayer.search) {
    return dataLayer.search;
  }
}
Advanced Settings, Persistence Instance

Advanced Settings, Trigger

Immediate
Spaces depends on Ensighten manage setup
Conditions All Pages - Non-blocking (Asynchronous)

 Is Conversion

Variable

Format

Examples

Dependencies

Description

is_conversion Variable Type: Integer Variable Example:
br_data.is_conversion=1
N/A Set to 1 on the Conversion or Thank you page 
(page after the customer completes the purchase). 

For Conversion Pages only.

Parameter

Value

Data Definition Name is_conversion
What kind of data element are you creating Custom
Select collection bloomreach
Get the Data From Custom
Custom Example Value
function() {
  if (dataLayer && dataLayer.checkout && dataLayer.checkout === true) {
    return 1;
  }
  return 0;
}
Advanced Settings, Persistence Instance

Advanced Settings, Trigger

Immediate
Spaces depends on Ensighten manage setup
Conditions All Pages - Non-blocking (Asynchronous)

 Order ID

Variable

Format

Examples

Dependencies

Description

order_id Variable Type: String Variable Example:
order_id="12123455"
This id has to match the orderID used in your analytics systems The order id associated with the order placed. This id should match the orderID used in your analytics systems.

For Conversion pages only

Parameter

Value

Data Definition Name order_id
What kind of data element are you creating Custom
Select collection bloomreach
Get the Data From Custom
Custom Example Value
function() {
  if (dataLayer && dataLayer.transaction && dataLayer.transaction.id) {
      return dataLayer.transaction.id;
  }
}
Advanced Settings, Persistence Instance

Advanced Settings, Trigger

Immediate
Spaces depends on Ensighten manage setup
Conditions All Pages - Non-blocking (Asynchronous)

Additional Information

The Order ID is used to reconcile BloomReach's analytics data with your analytics systems.

 Basket Value

Variable

Format

Examples

Dependencies

Description

basket_value Variable Type: String 

Variable Format:
The total price of the checkout basket in the account currency without any symbols.

If the checkout basket was $100 with $5 tax and $10 shipping, the value for this parameter should be 
basket_value="115.00".

  The total price of the checkout basket including tax, discounts, shipping and/or discounts in the account currency. For conversion pages only.

Parameter

Value

Data Definition Name basket_value
What kind of data element are you creating Custom
Select collection bloomreach
Get the Data From Custom
Custom Example Value
function() {
  if (dataLayer && dataLayer.transaction && dataLayer.transaction.total) {
    return dataLayer.transaction.total;
  }
}
Advanced Settings, Persistence Instance

Advanced Settings, Trigger

Immediate
Spaces depends on Ensighten manage setup
Conditions All Pages - Non-blocking (Asynchronous)

Scenario

Examples

Checkout with tax & shipping

If the checkout basket was $100 with $5 tax and $10 shipping, the value for this parameter should be 
basket_value= "115.00"

Checkout with discount, tax & shipping If the checkout basket was $100 with $0 tax, $10 discount and $10 shipping, the value for this parameter should be 
basket_value= "100.00"

 Basket

Variable

Format

Description

br_data.basket

Variable Type: Object

This object contains a property called `items` which is an array of the product objects purchased. For each product in the `items` array, the following properties should be included as specified:

{ "items":
   [
    {
      "prod_id" : "pid123456",
      "sku": "sku789",
      "name": "Cashmere Sweater",
      "quantity": "1",
      "price": "65.95"
    },
    {
      "prod_id" : "pid56789",
      "sku": "",
      "name": "Blue Skinny Jeans",
      "quantity": "2",
      "price": "79.99"
    }
   ]
};
Detailed conversion parameters for each product that was purchased. 

For Conversion pages only.

Basket Object Items

Variable Type

Dependency

Description

prod_id String Needs to match Product ID sent in feed

This is the unique ID, which describes a product, product bundle, product collection or sku set.

sku String Needs to match SKU ID sent in feed.

Only applies if your site has SKUs.
If your site has Skus, list the sku(s) in the basket.
name String ?? The name of the product in the basket.
quantity Integer N/A The quantity of the product in the basket.
price String ?? The unit price per product, not the total price. 
If item is on sale, this is the unit sale price.

Parameter

Value

Data Definition Name basket
What kind of data element are you creating Custom
Select collection bloomreach
Get the Data From Custom
Custom Example Value
function() {
  var items = [];
  if (dataLayer && dataLayer.transaction && dataLayer.transaction.products && dataLayer.transaction.products.length > 0) {
    for (var i = 0; i < dataLayer.transaction.products.length; i++) {
        items.push({
            "prod_id": dataLayer.transaction.products[i].id,
            "name": dataLayer.transaction.products[i].name,
            "sku": dataLayer.transaction.products[i].sku,
            "quantity": dataLayer.transaction.products[i].quantity,
            "price": dataLayer.transaction.products[i].price
        });
    }
  }
  return {"items": items};
}
Advanced Settings, Persistence Instance

Advanced Settings, Trigger

Immediate
Spaces depends on Ensighten manage setup
Conditions All Pages - Non-blocking (Asynchronous)

Scenario

Example

2 Products, 
→ the first product has a sku, 
→ the second product does not have a Sku

2 products, first product has a sku, second product does not have a sku.

First Product: Individual Product 
Product ID: pid123456
Sku ID: sku789

Second Product: Individual Product
Product ID: pid56789

See Sample Code Snippet

{ "items":
   [
    {
      "prod_id" : "pid123456",
      "sku": "sku789",
      "name": "Cashmere Sweater",
      "quantity": "1",
      "price": "65.95"
    },
    {
      "prod_id" : "pid56789",
      "sku": "",
      "name": "Blue Skinny Jeans",
      "quantity": "2",
      "price": "79.99"
    }
   ]
};
2 Products, 
→ the first product (pullover) was purchased in white and blue (2 different Skus) 
→ the second product does not have a Sku

The first product was purchased in two Skus (e.g. a pullover purchased in white and blue), the second product does not have a sku.

First Product: Individual product purchased in 2 Skus 
Product ID (e.g. pullover): pid123456
Sku ID 1 (white): sku789
Sku ID 2 (blue): sku790

Second Product: Individual product
Product ID: pid56789

See Sample Code Snippet

{ "items":
   [
    {
      "prod_id" : "pid123456",
      "sku": "sku789",
      "name": "Cashmere Sweater White",
      "quantity": "2",
      "price": "120.00"
    },
    {
      "prod_id" : "pid123456",
      "sku": "sku790",
      "name": "Cashmere Sweater Blue",
      "quantity": "1",
      "price": "60.00"
    },
    {
      "prod_id" : "pid56789",
      "sku": "",
      "name": "Blue Skinny Jeans",
      "quantity": "2",
      "price": "79.99"
    }
   ]
};
2 Products, 
→ the first product is a Product Bundle/Product Collection/Sku Set with its own unique ID and is sold exactly like standalone products, 
→ the second product is an individual product.

Your Collection Pages have their own unique ID and are sold exactly like standalone products, then enter the collection ID in the prod_id field. Make sure that this collection ID is sent in the feed in the product ID field.

First Product: Product Bundle 
Collection ID: bundle223344

Second Product: Individual Product
Product ID: pid56789

See Sample Code Snippet

{ "items":
   [
    {
      "prod_id" : "bundle223344",
      "sku": "",
      "name": "Linen Bed Sheet Set",
      "quantity": "1",
      "price": "265.95"
    },
    {
      "prod_id" : "pid56789",
      "sku": "",
      "name": "Blue Skinny Jeans",
      "quantity": "2",
      "price": "79.99"
    }
   ]
};
2 Products, 
→ the first product is a Product Collection/Sku Set with 2 individual products. The Collection has its own unique ID but it cannot be purchased as a whole , 
→ the second product is an individual product.

Your Product Collections have their own unique ID, but cannot be purchased as a whole; only the collections' individual parts/products can be purchased and each of these individual parts have their own ID. In this case, list all individual products in the basket and the prod_id is the the ID of each product. 

First Product: Product Collection 
Collection ID: bundle223344 with 2 individuals products.
Product ID: pid1111
Product ID: pid2222

Second Product: Individual Product
Product ID: pid56789


Make sure that each product ID is sent in the feed in the product ID field.

See Sample Code Snippet

{ "items":
   [
    {
      "prod_id" : "pid1111",
      "sku": "",
      "name": "Linen Pillow",
      "quantity": "1",
      "price": "35.95"
    },
    {
      "prod_id" : "pid2222",
      "sku": "",
      "name": "Linen Comforter",
      "quantity": "1",
      "price": "230.00"
    }, 
    {
      "prod_id" : "pid56789",
      "sku": "",
      "name": "Blue Skinny Jeans",
      "quantity": "2",
      "price": "79.99"
    }
   ]
};
2 Products, 
→ the first product is a Product Bundle/Product Collection/Sku Set with 2 individual products. The products are part of a collection, but can only be purchased from their own individual page. 
→ the second product is an individual product.
Products that are a part of a Collection but can only be purchased from their own individual product page.
 

First Product: Product Collection 
Collection ID: bundle223344 with 2 individuals products.
Product ID: pid1111
Product ID: pid2222

Second Product: Individual Product
Product ID: pid56789

See Sample Code Snippet

{ "items":
   [
    {
      "prod_id" : "pid1111",
      "sku": "",
      "name": "Linen Pillow",
      "quantity": "1",
      "price": "35.95"
    },
    {
      "prod_id" : "pid2222",
      "sku": "",
      "name": "Linen Comforter",
      "quantity": "1",
      "price": "230.00"
    }, 
    {
      "prod_id" : "pid56789",
      "sku": "",
      "name": "Blue Skinny Jeans",
      "quantity": "2",
      "price": "79.99"
    }
   ]
};

Additional Information

The key-value data you send us will be transformed into the format below:

E.g. !ipid123456'ssku789'nCashmere Sweater'q1.0'p69.95!ipid56789'nBlue Skinny Jeans'q1.0'p79.99

Each product in the cart will be separated by !. Each product's details will be separated by '.

  1. i<prod_id> - This is the product id and not another id such as sku id or collection id. This should match the unique product id sent in the feed.

  2. s<sku> - Sku id, only applies if you have skus.

  3. n<product_name>

  4. q<quantity>

  5. p<price> - This should be the unit price per product and not total price. If the item is on sale, this is the unit sale price. 

 Search

Parameter

Value

Data Definition Name search
What kind of data element are you creating Custom
Select collection bloomreach
Get the Data From Custom
Custom Example Value
function() {
    if (dataLayer && dataLayer.search) {
        return {"q": dataLayer.search};
    }
}
Advanced Settings, Persistence Instance

Advanced Settings, Trigger

Immediate
Spaces depends on Ensighten manage setup
Conditions All Pages - Non-blocking (Asynchronous)

 Suggest

Parameter

Value

Data Definition Name suggest
What kind of data element are you creating Custom
Select collection bloomreach
Get the Data From Custom
Custom Example Value
function() {
    if (dataLayer && dataLayer.suggest) {
        return {"q": dataLayer.suggest.suggestedQuery, "aq": dataLayer.suggest.typedQuery};
    }
}
Advanced Settings, Persistence Instance

Advanced Settings, Trigger

Immediate
Spaces depends on ensighten manage setup
Conditions All Pages - Non-blocking (Asynchronous)

 quickview

Parameter

Value

Data Definition Name quickview
What kind of data element are you creating Custom
Select collection bloomreach
Get the Data From Custom
Custom Example Value
function() {
  if  (dataLayer && dataLayer.quickView) {
    return {"prod_id": dataLayer.quickView.id, "sku": dataLayer.quickView.sku, "prod_name": dataLayer.quickView.name};
  }
}
Advanced Settings, Persistence Instance

Advanced Settings, Trigger

Immediate
Spaces depends on Ensighten manage setup
Conditions All Pages - Non-blocking (Asynchronous)

 Domain Key (Only required for multiple language versions)

Variable

Format

Examples

Dependencies

Description

domain_key Variable Type: String
This field value is case-sensitive.
    The BloomReach-provided ID of the domain receiving the request. This parameter identifies the specific site language version when one account ID hosts multiple site versions with different languages. BloomReach uses this value to ensure that only query and analytics data that pertain to that language are used for respective features.

Additional Information

This parameter is optional and only required if you integrate on a site with multiple language versions.
Your BloomReach Technical Account Manager will provide the domain key information during the technical Kickoff call if you have a site with multiple language versions.

 View ID (Only required for multiple site versions)

Variable

Format

Examples

Dependencies

Description

view_id Variable Type: String
This field value is case-sensitive.
Variable Example: "10200" Consistent in Pixel, API & Feed. Identifies the specific site catalog view to show when one BloomReach account ID hosts multiple site versions with unique product catalog characteristics, such as product price, availability, or titles. 

BloomReach uses View ID value to display the right product information for a user based on their site view. This must be consistent in the pixel, API and product catalog sent to BloomReach.

Additional Information

This parameter is optional and only required if you integrate on a site with multiple site versions with unique product catalog characteristics.
Your BloomReach Technical Account Manager will provide the domain key information during the technical Kickoff call if you have a site with multiple language versions.

User ID (Only required for tracking users with a universal customer ID)

Variable

Format

Examples

Dependencies

Description

user_id Variable Type: String Variable Example: "947345478564"   If you track users via a universal customer ID, populate this parameter with that ID. 
This should be an anonymized string (e.g. 947345478564). It should not contain the user's email or other personally identifiable information.

Additional Information

This parameter is optional and only required if you track users via a universal customer ID .
This will allow Bloomreach to recognize users in a way that is aligned with your system for various personalization features.  
If you do not track users this way, leave this blank. 

Tms (Only required if you are transitioning from one tag manager to another)

Variable

Format

Examples

Dependencies

Description

tms Variable Type: String Variable Example: tlm   The name of the Tag Management system, that should be filtered out. 

In case of migration from one tag management system to another, there may be a transition time frame, when the pixel is fired by two systems simultaneously. Setting the "tms" param will allow  BloomReach analytics system  to filter out duplicate pixels. 

BloomReach has the following Tag Mgmt classifications:
tms="tlm" for Tealium 
 

Additional Information

This parameter is optional and only required during the transition time from one tag management system to another. 
Leave this field empty, if this scenario does not apply.
Did you find this page helpful?
How could this documentation serve you better?
On this page
    Did you find this page helpful?
    How could this documentation serve you better?