> For the complete documentation index, see [llms.txt](https://developers-commerce-v2.projectagora.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers-commerce-v2.projectagora.com/integration/syncing-catalog-and-products.md).

# Syncing Catalog & Products

You will need to create at least one catalog to integrate with Project Agora Commerce.

## What Is A Catalog? <a href="#what-is-a-catalog" id="what-is-a-catalog"></a>

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, 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.

## What Are Products? <a href="#what-are-products" id="what-are-products"></a>

Products are individual GTIN's on an integrator's site. Products synced with Project Agora Commerce 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, only products relevant to the catalogs the advertiser selected are displayed for selection. Products should not be used to represent any more than a single product GTIN. Variations of the same product should be different products.

The SKU codes should have a prefix contained in the pa\_id attribute which will be explained also in the next chapter.

pa\_id is a concatenation of id with a catalog specific prefix(the catalog prefix is provided from project agora) \<pa\_id>=catprefix+"--"+\<id>   This is the universal unique id to identify each product in the pa-commerce platform. This id is used for ad requests/responses and impression/click and order reporting.

#### For example: <a href="#for-example" id="for-example"></a>

200ml, 600ml, and 2L variations of the same drink product would be regarded as 3 different products in the Project Agora Commerce.

This is commonly aligned with existing integrator practices.

### Product Properties <a href="#product-properties" id="product-properties"></a>

Each product has an an individual series of properties applied to it. The filters applied to each product will depend on the quality of integration each integrator wishes to complete.

The specific terms used differentiates between syncing via API or file. Integrators are required to sync `GTIN`, `Name`,`Inventory`,`Description` and`Filters`. Additional properties can be used for targeting, relevancy and platform targeting features. The `GTIN` property can be substituted for any unique code or SKU used in the integrator's back end.

## Product Filters Explained <a href="#product-filters-explained" id="product-filters-explained"></a>

Product filters are used in primarily in ad generation in addition to containing properties such as imageUrl and name. When requesting ads from Project Agora Commerce, you will send a context containing relevant page information, this ensures relevant ads are served to each page.

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

{% hint style="info" %}
An important step of the retailer is to include in the product feed xml all the available categories in which each product belongs into into the product\_type attribute. (1st level Parent categories, 2nd level parent categories, subcategories etc)
{% endhint %}

{% hint style="info" %}
Another important step if for the retailer to include in the taxonomy attribute as described in the next section, all the available category paths in which a product belongs
{% endhint %}

A context containing productFilters:

```
"productFilters": [   "taxonomy:RedWine>Shiraz",    "type:Australian",    "delivery:DeliveryOnly",    "price-range:$25-$50"   ],
```

Will only return ads for products containing all filters in the relevant array. Like below:

```
[   "taxonomy:RedWine>Shiraz",    "type:Australian",    "delivery:DeliveryOnly",    "price-range:$25-$50"],
```

{% hint style="info" %}
All the categories in ad requests should be declared with the prefix "taxonomy:"  like in the example below:&#x20;

```
"productFilters": ["taxonomy:RedWine"]
```

{% endhint %}

### Category Minimum Bid Filter Structure <a href="#category-minimum-bid-filter-structure" id="category-minimum-bid-filter-structure"></a>

There are no strict rules defining the structure of filters, it is up to integrators to define how they are structured. In the event the integrator enable category minimum bids, relevant category product filters are leveraged and mapped to a minimum bid value. It is best practice to ensure category filters are human readable to reduce confusion for advertisers creating campaigns.

If you are looking to utilize category minimum bid values, it is best to ensure categories are human readable and understandable for advertisers creating campaigns. `category:Keyboards` is easier to understand than `category:12`

## Providing Image and Product Name <a href="#providing-image-and-product-name" id="providing-image-and-product-name"></a>

Project Agora Commerce needs information about product image and name to make them searchable for in the Project Agora Commerce portal when creating campaigns. These values can be sent to Project Agora Commerce inside filters formatted like:

```
"imageurl:https://your.image.host.com/image.jpg","name:product name"
```

They are seen in various areas of the Project Agora Commerce portal such as product selection below:

![](/files/-MSb8CWBSslKMIVj7Jva)

## Syncing Catalogs & Product  <a href="#syncing-catalogs-and-product" id="syncing-catalogs-and-product"></a>

You can sync your catalogs and products with Project Agora Commerce via File.


---

# 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:

```
GET https://developers-commerce-v2.projectagora.com/integration/syncing-catalog-and-products.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
