Web chat widget
Guest chat,
on your own site.
One script tag puts a chat bubble on your website. Guests write to you from there, and every conversation lands in the same Prohost inbox as your Airbnb and Vrbo threads โ with your AI answering first.
What the widget does
It is the same guest chat that runs on your Prohost direct-booking site, packaged for any website you control.
Lives on your website
Paste one script tag into your site footer or custom-code area. No plugin, no build step, nothing for you to host.
One inbox for everything
Web chat conversations arrive in the Prohost inbox alongside your OTA threads, so your team answers everything in one place.
Your AI answers first
The same AI that handles your guest messaging replies here too, using your property knowledge โ and hands over to a human when it should.
Install it in three steps
Copy the snippet from your widget settings, paste it into your site, publish.
- Create your widget
Open the AI Chat Widget app in Prohost and set the name, greeting and launcher style your visitors will see.
- Copy your snippet
In the Add to another website section, copy the snippet. It already carries your widget id, embed key and launcher settings.
- Paste it before the closing body tag
Drop it into your site-wide footer or custom-code area and publish. The launcher appears in the corner on the next page load.
Replace WIDGET_ID and WIDGET_API_KEY with the values from your widget settings โ or simply copy the ready-made snippet from the app, which fills them in for you. The embed key is public and scoped to that one widget: it carries no access to your account. Prohost hides the key after it is first shown, so use Rotate key if you need a fresh copyable snippet.
Only the widget id and the embed key are required. Leave the launcher attributes out and the launcher falls back to its own defaults โ the indigo bubble and the chat glyph โ whatever you picked in the app. The panel itself still follows your settings.
Works on most site builders โ Webflow, WordPress, Squarespace and Wix all have a place for custom code in the site footer.
Attribute reference
Every data-* attribute the loader reads. Anything else on the script tag is ignored.
| Attribute | Values | Default | What it does |
|---|---|---|---|
data-widget | Your widget id | Required | Which widget the conversation belongs to. |
data-api-key | Your public embed key | Required | The public embed key for that widget. It is scoped to the widget and carries no account access. |
data-position | bottom-right ยท bottom-left | bottom-right | Which corner the launcher and the chat panel sit in. |
data-launcher-color | Hex colour | #4F46E5 | Fill colour of the launcher bubble. |
data-accent | Hex colour | None | Older name for data-launcher-color. Used only when data-launcher-color is absent. |
data-launcher-icon | chat ยท lettermark | chat | The glyph on the launcher: a chat bubble, or the white Prohost lettermark. |
data-hide-mobile | Presence only | Off | Hides the launcher below 768px. The panel can still be opened from a button of your own โ see below. |
data-sound | on | Widget setting | Switches the reply sound on for this embed, whatever the widget setting says. See below. |
data-hide-mobile is presence-only: any value, including an empty string, switches it on. Every other attribute is matched on its value โ data-sound in particular reacts only to the exact lowercase value on.
How the reply sound works
A short, quiet chime plays in the chat panel when a reply arrives and the visitor is looking somewhere else.
Play sound for guests
The toggle in your widget settings, and the source of truth. It covers this widget everywhere it runs, including your Prohost-hosted direct-booking site. Change it whenever you like โ no code edit needed.
data-sound="on"
An explicit override on the script tag you pasted. It can only ever switch the chime on: there is no off value. It exists so that snippets pasted before the setting shipped keep working, and so you can force the chime on for one specific site.
Either one is enough
The chime plays if the setting is on, or if the attribute carries the exact value on. The snippet the app generates keeps the two in step: it includes the attribute while the setting is on and leaves it out when the setting is off.
To silence the chime everywhere, switch the setting off and re-copy the snippet into your site. An attribute you already pasted keeps overriding the setting โ that is deliberate.
- The visitor has to interact with the page first
Browsers block audio until someone clicks, taps or types. Opening the launcher counts, and so does typing in the panel โ so a visitor who sent the message that produced the reply will hear it. If the browser blocks playback anyway, nothing breaks: the unread badge on the launcher is the main signal and the chime is a bonus.
- It never plays while they are reading
No chime while the panel is open and the tab is in the foreground โ the reply is already on screen. It plays when the panel is closed, or when the tab is in the background. The unread badge follows a slightly narrower rule: it only ever appears while the panel is closed.
- A burst of replies is one chime
Several messages arriving together produce a single cue, not one per message.
Drive it from your own page
The loader exposes a small event bus on window.ProhostWebchat, so your site can open the panel and react to what happens inside it.
webchat_session_startedThe conversation now exists โ the visitor sent their first message. Its payload carries the conversationId.webchat_message_sentThe visitor sent a message.webchat_host_messageA reply from your team or your AI arrived. This drives the unread badge and, when enabled, the chime.Useful together with data-hide-mobile: hide the default launcher on phones and open the panel from a button of your own instead. Events are relayed only when they come from the Prohost embed, never from any other origin.
Manage it from the app
Name, greeting, panel accent and the reply sound live in the AI Chat Widget app, and every site running your widget picks up changes to them on its own. Launcher colour and icon are different: they sit in the snippet, so re-copy it after changing those โ same as after rotating your embed key.