Configuration
Configuration is split in two places, deliberately: the script tag only says which widget instance and which widget type to load. Everything about how it looks and behaves is set in your dashboard and fetched at page load — so changing your brand color or AI provider never means editing embed code on your site again.
Script tag attributes
These are the only two attributes the widget reads.
| Attribute | Default | Description |
|---|---|---|
| data-widget-idrequired | — | The specific widget's identifier, shown in your dashboard. Which widget type loads (lead-qualifier, support-bot, document-processor, or voice-agent) is resolved from this ID server-side — there's no separate attribute for it. |
Dashboard settings
Set once in your dashboard under a widget's Settings tab — applies immediately, no redeploy needed. Grouped below the same way the Settings tab is: Basics, Appearance, Notifications, Integrations, and Advanced.
Basics
Which widget this is and which AI answers for it.
| Setting | Default | Applies to | Description |
|---|---|---|---|
| name | — | All widgets | The internal label for this widget in your dashboard — visitors never see it. Useful once you have more than one widget, e.g. "Homepage bot" vs "Pricing page bot". |
| ai_provider | gemini | All widgets | Which AI provider handles requests: gemini, openai, or anthropic. |
| api_key | — | All widgets | Your provider API key. Encrypted at rest with AES-256-GCM before it's stored — write-only from the dashboard, never returned or shown again. |
Appearance
How the widget looks and where/when it shows up.
| Setting | Default | Applies to | Description |
|---|---|---|---|
| brand_color | #0F766E | All widgets | Hex color used for the widget button and accents. |
| widget_theme | classic | All widgets | Chrome preset for the chat panel: "classic", "minimal", or "dark". Your brand color, font, and corner radius still apply on top. Included on Growth, Agency, and White-Label plans. |
| button_text | Chat with us | All widgets | Label shown on the launcher button and chat header. |
| font_family | Inter | All widgets | Font family applied inside the widget panel. |
| border_radius | 12 | All widgets | Corner radius in pixels for the widget panel and button. |
| icon_url | — | All widgets — Growth/Agency/White-Label plans | Custom launcher icon (PNG/JPG/GIF/WEBP, under 1MB) replacing the default chat bubble, so the button reads as yours at a glance. |
| widget_position | bottom-right | All widgets | bottom-right, bottom-left, or inline. |
| proactive_delay_seconds | — (off) | All widgets, floating placements only | Auto-opens the widget after a visitor has been on the page this many seconds, instead of waiting for a click. Opens once per visitor per page-view; leave blank to keep it click-only. |
Notifications
Getting alerted the moment something happens — Lead Qualifier only.
| Setting | Default | Applies to | Description |
|---|---|---|---|
| notification_email | — | Lead Qualifier only | Email address notified on every new lead. |
| crm_webhook_url | — | Lead Qualifier only | Every qualified lead is POSTed here as JSON the moment it's scored — typically a Zapier "Webhooks by Zapier" catch-hook URL, letting you route leads into any CRM Zapier connects to (HubSpot, Salesforce, Google Sheets, etc.) or your own endpoint. Has a dashboard "Send test" button. |
| slack_webhook_url | — | Lead Qualifier only | Slack Incoming Webhook URL that gets an instant message whenever a lead scores Hot. Has a dashboard "Send test" button and inline instructions for generating the URL in Slack. |
Integrations
Connecting the widget to other systems you already run.
| Setting | Default | Applies to | Description |
|---|---|---|---|
| woocommerce_site_url | — | Support Bot only — Growth/Agency/White-Label plans | Your store's URL, paired with woocommerce_consumer_key and woocommerce_consumer_secret (generated under WooCommerce → Settings → Advanced → REST API with Read permissions). Lets the bot answer real order-status and stock questions from live data. Order lookups only return after the order number is matched to the visitor's email. |
| voice_enabled / voice_provider | off / vapi | Lead Qualifier & Support Bot — Growth/Agency/White-Label plans | Lets visitors talk to the widget out loud on a phone or browser call, using the same AI key and knowledge base as text chat. voice_provider picks which platform (Vapi or Retell AI) handles the call itself. Currently early access — turned on per widget after a manual check. |
Advanced
Prompt behavior, access control, and (Lead Qualifier) custom form fields.
| Setting | Default | Applies to | Description |
|---|---|---|---|
| system_prompt | — | All widgets | Extra instructions sent to the AI on every request — your business context, tone, or extraction rules. |
| widget_language | auto | All widgets | "auto" detects and mirrors each visitor's own language; a specific code (e.g. "es") pins every AI reply to that language instead. |
| allowed_domain | — | All widgets | Restrict which domain the widget will load on. |
| custom_fields | [] | Lead Qualifier only | Extra questions added to the lead capture form beyond the standard name/email/business questions (up to 10), each with a type of text, textarea, or select. Answers feed into the AI's scoring and appear on each captured lead. |
| knowledge_base | — | Support Bot only | Text, URL, and file sources the bot answers from, managed on the widget's Knowledge Base tab (not the Settings tab) — not used by the other two widgets. |
No per-page overrides yet
allowed_domain). If you need different branding on different sites, create separate widgets — each has its own settings.