Intempt Docs

Product Catalog Ingestion via API

Two methods for importing your product catalog into Intempt's Recommendations engine — catalog source feeds and direct API ingestion.

Product Catalog Ingestion via API

Intempt provides two methods for ingesting product data into the Recommendations engine. Both ensure your product information stays accurate, up-to-date, and usable for recommendations and personalization.

MethodBest for
Catalog Source (JSON/XML feed)Large catalogs, Shopify/WooCommerce, scheduled syncs
Direct API ingestionProgrammatic syncs, webhooks, custom backends

Method 1 — Catalog Source Integration (JSON or XML)

Use this when your product catalog is available as a publicly hosted JSON or XML feed.

Recommended for:

  • Shopify and WooCommerce stores
  • Catalogs with more than 1,000 products
  • Nightly or cron-based sync jobs

Minimum Required Fields

FieldDescription
idUnique product identifier
titleProduct name
descriptionTextual description
urlProduct page URL
image_linkImage URL

Feed Format

{
  "products": [
    {
      "product": {
        "id": "123",
        "title": "Product Name",
        "description": "Details...",
        "url": "https://example.com/product",
        "image_link": "https://example.com/image.jpg"
      }
    }
  ]
}

Setup Steps

Step 1 — Create a catalog source

  1. Go to Recommendations → Manage Catalog Sources
  2. Click Create Catalog Source
  3. Enter a name for your catalog

Step 2 — Configure the feed URL

  1. Enter your JSON or XML feed URL
  2. Enable authentication only if your feed requires it
  3. Click Next

Step 3 — Map fields

Source FieldIntempt Field
idid
titletitle
linkurl
descriptiondescription
image_linkimage_link
priceprice

Optional fields: categories, tags, brand, variants, custom fields.

Enable Sync Field for any field you want Intempt to ingest, then click Create Catalog Source.

Managing Sources

Once created, Intempt automatically fetches updates, updates existing product records, and keeps the catalog in sync. You can edit the feed URL, authentication credentials, or field mappings at any time.

To delete a source: Manage Custom Catalog Sources → dropdown → Delete.


Method 2 — Direct API-Based Product Ingestion

Use the Track API to push product data programmatically from WooCommerce, Shopify webhooks, or custom backend systems.

Critical Rule

If productId is provided, you do not need to send userId or profileId.

Including productId switches Intempt into catalog ingestion mode — no user profile is created, no profile merging is triggered. The product is stored directly in the catalog.

Correct Payload

{
  "productId": "123",
  "data": {
    "title": "Wine Bottle",
    "amount": 150,
    "quantity": 4,
    "categories": [
      { "id": 2300, "name": "Closed Reflex", "slug": "closed-reflex" },
      { "id": 2151, "name": "Optics", "slug": "optics" }
    ],
    "images": [
      { "id": 11689, "src": "https://example.com/image1.jpg", "name": "image1.jpg" },
      { "id": 11690, "src": "https://example.com/image2.jpg", "name": "image2.jpg" }
    ],
    "tags": [
      { "id": 10, "name": "Featured" },
      { "id": 14, "name": "Best Seller" }
    ]
  }
}

The data object supports any nested product structure: categories, tags, images, metadata, product attributes, custom fields, and variant data.

Wrong Payload — Causes Anonymous Users

Do not wrap products inside an event structure:

{
  "eventTitle": "Products",
  "data": {
    "products": [ ... ]
  }
}

This causes Intempt to create a user profile for every event, resulting in hundreds of anonymous users.

Summary — Right vs Wrong

Use
Correct{ "productId": "...", "data": { ... } }
Incorrect{ "eventTitle": "...", "userId": "...", "data": { "products": [...] } }

On this page