Each track.* records a signal and the SDK sends it for you. It never throws or waits for the network: call it without await, from the click handler.

The methods

All of them take the recommendation (in the API, Decision: the list of products recommended for that moment) or its decision_id. Except for the impression, they also take the result (or its item_id).
Each method returns the signal id, or undefined if it couldn’t be built (onSignalError says why). They accept signalId, your own stable id, and occurredAt, now by default. Every signal carries the visitor and the context on its own, with no personal data: Visitor and context.

Listen to the results

In tests, or before closing a shopping session on the server:

If you don’t see it

Signals and attribution

When to send each signal and what CrossUp measures with them.

Record signals via the API

The operation, with a playground.