Skip to main content
The public API now accepts only integer identifiers for events, items, and contexts. This makes interaction data directly usable by recommendation and ML training pipelines without maintaining a second string-to-number encoding layer.

Breaking releases

  • JavaScript SDK: 2.0.0
  • Next.js SDK: 1.0.0
  • PHP SDK: 2.0.0
  • Swift SDK: 1.0.0
  • MCP server: 1.0.0

Update event tracking

Replace semantic event and item strings with IDs returned by NSL.
Unknown event, item, or context IDs are rejected. Event ingestion no longer stores an unknown item as null, because that would make the training record ambiguous.

Keep source IDs separately

Do not send a CMS, SKU, article slug, or feed identifier as itemId. Put it in metadata.source_item_id when ingesting the item. Repeated ingestion with the same tenant and source ID updates the existing item and returns the same NSL-generated integer.
Persist the returned item.id beside the source record. If that is not practical, calling item ingestion again with the same metadata.source_item_id safely resolves the same integer ID.

Deployment order

  1. Upgrade server-side SDKs and stop emitting semantic identifiers.
  2. Re-ingest or resolve catalogue records and persist the returned item IDs.
  3. Deploy clients that submit integer event, item, and context IDs.
  4. Confirm event ingestion and recommendation responses, then retrain any model whose artifact encoded legacy item identifiers.
The NSL-hosted migration preserves a tenant-scoped legacy-to-integer mapping so historical events, recommendation snapshots, embeddings, and catalogue relationships remain joinable.