Skip to main content

Overview

The AI Chat Extension SDK provides a comprehensive event system that notifies your extension about user interactions, query classifications, and UI state changes. Events enable you to track user behavior, trigger analytics, and respond to chat interactions.

Registering event listeners

Use the registerEventListener method to subscribe to SDK events:
You can register multiple listeners, and all will be called when an event occurs.

Event structure

All events follow this structure:
  • type: The event type (see available events below)
  • data: Event-specific payload
  • tabDetails: Information about the tab where the event occurred

Chat panel events base payload

All chat panel events include a chatSessionId in their data payload:
This allows you to correlate events within the same chat session.

Available events

QUERY_CLASSIFIED

Emitted when a user’s query has been analyzed and classified. Event type: AiChatExtensionSdkEventType.QUERY_CLASSIFIED Data payload:
Example:

CHAT_BADGE_SHOWN

Emitted when the chat badge becomes visible to the user. Event type: AiChatExtensionSdkEventType.CHAT_BADGE_SHOWN Data payload:

CHAT_BADGE_CLICKED

Emitted when a user clicks on the chat badge or one of its suggested prompts. Event type: AiChatExtensionSdkEventType.CHAT_BADGE_CLICKED Data payload:

CHAT_BADGE_CLOSED

Emitted when a user dismisses the chat badge. Event type: AiChatExtensionSdkEventType.CHAT_BADGE_CLOSED Data payload:

CHAT_PANEL_OPENED

Emitted when the chat panel becomes visible to the user. Event type: AiChatExtensionSdkEventType.CHAT_PANEL_OPENED Data payload:

CHAT_PANEL_CLOSED

Emitted when the user closes the chat panel. Event type: AiChatExtensionSdkEventType.CHAT_PANEL_CLOSED Data payload:

CHAT_PANEL_MESSAGE_SENT

Emitted when the user sends a message in the chat panel. Event type: AiChatExtensionSdkEventType.CHAT_PANEL_MESSAGE_SENT Data payload:

CHAT_PANEL_PROMPTS_SHOWN

Emitted when suggested prompts are displayed in the chat panel. Event type: AiChatExtensionSdkEventType.CHAT_PANEL_PROMPTS_SHOWN Data payload:

CHAT_PANEL_PROMPT_CLICKED

Emitted when the user clicks a suggested prompt in the chat panel. Event type: AiChatExtensionSdkEventType.CHAT_PANEL_PROMPT_CLICKED Data payload:
Emitted when the user clicks a link in a chat message. Event type: AiChatExtensionSdkEventType.CHAT_PANEL_LINK_CLICKED Data payload:

CHAT_PANEL_TOP_MERCHANTS_SHOWN

Emitted when top merchants are displayed in the chat. Event type: AiChatExtensionSdkEventType.CHAT_PANEL_TOP_MERCHANTS_SHOWN Data payload:

CHAT_PANEL_TOP_MERCHANTS_CLICKED

Emitted when the user clicks on a top merchant. Event type: AiChatExtensionSdkEventType.CHAT_PANEL_TOP_MERCHANTS_CLICKED Data payload:

CHAT_PANEL_PRODUCTS_SHOWN

Emitted when products are displayed in the chat. Event type: AiChatExtensionSdkEventType.CHAT_PANEL_PRODUCTS_SHOWN Data payload:

CHAT_PANEL_PRODUCTS_CLICKED

Emitted when the user clicks on a product. Event type: AiChatExtensionSdkEventType.CHAT_PANEL_PRODUCTS_CLICKED Data payload:

CHAT_PANEL_PRODUCTS_PAGE_NEXT_CLICKED

Emitted when the user clicks to view the next page of products. Event type: AiChatExtensionSdkEventType.CHAT_PANEL_PRODUCTS_PAGE_NEXT_CLICKED Data payload:

CHAT_PANEL_PRODUCTS_PAGE_PREVIOUS_CLICKED

Emitted when the user clicks to view the previous page of products. Event type: AiChatExtensionSdkEventType.CHAT_PANEL_PRODUCTS_PAGE_PREVIOUS_CLICKED Data payload:

Event flow examples

Typical shopping query flow

Badge dismissal flow

Analytics integration example

Here’s a complete example of integrating SDK events with an analytics service:

Debugging events

Enable debug mode to see all events logged to the console:
You can also add a simple debug listener:

Best practices

1. Track meaningful metrics

Focus on events that provide business value:
  • Conversion funnel: QUERY_CLASSIFIEDCHAT_BADGE_SHOWNCHAT_BADGE_CLICKEDCHAT_PANEL_OPENED
  • Engagement: Session durations, messages sent, products/merchants clicked
  • Monetization: Track CHAT_PANEL_LINK_CLICKED, CHAT_PANEL_PRODUCTS_CLICKED, and CHAT_PANEL_TOP_MERCHANTS_CLICKED
  • Friction points: CHAT_BADGE_CLOSED (dismissals)

2. Handle errors gracefully

Wrap event handlers in try-catch to prevent one handler from breaking others:

3. Avoid blocking operations

Event handlers should be fast and non-blocking. Use async operations carefully:

4. Use chatSessionId for correlation

Use the chatSessionId field to correlate events within the same chat session: