Cada track.* registra una señal y el SDK la manda solo. Nunca tira ni espera la red: llamalo sin await, desde el handler del clic.

Los métodos

Todos reciben la recomendación (en la API, Decision: la lista de productos recomendados para ese momento) o su decision_id. Salvo la impresión, también el resultado (o su item_id).
Cada método devuelve el id de la señal, o undefined si no se pudo armar (onSignalError dice por qué). Aceptan signalId, un id propio y estable, y occurredAt, por defecto ahora. Cada señal lleva sola el visitante y el contexto, sin datos personales: Visitante y contexto.

Escuchar los resultados

En tests, o antes de cerrar una sesión de compra en el servidor:

Si no lo ves

Señales y atribución

Cuándo mandar cada señal y qué mide CrossUp con ellas.

Registrar señales por API

La operación, con playground.