This page loads the deployed bundle from the same host it is served from, so it shows exactly what an agency's visitors get.
Widget: ./embed.js — the bundle deployed next to this page
Backend: https://chat-ai.waavo.com
Tenant: waavodemolt.waavo.com
<script
id="waavo-chat-embed"
src="https://chat-widget.waavo.com/embed.js"
data-host="waavodemolt.waavo.com"
data-language="lt"
async
></script>
id * |
Must be waavo-chat-embed — it is how the script finds itself when a tag manager injects it.
|
data-host * |
The agency's API host, without a protocol — the same value the other waavo widgets take. Our backend reads
destinations, airports and offers from it on the widget's behalf (sent as
X-Meta-Base). The agency identifier sent as X-Agency is derived from its first
label, so waavodemolt.waavo.com yields waavodemolt.
|
data-language |
lt, en, ru, lv or ee. Defaults to
lt, and is independent of the host page's language — which is why this page reads in English
while the widget speaks Lithuanian.
|
* required — without it embed.js throws and does nothing.
data-api, data-meta-base and data-agency
still override the derived values. They are for pointing the widget at a local backend or a tenant whose host
does not follow the convention — an agency never needs them.
Fifteen questions, answered by tapping. Free text is typed in four places only: extra wishes, name, email and phone. Naming a specific hotel skips three steps, and the progress bar reflects that straight away.
The language switcher shows only what the agency has enabled in its own system — this tenant has Lithuanian alone.
The hash in embed.js tells you which build is serving:
curl -s https://chat-widget.waavo.com/embed.js \
| grep -oE "widget\.[A-Za-z0-9_-]+\.js"
npm run build && ls dist/widget.*.js
Matching hashes mean production has the code you have locally. This page is serving
….