Best product feed set-up for Inspire

The product feed is your product catalog — it tells Inspire what products exist, what they look like, and whether they can be recommended to customers. A well-structured feed is the foundation of recommendations, personalization, and email content.


Required fields

Column

Type

Description

Example

itemId

Text

Unique identifier per product. This must exactly match the product IDs sent in your web tracking events (PDP views, add-to-carts, purchases). No duplicates, no empty values.

"SKU-12345"

Important: If the itemId in your feed doesn't match the ID in your events, Inspire cannot link customer behaviour to products — recommendations will not work.


isAvailable — Type: Number (1 or 0)

Indicates whether a product is currently available for sale. 1 = available, 0 = not available.

Why it matters: Inspire uses this to filter out unavailable products from recommendations. If this column is missing, all products are treated as available — including out-of-stock or discontinued items.

Example: 1

category — Type: Text

The product category or product group.

Why it matters: Used as a fallback for recommendations: if a customer has not engaged with enough products, Inspire recommends popular items within the same category. Also used for filtering and grouping. Without categories, fallback recommendations will be less relevant.

Example: "Women's Shoes"

price — Type: Decimal

The selling price of the product, excluding VAT.

Why it matters: Used for price-based filtering (e.g. "only recommend products above €10") and for price bucketing in the Item Enricher. Also required for price-drop triggers.

Example: 49.95

brand — Type: Text

The brand name of the product.

Why it matters: Used to group products by brand for filtering and enrichment. Useful for "more from this brand" recommendations.

Example: "Nike"

name — Type: Text

The display name of the product.

Why it matters: Shown in recommendation output (e.g. emails, web personalisation). Without this, only the itemId is available in the output.

Example: "Air Max 90"

imageUrl — Type: Text

Full URL to the product image.

Why it matters: Shown directly in recommendation output. Without this, no product image is available in emails or on-site personalisation.

Example: "https://example.com/images/airmax90.jpg"

stock — Type: Number

The number of units currently in stock.

Why it matters: Allows you to filter recommendations by minimum stock level (e.g. "only recommend products with at least 5 units in stock").

Example: 42


Optional but useful fields

Column

Type

Description

Example

description

Text

Product description visible to consumers.

"Lightweight running shoe with cushioned sole."

costPrice

Decimal

The purchase or cost price of the product.

22.50

margin

Decimal

The profit margin on the product. Can be used for margin-based filtering in recommendations.

0.45

color

Text

The colour of the product. Useful for filtering or segmentation.

"Red"

compatibleItems

List of text

A list of itemId values that are compatible with this product (e.g. accessories, spare parts). Used by certain recommendation strategies to suggest compatible products.

["SKU-99001", "SKU-99002"]


Parent and child products (variants)

Many webshops sell products with variants — for example, a t-shirt available in sizes S, M, and L, or a shoe in multiple colours. There are two ways to handle this:

Option 1: One row per variant (SKU level) — recommended

Each size/colour combination has its own itemId. This is the most common approach and works best with Inspire, because web tracking events are also typically fired at variant level.

itemId

name

color

size

price

category

SHIRT-RED-S

Red T-Shirt

Red

S

24.95

T-Shirts

SHIRT-RED-M

Red T-Shirt

Red

M

24.95

T-Shirts

SHIRT-BLUE-S

Blue T-Shirt

Blue

S

24.95

T-Shirts

Tip: If you want to group variants together (e.g. to avoid recommending two sizes of the same shirt), you can add a parentItemId column and use it in your Inspire configuration.

Option 2: One row per parent product only

Each product group has a single itemId, regardless of variants. This produces cleaner recommendations but loses granularity — Inspire cannot distinguish between which specific variant a customer viewed or bought.

Avoid mixing both approaches in the same feed — it makes the logic complex and hard to maintain.


Data quality checklist

Before going live, make sure:

  • Every product has a unique, non-empty itemId

  • The itemId in the feed matches exactly what is sent in CDP events and web tracking

  • isAvailable is kept up to date — discontinued or out-of-stock products are set to 0

  • Every product has a category assigned — products without a category will not benefit from fallback recommendations

  • The feed is refreshed regularly (daily recommended)

  • Products in engagement data (views, purchases) all exist in the item feed