> For the complete documentation index, see [llms.txt](https://docs.crobox.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.crobox.com/how-to-guides/product-data/setting-up-a-product-feed.md).

# Setting up a Product Feed

In this article you will find information on how to upload and manage your data feeds.

## Overview

Product feeds power your Crobox product catalog. They also power targeting, filtering, and recommendations.

A common setup is:

* **Locale feeds** to create products per region and currency.
* **Enrichment feeds** to add extra attributes across locales.
* Crobox accepts product feeds in **CSV**, **XML**, and **JSON** format, by scheduled fetch from a URL or by manual upload.

### Before you start

* Make sure your **Product ID** is stable over time.
* Decide which locales each feed should target.

{% hint style="info" %}
You may find these URLs through other platforms in use by your business. For example Google Merchant, Channable, Shopify, etc. This method is preferable within the app as it provides real time data updates, without having to manually update the data feeds.
{% endhint %}

## Upload your feed

{% tabs %}
{% tab title="Scheduled fetch (recommended)" %}
Use this when you already have a stable feed URL. Crobox will fetch it on a schedule.

{% stepper %}
{% step %}

### Start the import

1. Go to **Crobox App** → **Product Data** → **Feeds**.
2. Click **Import** → **Create New Feed**.
3. Paste the **Data Feed URL** and click **Next**.
   {% endstep %}

{% step %}

### Configure the feed

* **Feed Source**\
  Crobox detects the file type from the URL.
* **Feed Setup**
  * **Data Feed Name**: Use a clear name. Example: `products-nl_NL` or `enrichment-all-locales`.
  * **Synchronization Frequency**: Match your upstream export schedule.
  * **Starting at**: Pick a time after your source feed finishes updating.
  * **Feed File Type**: Should match the URL output (CSV, XML, or JSON).
* **Advanced**\
  Leave unchanged unless advised by your Account Manager.
* **Source Fields**
  * **Target Locales**: Select where this feed should apply.

{% hint style="warning" %}
Selecting a **language-only** locale (for example, **German**) can only **enrich existing products**.

It will **not** add new **Product IDs** to the catalog.

To add new products, target a specific locale like **German - Germany - Euro** (**Language - Region - Currency**).

In the feed setup, you’ll see this warning:

> You have targeted locale(s) that can only be used to enrich existing products. No new product ID will be added. If that was the intention, please select a specific locale like \[Language] - \[Region] - \[Currency].
> {% endhint %}

{% hint style="info" %}
If the locale you need isn’t available, contact your Account Manager.
{% endhint %}
{% endstep %}
{% endstepper %}

Next: map your fields in [Product Mapping](#product-mapping).
{% endtab %}

{% tab title="Manual upload (CSV/XML/JSON)" %}
Use this for one-off imports, testing, or feeds that rarely change.

{% stepper %}
{% step %}

### Upload the file

1. Go to **Crobox App** → **Product Data** → **Feeds**.
2. Click **Import**.
3. Upload or drag-and-drop the file (CSV, XML, or JSON).
   {% endstep %}

{% step %}

### Configure the feed

* **Feed Source**\
  Crobox detects the file type from the upload.
* **Feed Setup**
  * **Data Feed Name**: Use a clear name you will recognize later.
  * **Feed File Type**: CSV, XML, or JSON.
* **Advanced**\
  Leave unchanged unless advised by your Account Manager.
* **Source Fields**
  * **Target Locales**: Select where this feed should apply.

{% hint style="warning" %}
Selecting a **language-only** locale (for example, **German**) can only **enrich existing products**.

It will **not** add new **Product IDs** to the catalog.

To add new products, target a specific locale like **German - Germany - Euro** (**Language - Region - Currency**).

In the feed setup, you’ll see this warning:

> You have targeted locale(s) that can only be used to enrich existing products. No new product ID will be added. If that was the intention, please select a specific locale like \[Language] - \[Region] - \[Currency].
> {% endhint %}

{% hint style="info" %}
If the locale you need isn’t available, contact your Account Manager.
{% endhint %}
{% endstep %}
{% endstepper %}

Next: map your fields in [Product Mapping](#product-mapping).
{% endtab %}
{% endtabs %}

## Product Mapping

After import, you’ll see the incoming fields. Map them to Crobox properties.

{% hint style="info" %}
Crobox will often suggest mappings automatically. It uses your existing properties in **Product Data → Properties**.
{% endhint %}

{% hint style="warning" %}
Some properties are **core system properties** and should **always** be used when mapping your feed.

These are tied to Crobox catalog structure and experience logic, so avoid creating duplicate custom properties for them, for example:

* **Product ID**
* **Variant ID**
* **Parent ID**
* **Price**
* **Sale price**
* **URL**
* **Image**

Create new properties only for attributes that don’t already exist in your container.
{% endhint %}

Map each row by aligning the **Source field** to a **Target Property**.

* **Source Fields:**
  * **Active:** Turn on only the fields you want to import.
  * **Source field:** The column name from your feed.
  * **Target Property:** The property in Crobox to map into.
    * If it doesn’t exist, type a name and click **+Add**.

{% hint style="info" %}
Use simple, identifiable property names. Reuse the same naming across feeds.
{% endhint %}

* **Target Level:** Choose where the value lives.
  * **Product**: one value per product.
  * **Variant**: values like size or color.

{% hint style="info" %}
A Variant target level typically identifies values like color and size. It will help to prevent duplicate products in the recommended results of a product finder, for example.
{% endhint %}

* **Locale Override:** Set only when a field should target a different locale.
* **Preview Values:** Sample values parsed from the import.

Further property settings can be optimized here by selecting the three dot menu on the right of each property row.

Click **Save**, then **Run Feed to Update** to commit the changes.

To edit later, open the feed again and adjust its source field mapping.

{% hint style="info" %}

* For additional feeds, use **Autofill** to speed up mapping.
* For enrichment feeds, **All locales** is often correct.
  {% endhint %}

## Manage product data sources

Your catalog is built from several sources, like your feeds, AI enrichment properties, and the catalog itself. Over time, sources can be left behind, for example when a feed or AI enrichment property is deleted but its data stays in your catalog. The **Product data sources** overview helps you find and remove them.

In **Product Data** → **Feeds**, open the **Product data sources** panel. Each source shows:

* **Source** - What writes the data, such as a feed, an AI enrichment property, or the catalog.
* **Status** - Sources whose feed or AI enrichment property no longer exists are flagged, so stale data is easy to spot.
* **Products per locale** - How many products the source contributes in each locale.
* **Last update** - When the source last wrote data.

To remove a source, click delete and type the confirmation to continue. Crobox removes the source's data and reindexes your catalog.

{% hint style="warning" %}
Deleting a source removes its data across all locales. Check the product counts before deleting, especially for sources that are still in use.
{% endhint %}

{% hint style="info" %}
When you remove an AI enrichment property, Crobox now removes the data it generated automatically. Use the overview to clean up data from properties removed before this change.
{% endhint %}

## Best practices

### Feed structure and ownership

* Keep **locale feeds** responsible for adding new Product IDs.
* Keep **enrichment feeds** focused on extra attributes.
* If you use multiple feeds, set a clear source of truth per field.

### Product IDs, variants, and locales

* Every feed needs Product IDs to be able to tie the data together in the catalog.
* Put variant-specific data on **Variant** level.
* Mark variant-defining properties (like color/size) consistently.
* Avoid language-only locales for creating products. Use full locale selection.

### Mapping and property hygiene

* Prefer mapping into existing properties.
* Avoid duplicating core system properties (ID, price, stock, URL, title).
* Activate only fields you plan to use in your Crobox Experiences.
* Sanity-check **Preview Values** for type issues and formatting.

### Operations

* Align scheduled fetch timing with your feed export timing.
* Start with a small test feed if you’re changing structure.
* After each run, confirm products and key attributes in the catalog.
* Review **Product data sources** regularly and remove sources flagged as stale.


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.crobox.com/how-to-guides/product-data/setting-up-a-product-feed.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
