> For the complete documentation index, see [llms.txt](https://help.citrusad.com/retail-media-interface/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.citrusad.com/retail-media-interface/integration/data-api/catalog-products-2.md).

# Catalog & Products

To integrate with Epsilon Retail Media, you will need at least one catalog of products.

## What is a catalog?

A catalog is a grouping of products and their attributes, most commonly used to group all products of an integrator's site into one single catalog.

Catalogs are selected by advertisers in the campaign creation process, and their campaigns will only run within their selected catalog of products. It is common practice for all products to be grouped into a single catalog for an integrator, making selection simple for advertisers.

Creating multiple catalogs can be used to segment product availability in different retailers or countries for campaign targeting purposes.

{% hint style="info" %}
If you want to create multiple catalogs, contact your Technical Account Manager to discuss best practices, as there may be better-supported ways to implement targeting.
{% endhint %}

{% hint style="warning" %}
If you are integrating into a network namespace, you should create a single catalog.
{% endhint %}

## What are products?

Products are individual GTIN's on an integrator's site. Products synced with Epsilon Retail Media are synced with individual identifying values and attributes. Products should represent each GTIN/SKU in your current product catalog.

Products are selected by advertisers in campaign creation, with only the products relevant to the catalogs the advertiser selected displayed for selection. Products should not be used to represent any more than a single product GTIN. Variations of the same product should be listed as different products, e.g. 200ml, 600ml, and 2L variations of the same drink product would be regarded as three different products in Epsilon Retail Media, aligning with existing integrator best practices.

## Product filters explained

Product filters are primarily used for ad generation in addition to containing properties such as `imageUrl` and name. When requesting ads from Epsilon Retail Media, you will send a context containing relevant page information which ensures relevant ads are served to each page.

The structure of filters is up to the integrator, but the most important thing to consider is that these product filters will be sent in your ad generation context. Product filters should match exactly with what is being requested in ad generation.

An example context containing `productFilters` is outlined below:

```http
POST $BASE_URL/v1/ads/generate HTTP/1.1
accept: application/json
content-type: application/json
Authorization: Basic <API_KEY>
{
    "customerId": "wertg5432a",
    "sessionId": "ec9-4e07-881d-3e9",
    "placement": "search",
    "catalogId": "628dbe95-2ec9-4e07-881d-3e9f92ab2e0b",
    "searchTerm": "chocolate",
    "productFilters": [
         ["category:Cupboard"],["dietary:Gluten-free"]
    ],
    "options": {
                             "filterMode": "AndOr"
                             },
    "maxNumberOfAds": 3
}
```

This context will only return ads for products containing all filters in the relevant array.

{% hint style="info" %}
If you want to utilise category minimum bid values, make sure your categories are user-friendly and easy for advertisers creating campaigns to understand, e.g. category:Keyboards is easier to understand than category:12.
{% endhint %}

## Providing images and product names

Epsilon Retail Media needs information about product images and names to make them searchable when creating campaigns in the Epsilon Retail Media portal. These values can be sent to Epsilon Retail Media inside tags formatted like the following example:

```http
POST $BASE_URL/v1/catalog-products?teamId=<YOUR_TEAM_ID> HTTP/1.1
accept: application/json
content-type: application/json
Authorization: Basic <API_KEY>
{
    "catalogProducts": [
        {
            "catalogId": "628dbe95-2ec9-4e07-881d-3e9f92ab2e0b",
            "gtin": "23556578965543",
            "inventory": 50,
            "price": "19.99",
            "tags": [
                 ""imageurl:https://your.image.host.com/image.jpg","name:Covergirl Clean 120 Creamy Natural Liquid Foundation30mL"
            ],
            "filters": [
                 "category:Health&Beauty","category:Grocery","Brand:Covergirl","Special_Flag:0"
            ]
        }
    ]
}
```

They are seen in various areas of the Epsilon Retail Media portal including product selection, like the example below:

<figure><img src="/files/0tkNP6HYOnhmRWXqxgvO" alt="Screen Shot 2021-05-24 at 12.12.31 pm.png" width="100%"><figcaption><p>Reference image</p></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.citrusad.com/retail-media-interface/integration/data-api/catalog-products-2.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
