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.
| Method | Best for |
|---|---|
| Catalog Source (JSON/XML feed) | Large catalogs, Shopify/WooCommerce, scheduled syncs |
| Direct API ingestion | Programmatic 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
| Field | Description |
|---|---|
id | Unique product identifier |
title | Product name |
description | Textual description |
url | Product page URL |
image_link | Image 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
- Go to Recommendations → Manage Catalog Sources
- Click Create Catalog Source
- Enter a name for your catalog
Step 2 — Configure the feed URL
- Enter your JSON or XML feed URL
- Enable authentication only if your feed requires it
- Click Next
Step 3 — Map fields
| Source Field | Intempt Field |
|---|---|
id | id |
title | title |
link | url |
description | description |
image_link | image_link |
price | price |
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
productIdis provided, you do not need to senduserIdorprofileId.
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": [...] } } |
intempt:html, intempt:page, intempt:session
Intempt automatically emits three browser-level DOM events for debugging, customization, enrichment, and advanced tracking logic.
Revenue & Refund Tracking
Track successful payments and refunds using Intempt's unified Charge event — the canonical revenue event for all financial transactions.
