This document explains all Event Collection API payload fields across all event types. It shows where to get each value from: your rendered page (DOM), the Search/Merchandising API request, the API response, or other sources.
All Fields
The table below shows every Event Collection API field, where to get its value, and a link to the detailed reference. The "By API Request" and "By API Response" columns refer to the Search API (or Category Merchandising API) you are already using to fetch products.
Value Sources:
By DOM: Value read from your rendered page (input fields, pagination, URL bar, etc.)

By API Request: Value from the Search/Merchandising API request param you sent.
By API Response: Value from the Search/Merchandising API response you received
Other: Static values, values you generate, or your app state
Field | By DOM | By API Request | By API Response | Other |
|---|---|---|---|---|
eventType | - | - | - | Static: "search", "product-list-view", "product-click", "add-to-cart", or "purchase" |
source | Your page type | - | - | "search-listing", "search-popup", "category-listing", or "brand-listing" |
userId | - | Param u | - | Or localStorage.getItem('spUID') / Insider.getUserId() |
platform | navigator.userAgent → desktop-web, mobile-web, etc. | Or your app context | ||
integrationType | - | - | - | Static: always "api" |
searchSessionId | No | Deprecated. Use product.traceId instead. Bidirectional fallback with product.traceId. No spaces. | ||
sessionId | - | - | - | Web: gassid from localStorage. Mobile: generate your own. Optional. |
referrer | window.location.href | - | - | - |
createdAt | - | - | - | Current timestamp (RFC 3339). Optional, defaults to server time |
campId | - | - | - | Campaign ID. Optional, defaults to 999999 |
attributionWindow | - | - | - | Calculated: time windows since original search/listing. e.g. ["session", "7", "30"] |
variationId | - | - | - | A/B test variation ID. Optional, defaults to 999999 |
strategyId | - | Param sid | data.appliedSearchStrategy | Optional |
query | Search input field value | Param q | - | For click/cart/purchase: reuse from original search |
listValue | Breadcrumb text, tilde-separated | Param cv | - | For click/cart/purchase: reuse from original listing |
traceId | - | - | - | Generated: Base64({userId}+{query}+{timestamp}) for search, any unique string for listing. For click/cart/purchase: reuse from original event. |
sorting | Selected value of sorting dropdown | Param st | data.sortings[] where selected: true | - |
resultCount | Total results text | - | data.navigation.totalItems | For click/cart/purchase: reuse from original event |
itemsPerPage | Number of product cards on page | Param ps | data.navigation.itemPerPage | - |
totalPages | Last page number in pagination | - | data.navigation.totalPages | For click/cart/purchase: reuse from original event |
currentPage | Active page in pagination | - | data.navigation.currentPage | - |
facets | Selected filter values → [{ field, label, values }] | - | data.aggregations[] for field/label | - |
products[].id | - | - | data.items[].itemId | - |
products[].price | - | - | data.items[].itemProperties.item_card.price.{currency} | - |
products[].currency | - | param c | - | - |
products[].groupCode | - | - | data.items[].itemProperties.item_card.groupCode | - |
products[].displayPosition | Index of product card on the grid (1-indexed) | - | Item order in data.items[] | Keep from first display; do not update after sorting/filter |
products[].clickPosition | Position of product when clicked | - | - | May differ from displayPosition after sorting |
products[].convertedPrice | - | - | data.items[].itemProperties.item_card.convertedPrice | Falls back to price |
products[].preferredCurrency | - | - | - | Your site's main currency. Falls back to currency |
products[].isMerchandisedItem | - | - | data.items[].isMerchandisedItem | Default false |
products[].quantity | Quantity selector value | - | - | Defaults to 1 |
orderId | - | - | - | Your checkout system: unique order ID |
allPurchasedProducts | - | - | - | Your checkout system: ALL product IDs in the order (including non-Eureka) |
For click, add-to-cart, and purchase events:
query is used when source is search-popup/search-listing; listValue is used when source is category-listing/brand-listing. Do not mix them.
For search and listing events, products is an array. For click and add-to-cart, product is a single object. For purchase, products is an array where each product can have its own source and traceId.
Field Availability by Event Type
Field | search | product-list-view | product-click | add-to-cart | purchase |
|---|---|---|---|---|---|
eventType | ✓ | ✓ | ✓ | ✓ | ✓ |
source | ✓ | ✓ | ✓ | ✓ | ✓ |
userId | ✓ | ✓ | ✓ | ✓ | ✓ |
platform | ✓ | ✓ | ✓ | ✓ | ✓ |
integrationType | ✓ | ✓ | ✓ | ✓ | ✓ |
referrer | ✓ | ✓ | ✓ | ✓ | ✓ |
traceId | ✓(event) | ✓(event) | ✓(product) | ✓(product) | ✓(product) |
query | ✓(event) | - | ✓(product) | ✓(product) | ✓(product) |
listValue | - | ✓(event) | ✓(product) | ✓(product) | ✓(product) |
sorting | ✓ | ✓ | ✓(product) | ✓(product) | ✓(product) |
resultCount | ✓ | ✓ | ✓(product) | ✓(product) | ✓(product) |
itemsPerPage | ✓ | ✓ | ✓(product) | ✓(product) | ✓(product) |
totalPages | ✓ | ✓ | ✓(product) | ✓(product) | ✓(product) |
currentPage | ✓ | ✓ | ✓(product) | ✓(product) | ✓(product) |
facets | ✓ | ✓ | ✓(product) | ✓(product) | ✓(product) |
displayPosition | ✓(product) | ✓(product) | ✓(product) | ✓(product) | ✓(product) |
clickPosition | - | - | ✓(product) | ✓(product) | ✓(product) |
quantity | - | - | - | ✓(product) | ✓(product) |
attributionWindow | - | - | - | ✓ | ✓ |
orderId | - | - | - | - | ✓ |
allPurchasedProducts | - | - | - | - | ✓ |
Search API Request and Response
You are already calling the Eureka Search API (or Category Merchandising API) to fetch products and render your pages. Below is a reference for the request/response structure. For further details, refer to the Eureka Search API.
Search API request example
GET https://ineureka.api.useinsider.com/api/web/search
?q=queryA ← Search query
&p=10000001 ← Your Partner ID
&l=en_GB ← Your Locale
&c=USD ← Currency
&u=userA ← User ID (from localStorage key "spUID")
&ps=10 ← Page size (items per page)
&pf=0 ← Page from (0-based offset, for pagination)
&st=Relevancy ← Sorting typeSearch API response (simplified) example
{
"status": "Success",
"data": {
"items": [
{
"itemId": "prod-001",
"itemProperties": {
"item_card": {
"price": { "USD": 299.99 },
"original_price": { "USD": 349.99 },
"groupCode": "group-1",
"product_image_url": "https://example.com/images/prod-001.jpg",
"name": "Product A",
"url": "https://example.com/product/prod-001",
"in_stock": 1,
"product_attributes": {
"review_count": 120,
"product_brand": "brandA"
}
}
},
"itemVariants": []
}
],
"navigation": {
"totalItems": 42,
"totalPages": 5,
"currentPage": 1,
"itemPerPage": 10
},
"aggregations": [
{
"name": "brand_en",
"label": "Brand",
"style": "Checkboxes",
"items": [
{ "name": "brandA", "selected": false, "documentCount": 15 },
{ "name": "brandB", "selected": false, "documentCount": 8 }
],
"sequence": 1,
"itemOrderType": "CountDesc"
}
],
"sortings": [
{ "type": "Relevancy", "label": "Relevancy", "selected": true }
],
"noResultPageText": "No results found"
},
"redirection": null,
"partnerResources": {},
"error": null,
"validations": null,
"appliedSearchStrategy": "UCxQUA=="
}