Event Collection API: Product Click Event

Prev Next

The product click event should be triggered whenever a visitor clicks an item from the search results.

A product click event should be sent in the following situations:

  • When a user clicks on a product from search results (pop-up or listing)

  • When a user clicks on a product from a category or brand listing page

  • If a user adds a product to the cart directly from the pop-up or listing without going to PDP, send the product-click event before the add-to-cart event (if not already sent)

Endpoint

POST https://eurekaevent.api.useinsider.com/api/v1/events

Visit our Postman collection to test this request.

Payload Fields

The product click event supports the following properties:

Attribute Name

Type

Validation

Default

Description

eventType

String

required, equals=product-click

-

Type of event

source

String

oneof: search-popup, search-listing, category-listing, brand-listing, other

search-listing

Source origin where the event was triggered

userId

String

-

Default

Unique identifier of the user

platform

String

required, oneof: desktop-web, mobile-web, tablet-web, ios, android, other

-

Platform used by the user

integrationType

String

required, oneof: api, web, sdk, app

-

Type of integration

searchSessionId

String

excludes_space

-

Deprecated. Use product.traceId instead. Falls back bidirectionally with product.traceId. Kept for backward compatibility.

product

Object

required

-

The product clicked by the user

referrer

String

required, url

-

Source URL of the referring page

createdAt

String

RFC 3339

If omitted or invalid, defaults to the current time

Time when the event is created

campId

Integer

-

999999

Campaign identifier

variationId

Integer

-

999999

Variation identifier

Product Click Product Fields

The product object (singular, not an array):

Parameter

Data Type

Validation

Default

Description

id

String

required, excludes_space

-

Unique product identifier (catalog ID). Must not contain spaces

groupCode

String

-

-

Product group code. Without it, group-level analytics cannot be calculated

price

Double

required

-

Price of the product

convertedPrice

Double

If not provided, price is used

Converted price in preferred currency

currency

String

required, excludes_space

-

Currency of the price (ISO 4217). Must not contain spaces.

preferredCurrency

String

-

If not specified, currency is used

The main currency of your site

sorting

String

oneof_sorting

Relevancy

Sorting method. Only valid sorting values are accepted

resultCount

Integer

required unless no result, min=1

-

Number of search results returned

itemsPerPage

Integer

required unless no result, min=1

-

Number of items per page

totalPages

Integer

required unless no result, min=1

-

Total number of pages

currentPage

Integer

required unless no result, min=1

-

Current page number

facets

List of facets

-

-

Applied filters

SessionId

String

-

-

Browser/app session identifier

strategyId

String

-

-

Optional strategy identifier

quantity

Integer

-

1

Quantity (defaults to 1 for click events)

isMerchandisedItem

Boolean

Boolean

-

Indicates whether the product is a merchandised (promoted/sponsored) item

Source-Dependent Required Fields

Different fields are required in the product object depending on the source value.

Source

Required Product Field

Description

search-popup

product.query

The search query that produced the results

search-listing

product.query

The search query that produced the results

category-listing

product.listValue

The category hierarchy (e.g., "categoryA~categoryB~categoryC")

brand-listing

product.listValue

The brand hierarchy

other

product.query

The search query

Refer to Common Properties for further details.

Source-Dependent Validation:

When source is search-popup or search-listing, product.query is expected. When source is category-listing or brand-listing, product.listValue is expected. Sending the wrong combination results in a validation error.

Default Values Applied:

  • product.quantity: Defaults to 1

  • product.sorting: Defaults to "Relevancy" if empty

  • product.traceId <-> searchSessionId: Bidirectional fallback

Advanced Analytics (September 01, 2025 release)

After this release, the event now retrieves currentPage from the product-level fields instead of the top-level fields, and the product object has been enriched with new fields (groupCode, convertedPrice, preferredCurrency, displayPosition, clickPosition, query, facets, sorting, resultCount, itemsPerPage, totalPages, currentPage). You may continue sending these values at the event level for backward compatibility, but it is recommended to update your implementation to the new product-level structure.

Sample Requests

In the examples below, you will find a sample request along with guidance on modifying the required fields. This will help you seamlessly integrate and make the most of the provided configuration.

Before usage, it is essential to modify the values such as x-auth-token and x-partner-config-key.

Click after Search Example

curl --location --request POST 'https://eurekaevent.api.useinsider.com/api/v1/events' \
--header 'x-auth-token: YOUR_AUTH_TOKEN' \
--header 'x-partner-config-key: YOUR_PARTNERID-YOUR_LOCALE' \
--header 'Content-Type: application/json' \
--data-raw '{
  "referrer": "https://example.com/search-results",
  "source": "search-listing",
  "searchSessionId": "search-session-abc123",
  "userId": "user-12345",
  "platform": "mobile-web",
  "campId": 100,
  "variationId": 200,
  "product": {
    "id": "product-001",
    "groupCode": "group-1",
    "query": "queryA",
    "price": 1299.99,
    "convertedPrice": 1199.99,
    "currency": "USD",
    "preferredCurrency": "EUR",
    "clickPosition": 3,
    "displayPosition": 3,
    "quantity": 1,
    "resultCount": 25,
    "itemsPerPage": 10,
    "totalPages": 3,
    "facets": [
      {
        "label": "Fiyat",
        "field": "price",
        "values": ["500", "2000"]
      }
    ],
    "sorting": "PriceAsc",
    "currentPage": 1,
    "traceId": "search-session-abc123",
    "strategyId": "strategy-id-123",
    "sessionId": "session-id-123"
  },
  "eventType": "product-click",
  "integrationType": "web",
  "createdAt": "2025-11-25T10:35:00Z"
}'

Click after Category Listing Example

curl --location --request POST 'https://eurekaevent.api.useinsider.com/api/v1/events' \
--header 'x-auth-token: YOUR_AUTH_TOKEN' \
--header 'x-partner-config-key: YOUR_PARTNERID-YOUR_LOCALE' \
--header 'Content-Type: application/json' \
--data-raw '{
  "referrer": "https://example.com/category/categoryA",
  "source": "category-listing",
  "searchSessionId": "trace-cat-456",
  "userId": "user-12345",
  "platform": "desktop-web",
  "product": {
    "id": "product-001",
    "groupCode": "group-1",
    "listValue": "categoryA~categoryB",
    "price": 999.99,
    "convertedPrice": 949.99,
    "currency": "USD",
    "preferredCurrency": "EUR",
    "clickPosition": 1,
    "displayPosition": 1,
    "resultCount": 120,
    "itemsPerPage": 24,
    "totalPages": 5,
    "sorting": "Relevancy",
    "currentPage": 1,
    "traceId": "trace-cat-456",
    "sessionId": "session-abc123"
  },
  "eventType": "product-click",
  "integrationType": "api",
  "createdAt": "2026-01-20T14:32:00Z"
}'