JavaScript Embed Features

Event Listeners

The widget will emit events for every conversational moment. Subscribe via window.chatmount.addEventListener() to pipe data into your analytics, CRM, or UI.

Subscribing

js
window.chatmount.addEventListener("user-message", (event) => {
  console.log("User said:", event.data.content);
});

window.chatmount.removeEventListener("user-message", handler);

Available events

  • user-message — payload { data: { content: string }, type: "user-message" }
  • assistant-message — payload { data: { content: string }, type: "assistant-message" }
  • tool-call — payload { data: { name, args, id, type }, type: "tool-call" }
  • tool-result — payload { data: { name, result, toolCallId, type }, type: "tool-result" }

Examples

js
// Pipe everything into your analytics
["user-message", "assistant-message", "tool-call", "tool-result"].forEach(
  (evt) =>
    window.chatmount.addEventListener(evt, (e) =>
      analytics.track(`chatmount.${evt}`, e.data),
    ),
);

// React cleanup
useEffect(() => {
  const onMsg = (e) => setLast(e.data.content);
  window.chatmount.addEventListener("user-message", onMsg);
  return () => window.chatmount.removeEventListener("user-message", onMsg);
}, []);

Related