floors.js Documentation
Configure everything from your dashboard.
Docs
Customize your widget
Configure everything easily from your dashboard.
Setup
data-key
Required Your site identifier. Scopes all visitors and rooms to your site.
data-key="flr_..."
data-name
default: page <title>
Display name shown in the widget header.
data-name="My Product"
data-open
default: "false"
Open the widget panel automatically on page load.
data-open="true"
data-owner-always
default: "false"
Always show the owner's avatar in the home room, even when the owner is offline or in another room.
data-owner-always="true"
Rooms
data-pages
default: auto-detect
Comma-separated list of pages that show a visible door in the 3D scene. The widget works on every page regardless — this controls which rooms have a door to keep the scene clean. Auto-detected from your <nav> if omitted. Use
as to rename: /ugly-path as Pretty Name. Up to 10 rooms.data-pages="/,/about,/pricing"
data-exclude
default: none
Comma-separated paths to hide the widget on. Supports wildcards (*). Widget disconnects on these pages.
data-exclude="/login,/signup,/app/*"
Appearance
data-accent
default: "#6366f1"
Custom accent color for the widget UI. Match it to your brand.
data-accent="#FF6B00"
data-theme
default: "dark"
Default color theme for the widget. Visitors who toggle the theme manually keep their preference via localStorage.
data-theme="light"
data-theme-toggle
default: "false"
Show a sun/moon toggle in the widget header so visitors can switch between light and dark mode.
data-theme-toggle="true"
Chat
data-pinned-message
default: none
A message pinned at the top of the chat. Use a JSON map for per-room messages.
data-pinned-message="Hey, ask me anything!"
data-pinned-message='{"*":"Welcome!","/pricing":"Check our plans!"}'
data-room-chat
default: "false"
Scope chat messages to the current room. When enabled, visitors only see messages sent from the same page. By default, chat is shared across all rooms.
data-room-chat="true"
data-no-links
default: "true"
Block messages containing URLs or links in the chat. Prevents spam and self-promotion. Set to "false" to allow links.
data-no-links="false"
data-no-promo
default: "true"
Block promotional messages (buy, discount, promo, subscribe, follow me…) from the chat. Set to "false" to allow promo.
data-no-promo="false"
data-auto-reply-keyword
data-auto-reply-message
default: none
Auto-reply whisper triggered when a visitor types an exact keyword (case-sensitive). Only the visitor who typed it sees the reply. Use both attributes together.
data-auto-reply-keyword="DISCOUNT"
data-auto-reply-message="Here's your code: CHAT25"
Visitors
data-allow-rename
default: "false"
Allow visitors to change their display name after entering. Disabled by default — set to "true" to let visitors rename themselves.
data-allow-rename="true"
data-private
default: "false"
Private mode — visitors are isolated from each other. Each visitor only sees the owner. Visitor messages are only visible to the owner. Owner messages are broadcast to all visitors. Ideal for support or helpdesk use cases.
data-private="true"
Discord notifications
Get pinged on Discord when a visitor sends a message on your site.
1
After your payment, you'll receive an email with a private link to your Dashboard.
2
Click the link, go to Settings, paste your Discord webhook URL, and hit Save. Done.
Your webhook URL never leaves our server. Visitors and anyone viewing your site's source code cannot see it. Notifications are rate-limited to one per minute per site.
Telegram bot
Reply to your visitors directly from Telegram. All chat messages are forwarded to your Telegram chat, and your replies appear in the widget in real time.
1
Create a bot with @BotFather on Telegram and copy the bot token.
2
Open your Dashboard, go to Settings, paste the bot token and chat ID, then hit Connect.
3
Reply to any forwarded message in Telegram — your answer appears instantly in the widget chat.
Supports direct chats and group topics. You can use the same bot across multiple sites by mapping each site to a different topic in a Telegram group. Or create one Bot / Topic.
Widget not showing up?
Check your browser console. If you see a
Content-Security-Policy error, your site blocks external scripts. Add floorsjs.com to your CSP:
script-src ... https://floorsjs.comconnect-src ... https://floorsjs.com wss://server.floorsjs.com Using Cloudflare? Check your security settings — Cloudflare may block inline scripts or WebSocket connections. Whitelist the domains above.