Skip to content

How to start using EPS

1. Introduction

Product and category data are expected as messages in a topic-based system, preferably Kafka. Messages are formatted as JSON strings.

  • Updates and Inserts: Handled within the same topic, meaning every update must include a complete message (not just the modified fields).
  • Deletes:
  • Can be delivered in a separate topic containing only the identifier.
  • Alternatively, they can be handled within the same topic as tombstone messages (preferred method) to retain the full dataset in the topic.
  • A full data export should be easily achievable.

2. Product Data Structure

Product data is structured into two levels:

  • Variation Level: Represents a purchasable element, e.g., a clothing item with a specific size and color.
  • Item Level: Groups multiple variations into a single displayable product in the product list.

2.1 Product-Level Data

2.1.1 Mandatory Fields

FieldDescription
productIdID of the parent entity, grouping multiple variations into a displayable product.
shortDescriptionShort product description, typically displayed in product lists.
categoriesList of shop categories in which the product should be clustered.

2.1.2 Important Fields

FieldDescription
brandProduct brand (used for brand filtering).

2.1.3 Optional Fields

FieldDescription
longDescriptionDetailed product description (searchable field).

2.2 Variation-Level Data

2.2.1 Mandatory Fields

FieldDescription
skuSKU of a variation (purchasable item).
colorProduct color.
sizeProduct size (used for size filtering).
searchColorSearchable color (used for color filtering).
priceNumeric price.
imageURL of the product image.
availabilityAvailability score (numeric: 0 = out of stock, 1 = fully available, values between 0-1 indicate backorder status, e.g., 0.2 for delayed availability). Defined per tenant.

2.2.2 Important Fields

FieldDescription
articleNumberArticle number (used for search when customers know the number).
oldPriceOriginal price, useful for filtering discounted items.

2.2.3 Important Fields for Full Data Responses

FieldDescription
oldPriceTypeExample: MSRP (Suggested Retail Price).
linkURL to the product detail page (can be absolute or relative).
basePriceNumeric base price (e.g., 23.99 / 100ml) for legal requirements.
basePriceUnitUnit for base price.

2.2.4 Optional Fields

FieldDescription
moreDimensionsAdditional dimensions (e.g., for furniture).
colorImageURL of the color swatch image, useful for products with multiple colors.

2.3 Attributes (Available for Both Product and Variation Levels)

2.3.1 Filter Attributes

  • Used for creating additional product filters.
  • These values are included in the search index.

Structure

FieldDescription
displayNameFilter name (shown in UI).
valueDisplay name of the filter value (shown in UI).
name (optional)Identifier of the filter (auto-generated if not provided).
id (optional)Filter value ID (must be unique across all filters if provided).

2.3.2 Attributes for Search Index

  • These attributes do not generate filters but are indexed for search relevance.
  • They have three importance levels: high, medium, low.

Structure

FieldDescription
nameAttribute name.
valueAttribute value.

2.3.3 Attributes for Full Data Responses

  • These attributes are not indexed and do not generate filters.
  • They are passed through in the search response but are only used for display purposes (e.g., marketing flags, energy efficiency labels).

Structure

FieldDescription
nameAttribute name.
valueAttribute value.

2.3.4 Attributes for Ranking

  • These attributes are not indexed and do not generate filters.
  • They are sent to the ranking engine to influence product sorting in search results.

Structure

FieldDescription
nameAttribute name.
valueAttribute value (numeric or text).

2.4 Example Product Message


3. Categories

Category Fields

FieldTypeDescription
idstringUnique category identifier.
displayNamestringCategory name (shown in navigation and search).
parentIdstringID of the parent category (empty for root category).
positionintegerSorting position within subcategories.
isOnlinebooleanWhether the category is active (true/false).

Examples of Category Attributes

AttributeDescription
UrlSlugAuto-generated URL for categories.
filtersComma-separated list of available filters.
standardFiltersDefault filters applied in the category (e.g., “sale items” in a SALE category).