Appearance
Everything under Widget appearance in the dashboard. The live preview updates as you change values; nothing is applied to your site until you save.
The preview
Everything on this page renders into the preview above it as you type — colours, font, logo, wording, and the greeting and pre-chat form when those are enabled.
Turning on Ask before chatting splits it in two: Conversation on the left and Before the chat starts on the right, so your message styling stays visible while you write the form. On a narrow screen the two stack.
It is a close approximation, not the widget itself. Test placement and anything CSS-driven on a real page — see Preview accuracy.
Identity
| Setting | Default | Notes |
|---|---|---|
| Assistant name | Minaya | Shown in the header and used in the default greeting. Paid plans. |
| Logo URL | Minaya mark | Any public image URL. Paid plans. |
| Welcome message | Hi, I am Minaya your AI assistant… | First message a visitor sees. Names the assistant automatically. |
Renaming the assistant also changes the default greeting, so it never introduces itself under the wrong name.
Theme
Minaya keeps two palettes — one light, one dark. You do not have to fill in both: pick a preset or your brand colour and every other value is derived for you, in both palettes.
Presets and brand colour
Six presets are shown as miniature widgets, so you are choosing a look rather than a name. Below them, Or use your brand colour takes a single colour and matches the rest to it:
- Header text flips to black or white, whichever is readable.
- The reply bubble picks up a light tint of your brand rather than staying neutral grey.
- For the dark palette, a brand colour too dark to read against a near-black panel is lightened until it does.
Every derived pair clears the WCAG AA contrast threshold of 4.5:1, so a theme you never touch again is still legible.
Fine-tuning
Fine-tune individual colours opens the full set. Each one is optional — anything left alone keeps its derived value.
| Setting | Applies to |
|---|---|
| Brand colour | Header bar, visitor bubbles, send button, launcher |
| Header text | Assistant name and icons on the top bar |
| Chat window | Background behind the conversation |
| Reply background | Behind each assistant message |
| Reply text | Text inside assistant replies |
| Visitor message text | Text in the visitor's own bubbles |
| Placeholder text | The “Type a message” hint and other chrome |
If a pair you set by hand drops below 4.5:1, the dashboard flags it inline with the measured ratio. It is a warning, not a block — you can save it if the contrast is deliberate.
Matching the page’s theme
Match the page’s theme makes the widget follow whatever the surrounding site is showing. It checks, in order:
- A theme signal on
<html>or<body>— adark,dark-mode,theme-darkclass, or adata-theme,data-color-scheme,data-modeordata-bs-themeattribute. - Otherwise the visitor’s operating system setting, via
prefers-color-scheme.
This matters because prefers-color-scheme only reports the operating system. A site with its own light/dark switch can be dark while the OS is light, and a widget relying on the media query alone would stay light on a dark page.
The widget watches for changes, so clicking your site’s own theme toggle repaints the widget immediately — no reload.
What Minaya looks at
You do not need to restate your colours anywhere. Both palettes come from the dashboard; detection only decides which of the two to show. Minaya checks, in order:
- A theme signal on
<html>or<body>— adark,dark-mode,theme-dark,is-darkornightclass, or adata-theme,data-color-scheme,data-modeordata-bs-themeattribute. - The page’s actual background colour. If no signal is published, Minaya reads what the page is really painting and matches it. This works whatever the mechanism — a class we do not recognise, a wrapper element, CSS variables, or inline styles.
- The operating system, via
prefers-color-scheme, when the page gives nothing to go on.
Changes are watched, so clicking your site’s own toggle repaints the widget immediately — no reload.
WordPress
Minaya recognises the signals these plugins and themes publish, so dark mode works with no configuration:
| Plugin or theme | Signal |
|---|---|
| WP Dark Mode | data-wp-dark-mode-active and .wp-dark-mode-active on <html> |
| Darklup / Darklup Lite | .darkluplite-dark-mode-enabled on <html> |
| Droit Dark Mode | .drdt-dark-mode on <html> |
| Blocksy | data-color-mode on <html> |
| Astra | .astra-dark-mode-enable on <html> or <body> |
WP Dark Mode and Droit also fire their own events when the visitor toggles, which Minaya listens for — so the widget repaints instantly rather than waiting to notice a class change.
Block themes
Block themes — Twenty Twenty-Four, Twenty Twenty-Five and other full site editing themes — are the important case. Switching to a dark style variation such as Midnight changes only CSS custom property values; the <body> class list is byte-identical. There is nothing to sniff.
This is why Minaya reads the page’s rendered background rather than relying on classes alone. A block theme in a dark variation is detected correctly even though it publishes no signal at all.
Colour inversion
Dark-mode plugins invert colours across the whole page. Minaya already themes itself, so a second inversion would undo your palette — the widget carries each plugin’s opt-out class (wp-dark-mode-ignore and equivalents) so it is left alone. Nothing to configure.
One thing to know: page builders are a different matter. Elementor’s dark mode applies to its editor interface, not the published page, and Divi has no built-in frontend dark mode — so neither changes what your visitors see.
Telling Minaya directly
If your site themes itself in some way none of the above catches, fire an event and Minaya will follow it:
// Force a palette.
window.dispatchEvent(
new CustomEvent("minaya:theme", { detail: { theme: "dark" } })
);
// Or just ask Minaya to re-check the page.
window.dispatchEvent(new CustomEvent("minaya:theme"));With jQuery, $(window).trigger() does not reach native listeners — dispatch the event as above.
Placement and behaviour
- Position — bottom-left or bottom-right.
- Open automatically — opens the panel on page load instead of waiting for a click. Off by default. Auto-opens still count as widget opens in analytics.
Spacing from the screen edge is set in CSS rather than a form field — see Custom CSS.
Minimising
A chevron in the widget header collapses the panel back to the launcher. It minimises rather than closes: the conversation is kept, and reopening restores it exactly where the visitor left off. Clicking the launcher does the same thing.
Greeting bubble
A short prompt above the launcher, shown before the widget is opened — “Hey there, how can I help you today?” by default. Clicking it opens the chat.
Turn it on under Placement and write your own text. It follows your theme, so it reads correctly in light and dark, and it can be set per language under Languages.
Three behaviours worth knowing:
- Shown once per visit. Dismissing it, or opening the chat, keeps it away for the rest of the session — it does not reappear on every page.
- Hidden on phones, where a bubble beside the launcher would cover the page.
- Not shown when the widget opens automatically, since the panel is already there.
Asking before chatting
Some teams want a name and email before the conversation begins. Turn on Ask before chatting under Placement and the widget shows a short form when a visitor first opens it.
The heading and message are yours to write. Require an email decides whether the form blocks the conversation or merely offers itself — with it off, visitors get a Skip button and can start chatting straight away.
A visitor is only asked once. A returning session already carries their details, so the form does not reappear.
What they enter is stored against the conversation and shown in your dashboard alongside the transcript. If the form fails to submit for any reason, the visitor is let through rather than blocked — their details are a convenience for you, not a condition of getting help.
Branding
Widgets on the free plan carry a small Powered by Minaya link beneath the composer. It follows your colours and sits at low contrast, so it reads as a credit rather than an advertisement.
Any paid plan removes it. There is no setting for this — it is tied to your plan, so upgrading takes it away and nothing needs configuring.
Font
Choose System default to inherit your site's font, or pick a Google Font (Poppins, Roboto, Open Sans, Lato, Montserrat, Inter). Inheriting usually looks most native.
Fallback message
Shown when Minaya cannot answer. See Answer quality for how to write a good one.