Skip to content

Public page and Widget

SquadOS offers two Web Chat channels that do not require sign-in:

  • Public page — a link at https://app.squados.io/a/<address> that you share;
  • Widget — a bubble installed on your site with a code snippet.

Both are organization inboxes. You create, edit, pause, and delete each one under Inboxes. They are not the Hub, which serves signed-in organization members and does not need an inbox.

Public pageWidget
Normal accessAnyone with the linkVisitors from an allowed domain
FormatFull-page chatBubble that opens chat over the site
AddressChosen by you and editableGenerated on creation and fixed
Configurable appearanceNoBubble icon, color, and side
Dedicated daily quotaNoOptional, for AI-handled turns

You need permission to edit inboxes and agents.

  1. Open Inboxes and select Connect inbox.
  2. Under Other channels, choose Public page or Widget.
  3. Under Who handles this inbox?, choose an agent or Human support, then name the inbox.
  4. Configure the channel as described below and finish the wizard.

The inbox is created only when you finish the flow. With a human destination, new messages enter the team queue and the page tells visitors that a person will reply. With an agent, it must be active for the channel to remain available. Service hours can switch destinations after creation; see Inboxes.

  • Page address — use 3 to 64 characters: lowercase letters, numbers, and hyphens. The form normalizes its suggested name and checks whether the address already exists before saving.
  • Welcome message (optional) — appears in the chat before the visitor’s first message.
  • Allow file uploads — enables files and images when the inbox has an agent. The control is unavailable for agentless human support. The audio button also depends on the agent’s multimodal configuration.

The final link is https://app.squados.io/a/<address>. After creating the inbox, use Actions → Open page to test or Actions → Copy link to share it.

Changing the address breaks the old link. SquadOS warns you when editing an inbox that already has conversations; anyone opening the previous URL will see that the page is unavailable.

  1. Open the link in a browser without a session and send a real message.
  2. Confirm that the response and welcome message clearly state the scope of service.
  3. Test the human path if the schedule can transfer conversations to the team.
  4. Review guardrails and tools that send email, change data, or execute transactions. Anyone with the link can start a conversation.
  5. Monitor the first interactions under Conversations.

Enter at least one domain before finishing:

  • example.com allows that host only;
  • *.example.com allows subdomains such as www.example.com and store.example.com, but not the apex domain;
  • Allow any domain removes the list requirement and should be used only for a controlled test.

Do not include a protocol, path, or port. For local development, add localhost or 127.0.0.1 explicitly; production does not allow them automatically.

The loader requests the configuration before drawing the bubble and does not mount it when the domain is not allowed. This list reduces unauthorized installation, but does not replace authentication or guardrails: Web Chat remains an anonymous channel. Do not expose sensitive data or actions based only on the source domain.

  • Bubble icon — choose from six icons.
  • Accent color — use a suggested or custom color; it colors the bubble and chat accents.
  • Bubble position — bottom right by default, or bottom left.
  • Welcome message — appears when the visitor opens the chat.
  • Daily credit quota — an optional limit that rejects new AI turns after it is reached and starts counting again the next day. Current metering adds usage from every widget linked to the same agent, not just this inbox. Human-only inboxes do not run AI and do not use this quota.
  • Allow file uploads — follows the same rule as the Public page: it requires an agent; audio also depends on that agent’s multimodal configuration.

In addition to the quota, both anonymous channels have automatic per-visitor and per-conversation limits. They reduce abuse, but do not make unrestricted tools safe for a public agent.

After creating the inbox, select Actions → Copy install code. The code has this format:

<!-- SquadOS Widget — My inbox -->
<script async src="https://app.squados.io/widget.js" data-agent="my-inbox-4a5d8010"></script>

Paste it before </body> on every allowed page. data-agent contains the inbox address, generated from its name plus a random suffix. It cannot be edited because it is the reference used by snippets already installed.

To test the chat screen by itself, open https://app.squados.io/embed/<address>. This technical address does not test whether your site’s domain is on the list: also validate the snippet on the page where it will be published.

Without an additional integration, the conversation is anonymous. If your site already knows the visitor, send structured data after the snippet:

window.SquadOS.identify({
name: "Maria Silva",
email: "maria@company.com",
external_id: "usr_8231",
metadata: { plan: "pro", company: "Acme" },
});
FieldEffect
nameUpdates the name shown under Conversations; by itself, it does not create an identified contact.
external_idPreferred stable identity for creating or linking the contact in the organization.
emailAlternative identity when external_id is not sent.
metadataText, number, or boolean pairs stored on the contact; they are not inserted into the agent prompt automatically.

You can call identify() before or after opening the bubble and call it again when sign-in changes. If you need to call it before the async file loads, create the queue first:

<script>
window.SquadOS = window.SquadOS || {
q: [],
identify: function () { this.q.push(arguments); }
};
window.SquadOS.identify({ name: "Maria Silva", external_id: "usr_8231" });
</script>
<script async src="https://app.squados.io/widget.js" data-agent="my-inbox-4a5d8010"></script>

These values come from the browser and are not proof of identity. Do not use identify() to authorize access, reveal confidential information, or execute sensitive actions.

The browser stores a reference and secret token per inbox so it can resume the conversation and load up to 200 history messages after a reload. Clearing browser data or choosing New conversation on the Public page starts another interaction. Do not share or try to reuse internal IDs or tokens.

Under Inboxes → Edit, you can change the name, message, attachments, appearance, domains, quota, service hours, and advanced options. You can also change the address of a Public page; a Widget address remains fixed.

  • Turn off Page is live or Widget live to stop access without deleting history.
  • Use Delete inbox only for permanent removal. The generic menu may mention “disconnect,” but Public page and Widget are paused with their live controls.

If the page or bubble does not respond, check these items in order: live inbox, active agent or valid human destination, allowed Widget domain, balance/credits, daily quota, and browser errors. For a Widget, test the snippet on the actual domain; opening /embed/ alone does not validate the installation.