Sync Items to Catalogs

Sync Items to Catalogs

Kevel Catalogs allow you to manage and sync product data used to power your retail media ads. You can share catalog data either through file-based ingestion or via the Catalog Management API, depending on your integration needs.


Options for Sharing Catalog Data

Kevel now supports two primary methods for syncing catalog data:

  1. Flat File Uploads — Send a complete NDJSON file of your catalog using the Create Ingest URL endpoint.
  2. Catalog Management API — Manage items programmatically through the Catalog and Catalog Item endpoints.

Phase 1: Initial Import

To begin your Catalog integration, work with your Kevel account team to send a one-time export of your catalog. This initial import ensures Kevel has all the data needed to populate the catalog and allows your AdOps team to test ad creation and product linkages.

You can provide this data via either:


Phase 2: Continuous Sync

Once your initial import is complete, you can choose how to maintain your Catalog going forward.

Option A: File-Based Sync (Flat File Uploads)

The Create Ingest URL endpoint allows you to push source data to Kevel via a signed upload URL. Once a new file is uploaded, Kevel automatically triggers ingestion and updates your Catalog and any Ads linked to those items.

Syncing Frequency

Kevel supports daily catalog updates, though more frequent uploads can be arranged based on catalog size and use case.

File Naming and Compression

Use the format <item-type>.ndjson (e.g., products.ndjson).

Compressed uploads are supported and recommended, e.g. products.ndjson.gz.

Kevel automatically prepends a timestamp when you create an ingest URL.


Option B: API-Based Sync (Catalog Management API)

For real-time or high-frequency updates, use the Catalog Management API.

Available Endpoints

Example Use Cases

Example: Create or Update Catalog Items (cURL)

curl -X POST "https://api.kevel.co/catalog/v1/catalogs/{catalogId}/items/batch" \
  -H "Content-Type: application/json" \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -d '{
    "Items": [\
      {\
        "sku": "SKU-123",\
        "title": "Organic Almond Butter",\
        "price": 9.99,\
        "inStock": true\
      },\
      {\
        "sku": "SKU-456",\
        "title": "Cashew Trail Mix",\
            "price": 14.99,\
        "inStock": false\
      }\
    ]
  }'

This request creates or updates two catalog items. Partial payloads (e.g., sending only inStock or price) are supported via the PATCH endpoint.


Catalog Item Structure

Each item must include a unique ID (as defined by the Catalog’s ID Key). All other fields may vary depending on your schema.

Property Description
SKU (e.g.)* Your unique ID for this item as defined in the parent Catalog definition’s ID Key. Must be unique within the Catalog.
Search Keys The keys defined as Search Keys on the Catalog definition.
Additional Aliased Keys Any additional attributes aliased to other properties.
Passthrough Data Optional metadata for use in Ad or Creative templates.

*Required field

When syncing via flat file, you must include all attributes for each item.

When syncing via API, you can submit partial payloads containing only updated fields.


Validation

Kevel requires only the unique ID for ingestion. Other attributes are not validated for type or presence; if a search key’s value does not match its defined type, Kevel will store the data but exclude that attribute from indexing.


Example NDJSON Feed (File Upload Method)

products-20251030.ndjson

{"title": "PROZIS Whey Protein Fusion Vanilla flavour (900g)", "image": "https://static.adzerk.net/Advertisers/vanilla_protein.png", "sku": 1, "brand_name": "Prozis", "brand_id": 2764717, "categories": [1, 3], "main_category_id": 3, "main_category_name": "Protein Powders", "star_rating": 4.7, "price": 52}
{"title": "PROZIS Snack Zero (35g)", "image": "https://static.adzerk.net/Advertisers/12942cbf7cb84e91965c491bbb0abcff.png", "sku": 2, "brand_name": "Prozis", "brand_id": 2764717, "categories": [2, 4], "main_category_id": 4, "main_category_name": "Protein Bars", "star_rating": 4.2, "price": 3}
{"title": "Best snacks with almond pack", "image": "https://static.adzerk.net/Advertisers/almond_pack.png", "sku": 3, "brand_name": "Hazel", "brand_id": 2764718, "categories": [2, 5], "main_category_id": 5, "main_category_name": "Raw Bites", "star_rating": 3.5, "price": 7}

Choosing Between File Uploads and the Catalog Management API

Use Case Recommended Method
Large nightly syncs of full product catalog Flat File Upload
Real-time or frequent incremental updates (e.g., stock or price changes) Catalog Management API
Initial import / historical migration Flat File Upload
Integration with other internal product systems Catalog Management API

Updated 8 months ago


What’s Next