Implement a Product Catalog

A product catalog is required for Monetate's recommendations and badging add-ons. Uploading a product catalog has the added benefit of allowing you to target products in the WHO settings of an experience by hierarchy, category, or product attribute that you've specified within the product catalog. Monetate highly recommends that you implement a product catalog because doing so unlocks additional capabilities within the platform.

Monetate's product catalog specification is loosely based on Google's product data specification.

Uploading a Product Catalog

You can upload a product catalog three ways to the Monetate platform:

You can upload as many catalogs as you want under a single account as long as they share product IDs (item_group_id) and categories (product_type). All categories (product_type) across catalogs within an account must be in the same language. If you share a single Monetate tag across multiple domains (for example, multi-brand), you must supply Monetate with a single product catalog.

File Format Requirements

The product catalog file must be in one of these formats:

All CSV product catalog files should adhere to the following requirements:

  • Each field must have a header.
  • Every entry uses quotation marks (") around each field for accurate parsing of data. These quotation marks are especially important for fields with line breaks, quotation marks, or commas. See Comma Escaping within Product Catalog Specification for more information.
  • A double quotation mark (") included in a field must be represented by two double quotation marks.
  • Character encoding must be UTF-8.

Download this CSV file to view an example of a product catalog file with all the required attributes: Sample Product Catalog (CSV).

Product Catalog Values

Attribute Required Data Type & Example Description
item_group_id Yes String (for example, AB12345)

50-character maximum
ID for a group of products that come in different versions; use the product ID collected in your Web integration where possible
id Yes String (for example, A2B4)

50-character maximum
A product's unique identifier; use the product's SKU collected in your Web integration where possible
title Yes String (for example, Men's Pique Polo Shirt) A product's name, which displays in recommendations
image_link Yes String (for example, http:// The URL of a product's main image
link Yes String (for example, http:// 12&id=1030) A product's landing page URL
description Yes String (for example, Red, 100% cotton, large men's t-shirt) A product's description
price Yes Number (for example, 15.00) A product's price
product_type Yes Comma-delimited string (for example, Clothing, Women, Sale) Separate multiple product types with a comma

Don't use a comma within a submitted product_type value because Monetate interprets it as separating 2 product types (for example, if you submit House, Garden & Kitchen, the value House is interpreted as a separate product_type from Garden & Kitchen)
additional_image_link Optional String (for example, http:// The URL of an additional image for a product
adult Optional Boolean (for example, yes) Indicate a product includes sexually suggestive content
age_group Optional String (for example, infant) A product's targeted demographic
availability Optional String (for example, in stock) A product's availability
availability_date Optional String (datetime) (for example, 2016-09-30T12:10:45.000145Z) The date a preordered product becomes available for delivery
brand Optional String (for example, YourBrand) A product's brand name
color Optional String (for example, black) A product's color
condition Optional String (for example, new) A product's condition
energy_efficiency_class Optional String (for example, A+) A product's energy label
expiration_date Optional String (datetime) (for example, 2016-09-30T12:10:45.000145Z) The date on which a product expires
gender Optional String (for example, Unisex) A product's targeted gender
google_product_category Optional Google formatted string (for example, 2271 or Apparel & Accessories > Clothing > Dresses) The category of the item based on the Google product taxonomy; enables advanced analysis of your data by Monetate in the future

If this field's value doesn't match the Google taxonomy, then this field is ignored
is_bundle Optional Boolean (for example, yes) Indicates that the product is a custom group of different products featuring one main product
loyalty_points Optional String (for example, 100) The number and type of loyalty points a customer receives when buying a product
material Optional String (for example, leather) A product's fabric or material
mobile_link Optional String (for example, A product's mobile-optimized landing page when you have a different URL for mobile and desktop traffic
mpn Optional String (for example, MO12345NETATE) A product's manufacturer part number (MPN)
multipack Optional Number (for example, 6) The number of identical products sold within a multipack
pattern Optional String (for example, striped) A product's pattern
promotion_id Optional String (for example, ABC123) An identifier that allows to you match products to promotions
sale_price Optional Number (for example, 15.00) A product's sale price
sale_price_effective_date_begin Optional String (datetime) (for example, 2016-09-30T12:10:45.000145Z) The date on which the product's sale price starts
sale_price_effective_date_end Optional String (datetime) (for example, 2016-09-30T12:10:45.000145Z) The date on which the product's sale price ends
shipping Optional String (for example, 15.00) A product's shipping cost
shipping_height Optional String (for example, 20 in) A product's height
shipping_label Optional String (for example, perishable) Label assigned to a product for shipping
shipping_length Optional String (for example, 20 in) A product's length
shipping_weight Optional String (for example, 3 kg) A product's weight
shipping_width Optional String (for example, 20 in) A product's width
size Optional String (for example, XL) A product's size
size_type Optional String (for example, maternity) A product's cut
tax Optional String (for example, US:CA:5.00:y) A product's sales tax rate in percent

Comma Escaping

Any value that contains a comma (,) must be escaped for a product catalog to pass validation. You must wrap the entire value in double quotation marks ("), such as with the value "Philadelphia, Pennsylvania". You can escape a single row at a time and do not need to do the full column.

Custom Columns

Monetate also accepts data contained within custom columns, also called custom fields. For example, you can send product ratings within a custom customer_rating column. Sending additional product data can, for example, enhance filters that you create in recommendation strategies.

You must define custom columns when creating the product catalog schema. Not only do you input the column name but also define the type of data it contains.

File Upload Validation Errors

If Monetate detects an issue while processing a product catalog file that you've uploaded, it displays one of the following errors.

Error Type Description
Wrong File Type The product catalog file is in an unsupported file format
Improper File Encoding The file doesn't use UTF-8 encoding and must be reformatted
Missing Column Headers One or more column headers defined in the schema file are missing; column headers must match in both files
Duplicate Column Headers One or more column headers appears more than once in the catalog file
Row value doesn't match its data type The data in a row doesn't match the expected data type
System Error Monetate had an unexpected error while processing the file; submit a support ticket using the Monetate Technical Support portal ( to resolve the issue
Extra Columns Provided The file contains columns that aren't in the schema; columns in both files must match