Make it match your brand

No code neededUpdated July 2026

After this guide, the widget on your website looks like part of your product — your logo, your colors, your welcome copy. You style it in a live editor and every site that already has your widget updates automatically.

Before you start, make sure you have:
A widget on your site — if you haven't set one up yet, follow Add your agent to your website first
Your brand color and a logo image hosted somewhere public (ask whoever runs your website)
Note:
Creating and deleting widgets needs an admin role; members can still open a widget and customize it. Deploying a widget counts against your plan's channel limits — the Free plan is playground-only, so you can't ship a widget until you upgrade.
Open the widget editor

In the dashboard, go to Deploy, open Widgets, and click your widget. You get a split view: settings on the left with Appearance, Content, and Embed tabs, and a live preview of your real widget on the right. Every change shows in the preview immediately — nothing goes live until you click Save Changes.

app.qalyb.ai/channels/widgets/wt_abc123
Screenshot: the widget editor split view with the Appearance tab on the left and a live brand-themed widget preview on the right
The widget editor: settings on the left, a live preview on the right.
Set your colors on the Appearance tab

Pick your Primary Color (used for the launcher, send button, and agent accents) and Accent Color (gradients, the voice orb glow, active states) — type a hex code or use the color picker. Then choose Light, Dark, or Auto theme (Auto follows the visitor's device setting), which corner of the page the widget sits in (bottom right or bottom left), and the Border Radius (0–32px — 0 for sharp square corners, higher for rounder).

Tip:
set the primary color to your brand color and the border radius to match your site's buttons. Those two changes alone make the widget read as native rather than bolted-on.
Add your logo and copy on the Content tab

Paste your Logo URL (a hosted PNG or SVG), set the header Title (defaults to the agent's name) and Subtitle (e.g. "Online now"), and write the Welcome Message — the agent's opening line. You can also style the launcher: a compact icon button or a labeled pill (e.g. "Ask Noura — AI guide"), a launcher icon (Chat, Bot, Sparkles, or Voice), and whether the widget opens by itself when the page loads or waits for a click.

app.qalyb.ai/channels/widgets/wt_abc123
Screenshot: the Content tab of the widget editor showing logo URL, header title and subtitle, welcome message, and launcher style options
The Content tab: logo, header copy, welcome message, and launcher controls.
Check the preview and save

The preview on the right renders your real widget with the unsaved settings — use the refresh or external-link button to open it full-page in a new tab. Happy with it? Click Save Changes.

You're done:
sites that already have your widget update automatically — there's no need to re-paste the embed code just to change colors or copy.
Tip:
if you pick a very light primary color, switch the widget theme to Dark (or vice versa) so the header text and send button stay readable. Check both looks in the preview before saving.

Let Qalyb find your colors for you

You don't have to hunt down hex codes. During agent and widget setup, Qalyb can look at your website and pre-fill a starting brand profile — your site name, logo, primary color, and accent color. It's a best-effort starting point: if nothing useful is found, you simply get Qalyb's defaults and adjust in the editor. It never blocks your setup.

What can — and can't — be changed

You can fully theme everything a visitor reads and touches: colors, corner radius, theme, position, logo, header copy, welcome message, and the launcher.

The Powered by Qalyb footer stays:
the embedded widget always shows a Powered by Qalyb footer — there's no setting to remove it. If your contract needs the badge removed, raise it with your account contact.

Two honest caveats: the launcher, dictation, and file-upload settings only apply to chat widgets — the voice widget shows the full-screen voice orb, which still honors your colors and logo but ignores the chat-bubble launcher settings. And the soundEnabled field exists in the customization schema but has no control in the editor yet.

For developers

Everything in the Appearance and Content tabs is stored as a single customization object on the widget token:

customization.json · json
{
  "theme": "light",
  "position": "bottom-right",
  "primaryColor": "#5C5CF6",
  "accentColor": "#06B6D4",
  "borderRadius": 16,
  "title": "Acme Support",
  "subtitle": "Online now",
  "welcomeMessage": "Marhaba! How can we help?",
  "logo": "https://acme.com/logo.svg",
  "autoOpen": false,
  "launcherVariant": "pill",
  "launcherLabel": "Ask Noura",
  "launcherSubtitle": "AI guide",
  "launcherIcon": "sparkles"
}

Persist it with a PATCH to the widget token — send a partial update and only the keys you include change. Requires the channels:write permission (admin-only). The live embed reads the saved object back, so an API update is reflected on your site without re-pasting the embed snippet:

curl · bash
curl -X PATCH https://api.qalyb.ai/widget-tokens/wt_abc123 \
  -H "Authorization: Bearer sk-live-..." \
  -H "X-Organization-Id: org_abc123" \
  -H "Content-Type: application/json" \
  -d '{
    "customization": {
      "primaryColor": "#5C5CF6",
      "accentColor": "#06B6D4",
      "borderRadius": 16,
      "title": "Acme Support",
      "logo": "https://acme.com/logo.svg"
    }
  }'

The auto-branding helper is GET /branding?url=. It requires the agents:write permission and is intentionally fail-safe: if the URL can't be reached or nothing useful comes back, it returns Qalyb's brand defaults (primaryColor #5C5CF6, accentColor #06B6D4, with siteName/logoUrl as null) rather than erroring. Private, internal, or otherwise non-public URLs are rejected with URL is not allowed.

curl · bash
curl "https://api.qalyb.ai/branding?url=https://acme.com" \
  -H "Authorization: Bearer sk-live-..." \
  -H "X-Organization-Id: org_abc123"

# Response — best-effort; falls back to Qalyb brand defaults on any failure
{
  "siteName": "Acme",
  "logoUrl": "https://acme.com/logo.svg",
  "primaryColor": "#5C5CF6",
  "accentColor": "#06B6D4"
}
Was this guide helpful?