Emoji reactions + tooltips
A curated 18-emoji palette tuned from real Discord/Twitch usage. One tap, live broadcast, badge counts on every message. Hover any reaction pill to see who reacted — Slack-style.
Reactions, replies, mentions, polls, AI moderation, themes, webhooks. Real-time chat that feels native — not bolted on.
Every modern chat affordance you'd expect from Discord, Slack, or Twitch — built into the same tag you paste once.
A curated 18-emoji palette tuned from real Discord/Twitch usage. One tap, live broadcast, badge counts on every message. Hover any reaction pill to see who reacted — Slack-style.
Click reply to attach a snippet of the parent. Visitors keep the context; the room doesn't fragment into sub-threads.
Type @username and they get a yellow-ring highlight on the bubble plus a bell with unread count even if they're on another tab.
One click to drop the parent's text into your input as a markdown blockquote. Useful when answering point-by-point.
Five-minute window to fix typos or remove a message. The bubble shows an "(edited)" tag so the conversation stays honest.
Bold, italic, inline code, and > quotes. Just enough formatting to be expressive without becoming a rich-text mess.
Drag, paste, or click to upload. We compress, strip EXIF (privacy), resize, and reject decompression bombs before storage.
Admins create up to 6-option polls right in the room. Live tallies, one-vote-per-visitor, switchable until you close it.
"Alice is typing…" with multi-user roll-up. Throttled server-side so a full room can't generate noise.
Sign in on one tab, you're signed in everywhere. Sign out, every tab follows. No flicker, no orphaned sessions.
Below 480px the chat takes the full viewport, respects safe-area inset, uses 16px input (no iOS zoom), 40px tap targets.
Pick the locale per project; every UI string flows through Django/JS i18n. English & Spanish bundled; add yours via po-files.
Slash commands, custom emotes (with a sub-emote variant), a "LIVE NOW" banner that links to your stream, a rewind for admins, and viewer tips through Stripe. The pieces a streaming community expects, drop-in for any site.
/Familiar to anyone who's used Twitch or Discord: /announce, /poll, /clear, /timeout @user, /help. Admin-gated server-side — no client trickery lets a visitor run them.
Upload your community's emotes, give each a :alias:, and any visitor typing the alias gets it inline. Mark individual emotes members-only so signed-in viewers see them and anonymous visitors see the raw text — a soft sub-emote pattern without forcing a paywall.
Rewind through past chat with a scrubber + activity heatmap. Full-text search inside the window so you can grep "refund" or a username and only see those rows. Last 24h on Starter, 30 days on Basic, unlimited on Pro.
Paste a YouTube, Twitch, or Kick URL into the project and the widget header surfaces a clickable "LIVE NOW" badge. Provider icon auto-detected. Removes the gap between "chat is here" and "stream is there".
Run /announce and your message lands as a highlighted callout — bordered, megaphone-glyphed, broadcast to everyone watching. Survives reloads unlike a one-shot system line.
/timeout @user 10 temporarily mutes someone for ten minutes — then they're back automatically. Lighter than a ban, no DB row, no celery sweep; memcache TTL handles the expiry.
Connect a Stripe account in two minutes and the chat shows a "Tip" button in the header. Visitors pick an amount, pay on Stripe's hosted page, and the tip lands as a highlighted green callout in chat. You see totals + recent senders in your panel. We take 5% (25¢ floor); the rest goes to your connected account.
Layered tools so an active community doesn't turn into a mod sink.
OpenAI's omni-moderation classifies harassment, hate, sexual-minors, self-harm, and violence-graphic. Flagged messages auto-redact to ****.
Comma- or newline-separated list, case-insensitive. The Moderation panel has a live tester so you can see exactly what visitors would see after redaction.
One-click ban from any message bubble. Supports CIDR ranges (192.0.2.0/24) for whole networks.
Set a per-user cooldown (e.g. 30 s between messages). Stops a single visitor from drowning the room.
Hide anonymous login. Only signed-in visitors can post. Great for private launches and paid communities.
Clip a rule, an event, or an announcement to the top of the room. One pin per room, swappable in two clicks.
Give your team their own logins, scoped to a single room or the whole project. Non-destructive permissions; full audit of who edits what.
Soft-delete any message in one click. Optional auto-clean: rooms older than N days self-prune so history doesn't sprawl forever.
Server-side caps on messages, reactions, polls, and uploads — per IP per minute. Bots get throttled before mods even see them.
Any visitor can hide another visitor's messages — persistent across reloads, no admin needed. Lets the room police itself before mods get involved. Discovered organically by every active community we ship to.
Out-of-the-box default that's already nice. Eight presets when you want a quick swap. Theme editor + custom CSS on Basic for total control.
Eight named presets (Midnight, Ocean, Forest, Rose, Sunset, Lavender, Slate, Indigo) plus inline color pickers for the seven theme slots — header, bubbles, borders, text, background.
.chat-body { background: #0a0a0a; border-radius: 12px; }
Full control over every pixel. We sandbox the CSS into the embed iframe and strip </style to prevent injection.
Drop the chat anywhere — bottom-right, bottom-left, side-rail. Set initial open/closed state per page.
Upload your logo (Pillow-validated, EXIF-stripped, compressed). Set the chat title, login button text, "type a message" placeholder.
A subtle background behind the messages. Six built-in patterns (paper, geometric, doodle, bubbles, grid, tropical) or upload your own. Configurable overlay opacity keeps text crisp on top.
A second voice in the room. Five personas — community manager, e-commerce, topic expert, DJ banter, or custom prompt. Daily token cap so the bill stays predictable. Pairs with welcome bot to cover cold-start dead air.
Scripted greeting after N seconds, optional follow-up nudge. Renders as if from the project owner — never persisted as a fake comment.
Daily messages chart, top rooms, top reactions, week-over-week deltas, hour-of-day heatmap. Updates with every page load.
Bundle new activity into a periodic summary email — 10-minute minimum cadence. Never miss a conversation while you're away.
Unread count badge in the toolbar. Click to see who mentioned or replied to you and jump straight to that message.
By default everyone shares one room. Flip a toggle and each URL gets its own thread — perfect for product pages, articles, per-event chats.
"12 online" pill in the toolbar plus a tappable list. Anonymous visitors are aggregated as a count to keep noise down.
setUser, setRoom, on('message'), changeRoom. Read the docs →
Pre-authenticate visitors with your own login. Sign an HS256 token server-side and the chat picks up identity, name, and avatar automatically.
HMAC-signed POSTs on message_posted, mention_received, message_pinned. Pipe into Slack, Discord, Zapier, or your CRM. Webhook docs →
One-click install from the Shopify App Store. Theme follows your storefront. Billed through Shopify, so admins don't need a separate Stripe account.
Download a one-file plugin from your admin panel. Activate, paste your project ID, done. Works with any theme.
/api/login/, /api/message/, /api/thread/. JWT-authenticated, rate-limited, public-API stable.
Real-time chat is rough on infrastructure. We've made this part the boring part.
Multi-region failover, redis-backed pub/sub, gevent socket workers.
Worst-case 200ms cross-continent. Optimistic local rendering means your own messages feel instant.
The 50KB chat client streams from a global CDN. The script tag is async so first paint is unaffected.
EXIF scrubbing on uploads. HMAC-signed webhooks. Hashed sub-admin passwords. CSP frame-ancestors guard.
15-day trial. No credit card. Cancel anytime.