Add BotNotice to your website
It takes about five minutes and no coding. You paste one line of code into your website, and the notice appears next to the chat you already use. Nothing about your chat changes.
- Copy your snippet. It’s one line of code on your site’s page in the dashboard.
- Paste it into your website. Most website builders have a place for this; choose yours below.
- Check it’s working. The notice appears beside your chat.
Your step-by-step guide
Choose your website builder and chat. Your real snippet, with your site key, is in your dashboard; the one below is an example.
- Copy your snippet.
<script src="https://botnotice.app/w/YOUR_SITE_KEY.js" async></script>
- Choose where your website is built above, and the steps for it appear here.
- Check it’s working. Open your website in a private window and wait for your chat button. The notice appears beside it.
BotNotice looks for common chat buttons on its own and shows the notice beside yours.
Built your own chat, use a voice agent, or have a developer helping? See the developer guide.
Chats BotNotice recognizes on its own
If your chat is one of these, installing the snippet is all you do.
Developer guide: custom chat, handoffs to people, voice agents and the content API
Custom chatbots
Once the snippet loads, these calls are on window.BotNotice.
// Show the notice when your chat window opens
BotNotice.disclose();
// Utah requires an honest answer when someone asks if they're talking to a bot
if (BotNotice.isAskingIfHuman(userMessage)) {
reply(BotNotice.disclosureText());
}
// Apply the stricter timer for minors in this browser
BotNotice.setMinor(true);
// Forget the visitor's acknowledgement (for testing)
BotNotice.reset();Handoffs between AI and people
The rules cover the AI part of a conversation. When a person takes over, reminders pause; when the chat goes back to AI, the notice shows again.
BotNotice.handoff('human', { name: 'Maria' }); // logs it and shows "You're now chatting with Maria, a real person"
BotNotice.handoff('ai'); // logs it and shows the AI notice again
BotNotice.handoff('human', { name: 'Maria', notify: false }); // log only, no message
BotNotice.mode(); // 'ai' or 'human'
// Tie records to your chat platform's conversation id, so a complaint can be matched to its disclosures.
// The notice numbers each browser session on its own; your id becomes the conversation id when set before
// the first notice, and is attached to it when set later. Either id finds the whole conversation.
BotNotice.setSession(conversationId);Voice agents and server-side bots
No web page? Send each disclosure from your voice platform, workflow tool or backend. For phone agents there is a fuller path: the voice policy endpoint and a webhook that understands Retell and Vapi, set up from your site's Voice page.
POST https://botnotice.app/api/log
Content-Type: text/plain
{"k":"YOUR_SITE_KEY","e":"voice_disclosed","p":"call:abc123","s":"call:abc123","c":"voice","m":{"system":"retell","call_id":"abc123"}}
// events: shown, ack, redisclosed, manual, session, voice_disclosed, handoff_human, handoff_ai
// "s" is your conversation or call id (optional, recommended)
// "c" is the channel, chat or voice (optional; voice_disclosed is voice on its own)
// "m" is up to 12 short text values kept with the record, such as the AI system in use (optional)AI images and video
On plans with the content register, send files as they’re created or uploaded. Your token is on your site’s Content page.
POST https://botnotice.app/api/ingest/content
Authorization: Bearer bni_...
Content-Type: application/json
{"url":"https://example.com/uploads/hero.png", "page":"https://example.com/",
"force":true, "tool":"Midjourney", "depicts_real":false, "is_ad":false}
// url: a media file (its provenance is read) or a page (every file on it is checked)
// urls: [...] sends up to 20 at onceStuck? Email support@botnotice.app with your website address and which builder and chat you use. Not sure which laws apply to you?
