General info

Catalogs store any items without direct relationship to the customer. Catalog is a lookup table with one primary key (item_id). It can store any table with fixed columns, for example the list of your products, prices, URL to images and stock availability.

You can search in a catalog by key. Catalogs can be updated on the fly and reflect the current state of stock or online articles. Lookup results are cached, so it can take few seconds for update to show up in new query results.

The most common use cases for catalogs are:

  • In e-commerce – storing a list of products and product categories
  • In publishing – storing article and section details

Sample product catalog

Product catalog columns

  • item_id (required column, string or number)
  • title (string)
  • available (boolean)
  • price (number)


Catalog data can come from:

  • CSV file (one time upload or from a public URL)
  • external database (available integrations are MySQL, PostgreSQL, BigQuery)

You can run a one time import or schedule repeated catalog updates from external sources. Catalog items are not removed, but updated.

Common use cases

Catalogs are useful when you only have ‘item_id’ available in the context, for example from event (aggregate) or from recommendation.


Example – showing a Web Layer with the last visited product on the homepage


  • catalog with required columns (item_id, picture_url, link_url, price, available).
  • event tracking (Track event `view_item` on every page visit of a product page. Track with property `item_id` that matches the `item_id` in the product catalog.)

Design a new Web Layer where you can show an item based on the last viewed item. Create an aggregate to get last(view_item) ‘item_id’. In personalization, find your aggregate and use it in catalog lookup personalization.

Usage of catalog

{% set item = catalogs.products.item_by_id(aggregates['586e0b8d830434e7cc369263']) %}


To check if item is available and print values from catalog:

{% if item and item.available == "true" %}
    {{ item.picture_url }}
    {{ item.link_url }}
    {{ item.price }}
{% endif %}

Recommendations (BETA)

Catalog is required when using recommendation engine to recommend items. Recommendation result is a list of item_ids. To print recommendation results in email or Web Layer you can use catalog lookup as in the example below.

<ul id="recommendations">
  {% for item in recommendations['58aee25afb6009bfe0852332'][:8] %}
  <li> <a href="{{ item.link_url }}">{{ item.title }}</a> </li>
  {% endfor %}
Updated on October 9, 2017

Was this article helpful?

Related Articles