Skip to main content
Your catalogue is every item NSL may recommend. The richer each item’s description and metadata, the better NSL can match it to people and the more you can do with filters and rules later.

Choose an ingestion path

You can combine paths, but verify source identifiers before switching ingestion methods. Matching identifiers let an importer reuse existing items; unrelated or missing identifiers can create duplicates.

What makes a good item

Use consistent metadata keys across all items, such as category everywhere rather than category on some and type on others. Rules and filters match on exact keys.

Create items

Send an array to create many items in one call. NSL generates each item’s integer id: do not send your own. Store the returned id next to your source record, because events, item_id seeds and updates all use it. Keep your own identifier (SKU, slug, URL) in metadata so you can look items up both ways. For repeat imports, use metadata.source_item_id as a stable identifier within your workspace. Sending the same source ID updates the existing item and returns its NSL integer ID. Without it, ingestion creates a new item; a custom sku field alone does not provide this guarantee. Do not repeat a source ID twice in the same batch. In JavaScript and PHP, use upsertItem with one item or an array. In Swift, use upsertItem for one item and upsertItems for an array. Method signatures for updates and deletion also differ by language; the table below uses JavaScript notation.

Update and retire items

Changing the name, description or metadata refreshes how NSL represents the item. Prefer deactivating over deleting when an item is out of stock or temporarily unavailable, so its event history still counts.

Keep the catalogue in sync

A typical integration has two parts:
  1. A sync job that creates new items and updates changed ones on a schedule (or on change events from your system), storing returned IDs.
  2. Real-time updates for fields that change often and affect what may be shown, such as availability or price.
Use a context filter or a filter rule to exclude unavailable items, for example availability equals out_of_stock. See Rules Engine.

Check what NSL has

  • Data → Items lists every item with filters for name, status, metadata text and dates. See Items.
  • GET /v1/items and GET /v1/items/{item_id} read items back through the API. See the Items reference.

Next

Track events

Record what people do with your items.

Import history

Load past orders or pageviews so a model can train straight away.