JavaScript API
Control the embedded chat widget from your own JavaScript
Last updated
Was this helpful?
Control the embedded chat widget from your own JavaScript
Once the snippet has loaded, window.LimioChat is available on the page. Use it to open chat from your own buttons, react to widget events, or switch identity in a single-page app.
The snippet loads with defer, so LimioChat doesn't exist while your own early scripts run. Use the onReady callback:
<script>
window.LimioChatConfig = {
onReady: (chat) => {
document
.querySelector("#talk-to-sales")
.addEventListener("click", () => chat.open())
}
}
</script>open()
Opens the chat panel. With data-fab="never" this also loads the widget on first call.
close()
Closes the panel.
toggle()
Opens if closed, closes if open.
identify(jwt)
Switches to an identified session using a signed identity assertion. Restarts the conversation under the new identity. Returns a promise; rejects if the assertion is invalid.
logout()
Switches to a fresh guest session. Returns a promise.
destroy()
Removes the widget from the page and clears the stored session.
on(event, listener)
Subscribes to a widget event. Returns an unsubscribe function.
ready
The widget has loaded and the API is usable
open
The chat panel opens, whether by the visitor or by open()
close
The chat panel closes
identityChanged
identify() or logout() completed; payload is { identity: "user" | "guest" }
Single-page apps: on() returns an unsubscribe function for a reason: if you subscribe inside a component effect that re-runs, call it on cleanup or listeners accumulate for the lifetime of the page.
The visitor's chat session token lives in your site's localStorage under limio.chat.<api-host>.session. It lasts 24 hours and renews automatically. Clearing site data resets the visitor to a fresh guest. The token only grants access to that visitor's own chat conversation; it carries no other permissions.
Last updated
Was this helpful?
Was this helpful?
const unsubscribe = LimioChat.on("open", () => {
analytics.track("chat_opened")
})
// later, e.g. in a React effect cleanup:
unsubscribe()
