The AI chat widget now installs on any website with a single script tag — no React, no build step. Plus a round of chat improvements that apply to every install.
One script tag
Drop this before </body> and the widget is live:
<script async src="https://kookee.dev/chat/latest.js" data-api-key="YOUR_API_KEY"></script>
That is the whole install. It works on plain HTML, Shopify, WordPress, Vue, Angular and anything else that can serve a script tag. The widget renders inside a shadow root, so your page's CSS cannot affect it and its styles cannot leak into your page.
The snippet with your project's API key is ready to copy on the project's AI Chat page in the dashboard. Remember to add your site's domain to the project's Allowed Origins.
Configuration with data attributes
Everything is configurable from the tag itself:
data-api-key— your project API keydata-base-url— API base URLdata-locale— widget languagedata-title— header titledata-greeting— first message shown to the visitordata-placeholder— input placeholderdata-launcher-label— text for the label pill next to the launcherdata-position—bottom-rightorbottom-leftdata-theme—light,darkorautodata-primary-color— accent color
JavaScript API
The script exposes window.KookeeChat for full control:
<script async src="https://kookee.dev/chat/latest.js"></script>
<script>
KookeeChat.init({ apiKey: 'YOUR_API_KEY', hideLauncher: true });
document.querySelector('#support').addEventListener('click', () => KookeeChat.open());
const off = KookeeChat.on('sourceClick', (source) => console.log(source));
</script>
Available methods: init(config), open(), close(), toggle(), sendMessage(text), clearMessages(), on('open' | 'close' | 'sourceClick', cb) — which returns an unsubscribe function — and destroy().
Calling init() yourself also unlocks suggestions, callbacks and a custom launcher button of your own via hideLauncher.
TypeScript definitions
Standalone typings are served next to the script at https://kookee.dev/chat/latest.d.ts, and at https://kookee.dev/consent/latest.d.ts for the consent widget.
Chat improvements
These apply to both the script widget and @kookee/react:
Conversations survive navigation — a chat is kept per browser tab, so moving between pages no longer starts over
New chat — a button in the header starts a fresh conversation whenever the visitor wants one
Close is now minimize — closing the panel keeps the conversation instead of discarding it
Full-height expanded mode — the expanded panel now uses the full height of the window
Launcher label — an optional pill next to the floating button ("Need help?") that opens the chat and can be dismissed
Packages
@kookee/sdk and @kookee/react are released at 1.4.1. React users carry on as before:
import { KookeeChatWidget } from '@kookee/react/chat';
The script tag is for everyone else.
Breaking change
The consent widget script URL changed from /consent/v1.js to /consent/latest.js:
<script async src="https://kookee.dev/consent/latest.js" data-api-key="YOUR_API_KEY"></script>
Update the URL wherever you embed the consent widget.