SquadOS has two channels where anyone can chat without signing in: the Public page (an address you share) and the Widget (a chat bubble on your own site). Both are inboxes — you connect, edit, and pause them on the Inboxes screen, just like any other channel.
Public page
Widget
How visitors reach it
A link you share
A bubble on your site
Appearance
Full screen at app.squados.io/a/<address>
Floating bubble in the page corner
Address
You choose it, and can change it
Generated automatically and fixed
Who can use it
Anyone with the link
Only the domains you allow
Spending limit
No dedicated quota
Optional daily credit quota
The Hub is a different thing: it’s where members of your organization chat with agents while signed in. It needs no inbox at all — every active agent already shows up there.
The path is the same for both. Under Inboxes, click Connect inbox and pick the channel under Other channels:
Next you say who handles it — an agent in your organization, or human support — and finally you configure the channel. The wizard is covered in detail under Inboxes.
Creates an address at https://app.squados.io/a/<address> that anyone can open to chat full screen, without signing in.
Page address — lowercase letters, numbers, and hyphens, at least 3 characters. It’s the last part of the link, and SquadOS tells you right away if it’s already taken.
Welcome message (optional) — shown before the first message from whoever opens the page.
Changing the address later breaks the old link. Anyone who already has the URL lands on a not-found page. The screen warns you when you edit an inbox that already has conversations.
Once the inbox exists, the row’s Actions menu offers Open page and Copy link.
A <script> snippet you paste into your site that renders a floating chat bubble. Visitors click, chat, and close without leaving your page.
Allowed domains is the only required field. Type the domain and click Add; use *.example.com to include every subdomain. The loader compares the page’s domain against that list and only draws the bubble on an authorized site — that’s what stops another site from embedding your widget and burning your credits.
To test quickly, turn on Allow any domain. Turn it back off when you’re done.
Everything else is optional:
Appearance — the bubble icon (six options) and the accent color, which tints both the bubble and the chat. A custom color is accepted.
Bubble position — bottom right (default) or bottom left.
Initial greeting — the first message the visitor sees when opening the widget.
Daily credit quota — once reached, the widget shows “limit reached” until the next day.
Paste it before </body> on every page where the bubble should appear. The loader handles the rest.
The identifier in data-agent is the widget inbox address, generated from the name when the inbox is created — you neither type nor edit it. It’s fixed on purpose: changing it would invalidate every snippet already pasted on customer sites. (The public page is the opposite: there the address is the product, and you choose it.)
To see the chat without embedding it anywhere, open https://app.squados.io/embed/<address> — that page works regardless of the domain list.
By default every widget conversation is anonymous and shows up under Conversations as an external contact. If your site already knows who the visitor is (login, form, CRM), pass that identity with window.SquadOS.identify():
Call it any time after the snippet — before or after the visitor opens the chat. SquadOS stores the value and applies it as soon as the widget finishes loading; later calls (the visitor logs in mid-session, say) update the identity of the ongoing conversation.
Field
Effect
name
Becomes the name shown under Conversations, instead of the external contact.
email or external_id
Creates or links a contact in your organization — searchable and reused in that visitor’s next conversations. If both are sent, external_id wins — use it when your system already has a stable ID, which is more reliable than an email address.
metadata
Free-form pairs (text, number, or boolean) stored alongside the contact. They don’t appear in the conversation and the agent never reads them.
Sending only name changes the displayed name without creating a contact. Not calling identify() keeps everything anonymous.
Need to call it before the script loads? Create a stub that queues the call until the loader takes over:
The loader drains that queue as soon as it loads — no call is lost.
The data comes from the visitor’s browser, so SquadOS does not verify it. Don’t use identify() for anything fraud-sensitive: at worst someone forges a value, and the effect is one incorrect record on your own contact.