Record a client-side telemetry event
Writes a single event row tied to the conversation. Used for lifecycle
signals (widget_open, conversation_started), messaging
(message_sent, link_click), and commerce/goal signals
(add_to_cart, purchase — put the amount in props.value and the
ISO-4217 code in props.currency).
Events are stored per-conversation, land in the tenant’s audit log, and
are matched against the tenant’s goals to record conversions. Pass
an optional client-generated id so a retried delivery is deduplicated.
Authorizations
Token issued by POST /api/public/v1/chat/sessions. Lifetime 1h.
Body
snake_case event name. Goals match on this value.
^[a-z][a-z0-9_]{0,63}$"widget_open"
Free-form payload, ≤ 4 KB JSON. For commerce/goal events use value (number) + currency (ISO-4217).
Optional client timestamp (ISO-8601). Defaults to server receive time; a future value is clamped to now.
Optional client-generated id. A repeated id for the same widget key is deduplicated (recorded once).
128Response
Event recorded