Additional product catalog features
Control the active set of products
Bazaarvoice maintains a status for every brand, category, and product ever provided in a feed file. An active brand, category, or product is one that is available for purchase and review. An inactive brand, category, or product is one that is considered out-of-date, removed from production, and no longer available for purchase.
Inactive brands, categories, and products are excluded from the following:
- Syndication, if you are manually matching products
- Ratings-only feeds
- SEO
- Connections portal
Inactive brands, categories, and products continue to be included in the following:
- Display
- Syndication, if products are auto-matched
- Submission
- Standard client feed
Finally, based on status, you can filter Workbench content and reports and retrieve content using the API .
Control the active set of products using feeds
When you upload product feed files, Bazaarvoice processes the feeds differently based on whether they are full or incremental:
Full feeds | Incremental feeds |
---|---|
|
|
Define a product category hierarchy
If you create an XML feed file, you can define product category hierarchy. You can associate each product with a specific category within the hierarchy using the <CategoryExternalId>
element, and you can define a category's parent, thereby defining the category hierarchy, using the <ParentExternalId>
element.
Be aware of the following if you are providing multiple feeds for your catalog data:
- A product that appears in multiple feeds must be in the same category in all feeds. Therefore, if product A is in category X in Feed A, then product A cannot be in category Y in Feed B.
- A category that is listed in multiple feeds must be in the same parent category in all feeds. Therefore, if category A is in parent category X in Feed A, then category A cannot be in parent category Y in Feed B.
The following XML file excerpt defines a <CategoryExternalId>
for a category that is then reference by a <ParentExternalId>
element.
<Categories> <Category> <ExternalId>food-1123</ExternalId> <Name>Food</Name> <= no parent category; this is a top-level hierarchy element ... </Category> <Category> <ExternalId>fruit-1789</ExternalId> <Name>Fruit</Name> <ParentExternalId>food-1123</ParentExternalId> <= "Fruit" category is a child of category “Food” ... </Category> </Categories> <Products> <Product> <ExternalId>123</ExternalId> <Name>Apple</Name> <CategoryExternalId>fruit-1789</CategoryExternalId> <= belongs to category “Fruit” ... </Product> ... </Products>
Use multiple catalog sources
Bazaarvoice can consume product catalog data from multiple sources. This alleviates the need for clients who store their data across separate systems to merge all product catalog data into a single source, such as a single feed file, before providing that single source to Bazaarvoice.
Example scenarios
Consider the following example scenarios:
- Primary XML feed plus supplemental feed for missing data elements
All product catalog data is stored in one system, such as a web storefront system, but the data elements required for syndication (such as UPC and EAN codes, ISBN, Brand, ManufacturerPartNumber) are stored in a separate order management system or product information management (PIM) system. You can use an XML feed to provide the catalog data to Bazaarvoice and use a simple, supplemental XML or text file to provide data missing from the XML feed to Bazaarvoice.
This approach can be used to provide any data elements missing from the main XML feed. Bazaarvoice recommends that you supply all data for a given data element in the main XML feed or the supplemental feed, rather than providing data for a given element in both feed files.
- Products and categories span multiple feeds
The complete catalog of products is supplied by separate systems. For example, if a client sells fruit and cars, the fruit product catalog data comes from a different system than the product catalog data for car products. Rather than generating a single unified product catalog feed, it is easier to provide one feed for all current fruit products and another feed for all current car products.
- Localized product catalog feeds
If you implement Bazaarvoice in multiple locales, you can store product catalog data for each locale in a separate feed file.
Upload multiple feed files
If you are using multiple sources to provide catalog data to Bazaarvoice, you must upload the files from each catalog source on a recurring basis to ensure that catalog data is current and complete in the Bazaarvoice database. However, feed files from each source do not need to be provided to Bazaarvoice at the same or on the same upload schedule. For example, the main XML feed can be provided on a daily basis, but the supplemental text file can be provided on a weekly basis.
While it is a valid strategy to provide a one-time supplemental feed to quickly solve issues related to incomplete catalog data, you should consider an automated process to provide the supplemental data on an ongoing basis to ensure catalog completeness in the future.
Examples
Primary XML feed plus supplemental feed containing data for syndication
In this scenario, a client includes all product catalog data from a web storefront system in an XML feed file and provides Brand, EAN, UPC, and Manufacturer Part Number data in a text feed file. The primary XML feed does not contain Brand, EAN, UPC, and Manufacturer Part Number data.
Here is the XML file. Note that this file is a "full" feed (incremental="false" in the <Feed>
header); all products in the feed should be considered active within Bazaarvoice after consuming the feed.
<?xml version="1.0" encoding="utf-8"?>
<Feed name="Apples_n_Bananas" extractDate="2015-10-13T13:56:25" incremental="false" xmlns="http://www.bazaarvoice.com/xs/PRR/ProductFeed/15.1">
<Categories>
<Category>...</Category>
</Categories> <Products> <Product> <ExternalId>123</ExternalId> <Name>Apple</Name> ... </Product> <Product> <ExternalId>456</ExternalId> <Name>Banana</Name> ... </Product> <Product> <ExternalId>789</ExternalId> <Name>Orange</Name> ... </Product> </Products> </Feed>
Here is the supplemental CSV feed that contains the Brand, EAN, UPC, and Manufacturer Part Number values. Note that the file also contains each products ExternalId
value, which is used by Bazaarvoice to merge the supplemental data with the product catalog data provided in the main XML feed.
ExternalId,Brand,UPC,EAN,ManufacturerPartNumber 123,Brand-123,123000000001,12300001,APL123 456,Brand-456,456000000001,45600001,BAN456 BAN-456-2 789,Brand-789,789000000001,78900001,ORG789 ORG-789-2 ORG789-YA-GLAD
If you are creating a supplemental CSV feed, use the following headers in your CSV file for each data element. Syndication matching improves if you specify multiple values.
Column | Value |
---|---|
Brand |
Name of the brand, which is visible to end users. |
EAN |
European Article Numbers (EANs), which are used worldwide for marking retail goods. Specify an The TXT feed format does not enforce length or numerical constraints on EANs. Any string in this field is treated as valid by the product schema. Values are validated during the catalog import process, however, and only valid values are stored. Column can contain a single value or multiple space-delimited values (e.g. "EAN1 EAN2 EAN3"). |
UPC |
Universal Product Code (UPC), which is a 6- or 12-digit bar code used for standard retail packaging in the United States. Specify a The TXT feed format does not enforce length or numerical constraints on UPCs. Any string in this field is treated as valid by the product schema. Values are validated during the catalog import process, however, and only valid values are stored. Column can contain a single value or multiple space-delimited values (e.g. "UPCVALUE1 UPCVALUE2 UPCVALUE3"). |
ManufacturerPartNumber |
Manufacturer-specific part number. Part numbers can contain letters, numerals, and characters. Column can contain a single value or multiple space-delimited values (e.g. "MPN1 MPN2 MPN3"). |
Or, an XML feed file could be used to provide supplemental data. Note the use of incremental="true" supplemental="true" in the <Feed>
header.
<?xml version="1.0" encoding="utf-8"?>
<Feed name="Apples_n_Bananas" extractDate="2015-10-13T13:56:25" incremental="true" supplemental="true" xmlns="http://www.bazaarvoice.com/xs/PRR/ProductFeed/15.1"> <Products> <Product> <ExternalId>123</ExternalId> <!-- Product details needed for syndication --> <Brand> <Name>Brand 123</Name> </Brand> <UPCs> <UPC>123000000001</UPC> </UPCs> <EANs> <EAN>12300001</EAN> </EANs> <ManufacturerPartNumbers> <ManufacturerPartNumber>APL123</ManufacturerPartNumber> </ManufacturerPartNumbers> </Product> <Product> <ExternalId>456</ExternalId> <Brand> <Name>Brand 456</Name> </Brand> <UPCs> <UPC>456000000001</UPC> <UPC>456000000002</UPC> </UPCs> <EANs> <EAN>45600001</EAN> <EAN>45600002</EAN> </EANs> <ManufacturerPartNumbers> <ManufacturerPartNumber>BAN456</ManufacturerPartNumber> <ManufacturerPartNumber>BAN-456-2</ManufacturerPartNumber> </ManufacturerPartNumbers> </Product> <Product> <ExternalId>789</ExternalId> <Brand> <Name>Brand 789</Name> </Brand> <UPCs> <UPC>789000000001</UPC> <UPC>789000000002</UPC> <UPC>789000000003</UPC> </UPCs> <EANs> <EAN>78900001</EAN> <EAN>78900002</EAN> <EAN>78900003</EAN> </EANs> <ManufacturerPartNumbers> <ManufacturerPartNumber>ORG789</ManufacturerPartNumber> <ManufacturerPartNumber>ORG-789-2</ManufacturerPartNumber> <ManufacturerPartNumber>ORG789-YA-GLAD</ManufacturerPartNumber> </ManufacturerPartNumbers> </Product> </Products> </Feed>
Products and categories span multiple feeds
In this scenario, a client provides two separate feeds:
- An XML feed with product, brand, and category data for fruit products
- An XML feed with product, brand, and category data for car products
The following is an example of the XML feed for fruit products. Note the incremental="true" attribute in the <Feed>
header.
<?xml version="1.0" encoding="utf-8"?>
<Feed name="Apples_n_Bananas" extractDate="2015-10-13T13:56:25" incremental="true" xmlns="http://www.bazaarvoice.com/xs/PRR/ProductFeed/15.1">
<Categories>
<Category>...</Category>
</Categories> <Products> <Product> <ExternalId>123</ExternalId> <Name>Apple</Name> ... </Product> <Product> <ExternalId>456</ExternalId> <Name>Banana</Name> ... </Product> <Product> <ExternalId>789</ExternalId> <Name>Orange</Name> ... </Product> </Products> </Feed>
Here is the XML feed for car products. Again, note the incremental="true" attribute in the <Feed>
header.
<?xml version="1.0" encoding="utf-8"?>
<Feed name="Apples_n_Bananas" extractDate="2015-10-13T13:56:25" incremental="true" xmlns="http://www.bazaarvoice.com/xs/PRR/ProductFeed/15.1">
<Categories>
<Category>...</Category>
</Categories> <Products> <Product> <ExternalId>9876547</ExternalId> <Name>Ferrari</Name> ... </Product> <Product> <ExternalId>7736208</ExternalId> <Name>Aston Martin</Name> ... </Product> <Product> <ExternalId>789632528</ExternalId> <Name>BMW</Name> ... </Product> </Products> </Feed>
Localized product catalog feeds
In this scenario, a client wants to implement Bazaarvoice across two locales: en_CA and fr_CA. The client stores its product catalog for the en_CA locale in a separate system from the product catalog data for the fr_CA locale. To use a single Bazaarvoice account, a client can provide one feed with the en_CA data and another feed with the fr_CA data.
The following example shows the product catalog feed containing the localized catalog data for the en_CA locale only. Note the incremental="false" attribute in the <Feed>
header.
<?xml version="1.0" encoding="utf-8"?>
<Feed name="Apples_n_Bananas" extractDate="2015-10-13T13:56:25" incremental="false" xmlns="http://www.bazaarvoice.com/xs/PRR/ProductFeed/15.1">
<Categories>
<Category>...</Category>
</Categories> <Products> <Product> <ExternalId>123</ExternalId> <Name>Apple</Name> <Names> <Name locale="en_CA">Apple EN</Name> </Names> <ProductPageUrls> <ProductPageUrl locale=”en_CA”>http://www.example.com/en_CA/apple.htm</ProductPageUrl> </ProductPageUrls> ... </Product> <Product> <ExternalId>456</ExternalId> <Name>Banana</Name> <Names> <Name locale="en_CA">Banana EN</Name> </Names> <ProductPageUrls> <ProductPageUrl locale=”en_CA”>http://www.example.com/en_CA/banana.htm</ProductPageUrl> </ProductPageUrls> ... </Product> </Products> </Feed>
The following example shows the product catalog feed containing the localized catalog data for the fr_CA locale only. Note the incremental="false" attribute in the <Feed>
header.
<?xml version="1.0" encoding="utf-8"?>
<Feed name="Apples_n_Bananas" extractDate="2015-10-13T13:56:25" incremental="false" xmlns="http://www.bazaarvoice.com/xs/PRR/ProductFeed/15.1">
<Categories>
<Category>...</Category>
</Categories> <Products> <Product> <ExternalId>123</ExternalId> <Name>Apple</Name> <Names> <Name locale="fr_CA">Apple FR</Name> </Names> <ProductPageUrls> <ProductPageUrl locale=”fr_CA”>http://www.example.com/fr_CA/apple.htm</ProductPageUrl> </ProductPageUrls> ... </Product> <Product> <ExternalId>456</ExternalId> <Name>Banana</Name> <Names> <Name locale="fr_CA">Banana FR</Name> </Names> <ProductPageUrls> <ProductPageUrl locale=”fr_CA”>http://www.example.com/fr_CA/banana.htm</ProductPageUrl> </ProductPageUrls> ... </Product> </Products> </Feed>