const stop = Skate.on('task_ended', e => {
analytics.track('skate_task', { state: e.state, met: e.met });
});
// later: stop();
Skate.on('*', e => console.log(e.event, e)); // every event, with its name
window.addEventListener('skate:task-ended', e => {}); // the same events as DOM eventsIf your code runs before the widget loads, wait for skate:ready or queue with window.SkateQueue.
What an event carries
Ids, states and counts. Never what the visitor typed, never page text. A task event says that a task started, or how it ended. It does not say what was asked.
| Event | Detail |
|---|---|
ready | — (fires once the widget is fully set up: a call to Skate.open() from a ready listener also fires open) |
open, close | — (the panel) |
task_started | task, mode (show or do) |
task_ended | task, state (for example confirmed_done, guided_done, answered, failed, declined), met (true when the request was met) |
approval_requested | task (a change waits for the person to approve it) |
handoff | task (sent to a person) |
checklist_ticked | item, how (skate_done, skate_guided, observed_request) |
item_shown, item_clicked, item_dismissed | item, kind (banner, modal, news, survey) |
survey_answered | survey, complete |
news_unread | count |
stuck | reason (rage_clicks, failed_saves or idle_form) |
help_opened | — |
help_search | results (how many articles matched) |
state: confirmed_done means Skate did it and checked the result on the page. guided_done means the person did it with Skate pointing. Both are checked; nothing else counts as done.
Server-side
To get the same events on your server, with a signature, add a webhook in Settings › Integrations. Webhooks are sent by Skate’s server, so they arrive even when the visitor closes the tab.