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 Page View 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.
The Page View Tag also needs to fire on any virtual page views, such as AJAX interactions that load content outside of the normal page load cycle.
Page View Tag for Ensighten
Parameter | Value |
---|---|
Tag Type | Custom Javascript |
Tag Name | Bloomreach PageView Event |
Labels | bloomreach |
Value | See Below Page View Code Snippet for Ensighten |
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 |
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);
})();
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 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 | See Snippet Below |
Tag Space | Depends on Ensighten manage setup |
Conditions | Events Add To Cart |
Choose which tag must first fire | Bloomreach Page View |
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);
})();
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 | See Suggest Code Snippet Below. 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 |
BrTrk.getTracker().logEvent('suggest', 'click', %%data.Manage.bloomreach.suggest%%, {}, true);
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 | See Search Code Snippet Below. 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 |
BrTrk.getTracker().logEvent('suggest', 'submit', %%data.Manage.bloomreach.search%%, {}, true);
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 | See Quick View Code Snippet Below |
Tag Space | Depends on Ensighten manage setup |
Conditions | Events - Quickview |
Choose which tag must first fire | Bloomreach Page View |
BrTrk.getTracker().logEvent('product', 'quickview', %%data.Manage.bloomreach.quickview%%);
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 | See Below |
Advanced Settings, Persistence | Instance |
Advanced Settings, Trigger | Immediate |
Spaces | depends on ensighten manage setup |
Conditions | All Pages - Non-blocking (Asynchronous) |
function() {
return "1235";
}
 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 or product collection 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 | See Below for Snippet |
Advanced Settings, Persistence | Instance |
Advanced Settings, Trigger | Immediate |
Spaces | depends on Ensighten manage setup |
Conditions | All Pages - Non-blocking (Asynchronous) |
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";
}
}
 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 or product collection. 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 | See Below |
Advanced Settings, Persistence | Instance |
Advanced Settings, Trigger | Immediate |
Spaces | depends on Ensighten manage setup |
Conditions | All Pages - Non-blocking (Asynchronous) |
function() {
if (dataLayer && dataLayer.product && dataLayer.product.group_id) {
return dataLayer.product.group_id;
}
}
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 or product collection 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 | See Below |
Advanced Settings, Persistence | Instance |
Advanced Settings, Trigger | Immediate |
Spaces | depends on Ensighten manage setup |
Conditions | All Pages - Non-blocking (Asynchronous) |
function() {
if (dataLayer && dataLayer.product && dataLayer.product.name) {
return dataLayer.product.name;
}
}
 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 | See Below |
Advanced Settings, Persistence | Instance |
Advanced Settings, Trigger | Immediate |
Spaces | depends on Ensighten manage setup |
Conditions | All Pages - Non-blocking (Asynchronous) |
function() {
if (dataLayer && dataLayer.product && dataLayer.product.sku) {
return dataLayer.product.sku;
}
}
 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 | See Below |
Advanced Settings, Persistence | Instance |
Advanced Settings, Trigger | Immediate |
Spaces | depends on Ensighten manage setup |
Conditions | All Pages - Non-blocking (Asynchronous) |
function() {
if (dataLayer && dataLayer.category && dataLayer.category.id) {
return dataLayer.category.id;
}
}
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 | See Below |
Advanced Settings, Persistence | Instance |
Advanced Settings, Trigger | Immediate |
Spaces | depends on Ensighten manage setup |
Conditions | All Pages - Non-blocking (Asynchronous) |
function() {
if (dataLayer && dataLayer.category && dataLayer.category.name) {
return dataLayer.category.name.split(" > ").join("|");
}
}
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=" | " Variable Example: cat="106120 |
Unique breadcrumb path | Your site has a unique bread crumb path for every category. Variable Format: cat=" |
cat="Home | Clothing |
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 | See Below |
Advanced Settings, Persistence | Instance |
Advanced Settings, Trigger | Immediate |
Spaces | depends on Ensighten manage setup |
Conditions | All Pages - Non-blocking (Asynchronous) |
function() {
if (dataLayer && dataLayer.search) {
return dataLayer.search;
}
}
 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 | See Below |
Advanced Settings, Persistence | Instance |
Advanced Settings, Trigger | Immediate |
Spaces | depends on Ensighten manage setup |
Conditions | All Pages - Non-blocking (Asynchronous) |
function() {
if (dataLayer && dataLayer.checkout && dataLayer.checkout === true) {
return 1;
}
return 0;
}
 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 | See Below |
Advanced Settings, Persistence | Instance |
Advanced Settings, Trigger | Immediate |
Spaces | depends on Ensighten manage setup |
Conditions | All Pages - Non-blocking (Asynchronous) |
function() {
if (dataLayer && dataLayer.transaction && dataLayer.transaction.id) {
return dataLayer.transaction.id;
}
}
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 | See Below |
Advanced Settings, Persistence | Instance |
Advanced Settings, Trigger | Immediate |
Spaces | depends on Ensighten manage setup |
Conditions | All Pages - Non-blocking (Asynchronous) |
function() {
if (dataLayer && dataLayer.transaction && dataLayer.transaction.total) {
return dataLayer.transaction.total;
}
}
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 below. |
{ "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"
}
]
};
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 or product collection. |
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 | See Below |
Advanced Settings, Persistence | Instance |
Advanced Settings, Trigger | Immediate |
Spaces | depends on Ensighten manage setup |
Conditions | All Pages - Non-blocking (Asynchronous) |
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};
}
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"
}
]
};
Scenario | Example |
---|---|
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"
}
]
};
Scenario | Example |
---|---|
2 Products, → the first product is a Product Collection 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 Collection Collection ID: collection223344 Second Product: Individual Product Product ID: pid56789 See Sample Code Snippet |
{ "items":
[
{
"prod_id" : "collection223344",
"sku": "",
"name": "Linen Bed Sheet Set",
"quantity": "1",
"price": "265.95"
},
{
"prod_id" : "pid56789",
"sku": "",
"name": "Blue Skinny Jeans",
"quantity": "2",
"price": "79.99"
}
]
};
Scenario | Example |
---|---|
2 Products, → the first product is a Product Collection 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: collection223344 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"
}
]
};
Scenario | Example |
---|---|
2 Products, → the first product is a Product Collection 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: collection223344 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 '.
- 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.
- s - Sku id, only applies if you have skus.
- n<product_name>
- q
- p - 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 | See Below |
Advanced Settings, Persistence | Instance |
Advanced Settings, Trigger | Immediate |
Spaces | depends on Ensighten manage setup |
Conditions | All Pages - Non-blocking (Asynchronous) |
function() {
if (dataLayer && dataLayer.search) {
return {"q": dataLayer.search};
}
}
 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 | See Below |
Advanced Settings, Persistence | Instance |
Advanced Settings, Trigger | Immediate |
Spaces | depends on ensighten manage setup |
Conditions | All Pages - Non-blocking (Asynchronous) |
function() {
if (dataLayer && dataLayer.suggest) {
return {"q": dataLayer.suggest.suggestedQuery, "aq": dataLayer.suggest.typedQuery};
}
}
 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 | See Below |
Advanced Settings, Persistence | Instance |
Advanced Settings, Trigger | Immediate |
Spaces | depends on Ensighten manage setup |
Conditions | All Pages - Non-blocking (Asynchronous) |
function() {
if (dataLayer && dataLayer.quickView) {
return {"prod_id": dataLayer.quickView.id, "sku": dataLayer.quickView.sku, "prod_name": dataLayer.quickView.name};
}
}
 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. |
Updated about 1 year ago