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.

AttributeDefaultDescription
data-widget-idrequired—The specific widget's identifier, shown in your dashboard. The widget type 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.

SettingDefaultApplies toDescription
name—All widgetsThe 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_providergeminiAll widgetsWhich AI provider handles requests: gemini, openai, or anthropic.
api_key—All widgetsYour 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.

SettingDefaultApplies toDescription
brand_color#111111All widgetsHex color used for the widget button and accents. The default look is black and white.
widget_themeclassicAll widgetsChrome preset for the chat panel: "classic", "minimal", or "dark". Your brand color, font, and corner radius still apply on top. Included on plans that list "Custom icon & widget themes" on the pricing page.
button_textChat with usAll widgetsLabel shown on the launcher button and chat header.
font_familyInterAll widgetsFont family applied inside the widget panel.
border_radius12All widgetsCorner radius in pixels for the widget panel and button.
icon_url—All widgets — plans that include a custom iconCustom launcher icon (PNG/JPG/GIF/WEBP, under 1MB) replacing the default chat bubble, so the button reads as yours at a glance.
widget_positionbottom-rightAll widgetsbottom-right, bottom-left, or inline.
proactive_delay_seconds— (off)All widgets, floating placements onlyAuto-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.

Integrations

Connecting the widget to other systems you already run.

SettingDefaultApplies toDescription
woocommerce_site_url—Support Bot only — plans that include store lookupYour 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.

Behavior

What the bot says, what it avoids, and when it brings in a person. Set on the Behavior tab.

SettingDefaultApplies toDescription
welcome_message—Support BotThe first message visitors see. Leave empty for the built-in greeting.
suggested_questions—Support BotUp to 6 short questions shown as tap-to-ask buttons under the greeting.
tone—Support BotTone of voice for answers, for example friendly or formal.
blocked_topics—Support BotTopics the bot must decline to discuss. The bot is instructed with these; as with any AI, treat it as a strong guideline rather than a guarantee.
handoff_message—Support BotWhat the visitor sees when the bot passes them to your team.
collect_contactonSupport BotShow the name-and-email form when a person is needed.
show_sourcesonSupport BotShow links to the pages the answer came from.
business_hours / away_message— (always online)Support BotDays, hours and time zone your team is available. Outside them the visitor sees the away message instead of an offer to connect.
widget_title, widget_subtitle, avatar_url, launcher_style, widget_size—Support BotThe header text, avatar image (https), launcher as icon or text button, and panel size (compact, normal, large).
retention_dayskeep foreverSupport BotAutomatically delete conversations older than 30, 90, 180 or 365 days. Captured contacts and tickets are not deleted.

Tickets, channels and extras

What happens after the bot can't help, and where else it can answer.

SettingDefaultApplies toDescription
notification_email / slack_webhook_url / crm_webhook_url—Support BotWhere hand-off alerts go: an email address, a Slack incoming webhook, and any URL that accepts a JSON POST (Zapier, Make, your CRM).
Integrations tab—Support BotSend each new ticket to Zendesk, Freshdesk, HubSpot, Jira, Linear, Trello, Asana, ClickUp, monday, Notion, Airtable, GitHub, PagerDuty, Teams, Discord, Telegram, Twilio, Mailchimp or MailerLite. Freshdesk, Jira, HubSpot and Linear are tested with real accounts; the others are in beta. Zendesk works only for older accounts, because Zendesk is removing API tokens. Credentials are encrypted. Tickets go one way, to the tool.
Channels tab—Support BotConnect Telegram (bot token from @BotFather) or SMS/WhatsApp (your own Twilio account), and get the iframe snippet, hosted chat link and QR code.
help_center_enabledoffSupport BotPublishes a searchable help page at /help/<widget id> from your typed articles, taught answers and imported pages. Uploaded files are never published.
speech_enabledoffSupport BotAdds a microphone and read-aloud button to the chat, using the visitor's browser. Hidden where the browser doesn't support it.
Ticket automationoffSupport BotUnder Tickets: rules that set priority, assign or tag new tickets by keyword; a reply-time goal (1 to 168 hours) that flags overdue tickets and emails you; auto-close of solved tickets after 3 to 30 days; and a weekly summary email.

Advanced

Prompt behavior and access control.

SettingDefaultApplies toDescription
system_prompt—All widgetsExtra instructions sent to the AI on every request — your business context, tone, or extraction rules.
widget_languageautoAll 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 widgetsRestrict which domain the widget will load on.
knowledge_base—Support Bot onlyText, URL, and file sources the bot answers from, managed on the widget's Knowledge Base tab (not the Settings tab).

No per-page overrides yet

Settings apply account-wide, not per-page or per-domain (aside from allowed_domain). If you need different branding on different sites, create separate widgets — each has its own settings.

Switch to the support bot that costs less and does more

Bigger names charge more for the same thing and mark up every AI reply. Techvea runs on your own AI key, so you pay your AI provider's price and nothing on top.