Your integration has two independent choices: chat only or chat + AI, and one shared chat room or one chat room per page. That creates four combinations; if you are unsure, use the first example.
WebTalk 333 is a real-time conversation layer for people to discuss, watch, and build momentum together on the same website. It is not a conventional one-to-one customer-support chat window.
This version is not a customer-support tool: it has no support hotline, agent routing, ticketing system, or customer-service back-office interface. Position it as a many-to-many real-time conversation and shared-engagement tool, not a way for visitors to contact support.
In most cases, paste the complete <script>...</script> from an example below
immediately before </body> on every page where chat should appear. It uses
async, so it does not block page loading.
For “one chat room per page”, put <meta name="webtalk-page-id" ...> inside
<head>, while the <script> still goes immediately before
</body>.
If you are unsure, paste the first example immediately before </body>.
webtalk-chat.js is chat only; webtalk.js is chat + AI. origin creates one shared chat room, while the default meta scope creates one chat room per page.
Use this if you are unsure. It provides one site-wide chat room with AI summaries, page conversations, and @ai.
<script
async
src="https://webtalk-nine.vercel.app/webtalk.js"
data-webtalk-scope="origin"
data-webtalk-ai-endpoint="https://webtalk-nine.vercel.app/api/webtalk/ai"
></script>
One public chat room for the entire site, without AI requests.
<script
async
src="https://webtalk-nine.vercel.app/webtalk-chat.js"
data-webtalk-scope="origin"
></script>
For articles, products, knowledge-base entries, and shared pages. Render a distinct page ID per page.
<meta name="webtalk-page-id" content="{{A stable, unique ID for this page}}" />
<script
async
src="https://webtalk-nine.vercel.app/webtalk-chat.js"
></script>
One chat room per content page with AI summaries, page conversations, and @ai.
<meta name="webtalk-page-id" content="{{A stable, unique ID for this page}}" />
<script
async
src="https://webtalk-nine.vercel.app/webtalk.js"
data-webtalk-ai-endpoint="https://webtalk-nine.vercel.app/api/webtalk/ai"
></script>
data-webtalk-ai-endpoint. Chat-only choices make no AI requests.
On desktop, the chat room sits at the right and can be resized. On mobile, it becomes a half-screen overlay; it does not change your DOM, CSS, or scrolling, and the other half still shows your website.
<script
src="https://webtalk-nine.vercel.app/webtalk-chat.js"
data-webtalk-mobile-placement="bottom"
></script>
bottom (default) keeps the site on top and chat on the bottom. Set top to show chat on
top and your site below.
| Attribute | Values | Purpose |
|---|---|---|
data-webtalk-scope |
meta, origin, path |
Room strategy. meta is the default and safest option. |
data-webtalk-page-id |
Stable page ID | Overrides the webtalk-page-id meta tag; the meta tag is usually preferred. |
data-webtalk-site-id |
Stable string | Optional; the current site origin is used when omitted. Set the same stable value on multiple domains only when they should share a room. |
data-webtalk-room-id |
Any stable string | Specifies the room completely and has highest priority. |
data-webtalk-meta-name |
Meta name | Uses a custom meta tag name for the page ID. |
data-webtalk-auto-mount |
true, false |
Mount immediately after loading, or wait until (for example) sign-in completes. |
data-webtalk-virtual-room |
true, false |
Join cross-site presence; disabled by default. |
data-webtalk-mobile-placement |
bottom, top |
Mobile half-screen overlay location; default bottom. |
data-webtalk-ai-endpoint |
URL | Required only for the hybrid bundle; points to a server-side AI proxy. |
data-webtalk-scope="path". For example, /share/a and /share/a/ use the same chat room.
@ai, page text and
questions are sent to your configured AI endpoint, which calls an LLM provider. Disclose this in your
privacy policy.
When a visitor has the WebTalk Chrome extension installed and your site mounts a WebTalk embed, the extension detects the official widget and stops its own UI and connection. Site owners do not need to add detection code or check for browser extensions.
Visitors without the extension can install WebTalk 333.
meta scope requires
webtalk-page-id. For one site-wide room, explicitly set data-webtalk-scope="origin".
script-src allowlist; the
hybrid bundle also needs its AI endpoint in connect-src.
webtalk.js bundle and that
data-webtalk-ai-endpoint is reachable from your site.
data-webtalk-site-id;
WebTalk automatically uses the current site origin. Only use the same stable site ID on each production domain when one brand needs them to share a room:
<script
async
src="https://webtalk-nine.vercel.app/webtalk-chat.js"
data-webtalk-site-id="my-brand-2026"
data-webtalk-scope="origin"
></script>
For example, use my-brand-2026 on both brand.com and brand.tw. Keep it stable; do not generate a different random value each time.
mount() after sign-in, and call unmount() at sign-out.
<script src="https://webtalk-nine.vercel.app/webtalk-chat.js"
data-webtalk-auto-mount="false"></script>
<script>
// Run after your sign-in flow succeeds.
window.WebTalk.mount({
scope: 'origin',
mobilePlacement: 'bottom'
})
// Run from your sign-out flow.
window.WebTalk.unmount()
</script>
For chat + AI, load webtalk.js and pass aiEndpoint into mount(); an AI endpoint on the script tag is not carried into a manual mount.