Concept

Overview

What Buddy Assist is, how the widget-public architecture works, and when to use it.

Buddy Assist is Breeze Buddy’s storefront chat widget — a self-contained <breeze-buddy-assist> custom element that merchants embed on their website or Shopify storefront to offer an AI-powered chat (and optionally voice) assistant to shoppers.

Unlike the authenticated voice API (which requires a server-side JWT), Buddy Assist uses a widget-public auth model: a short-lived widget_token minted at session creation gates all follow-up calls, and the only credential the embed needs is an opaque public_widget_key generated from the admin API.

Request lifecycle

Storefront loads the embed Shadow DOM mounts, launcher FAB appears
Create session Origin verified, 24 h token returned
Chat turn SSE stream, LLM returns text + UI ops
Page reload — session resumes Token read from localStorage, full history restored

Key design choices

AuthNo JWT from the storefront. public_widget_key + Origin allowlist gate session create; widget_token (24 h) covers all follow-up calls.
Shadow DOMHost-page CSS cannot bleed in; widget CSS cannot bleed out.
One threadChat and voice share one chat_session. Voice is a transient attachment — its transcript drains back into chat history when it ends.
Rate limitsSessions, messages, concurrent sessions, and voice connects are all capped per IP, per merchant, in widget_config.
Session resumesession_id + widget_token stored in localStorage. Page reload within the TTL restores the full conversation.
No recordingVoice recording is disabled for widget sessions by design.

When to use Buddy Assist vs the raw API

Use caseReach for
Storefront chat / ShopifyBuddy Assist widget
Custom chat UI (React / Vue)createBuddyChatStore from the Client SDK
Outbound voice calls / IVRLeads + Connect APIBuild with Telephony
In-browser voice, custom UIBuddyClient / joinRoom from the Client SDK

Next steps

Was this helpful?