Widget Appearance & Channels
The SendSeven website widget — both the live-chat / support widget and the newsletter widget — is configured through a set of fields stored in the widget's config. You edit them in the widget editor (Settings → Widgets); if you manage widgets through the API, they are the keys inside the widget config object.
This guide is a reference for the appearance and layout options, the visitor-facing size control, the agent-type transparency indicator, the reactions toggle, and how RCS appears as a widget channel.
For the widget's messaging capabilities (media support, buttons, handoff) see the Live Chat guide. For attaching a bot see Deploy a Bot to a Widget.
All of the fields below are optional and default to the widget's previous behavior. Existing embeds are unaffected — you do not need to change your embed snippet or re-save a widget to keep it working exactly as it does today. Adopt these options only when you want the new behavior.
Appearance & layout options
| Field | Type | Allowed values | Default | Effect |
|---|---|---|---|---|
bubbleLayout | string | classic, panel | classic | Container style. classic is the floating rounded panel anchored in the page corner (today's behavior). panel docks the widget as a sticky, full-height side panel. |
cardLayout | string | legacy, inline, hero, grid | legacy | How card content is rendered inside the widget. legacy is today's rendering; inline, hero, and grid are alternative card presentations. |
cornerRadius | number | 0–40 (px) | 12 | Border radius of the widget panel, in pixels. 0 gives square corners; higher values round them more. |
defaultSize | string | compact, tall, full | tall | The size the widget opens at on desktop. See Size presets below. |
showAgentType | boolean | true, false | true | Show the agent-type indicator in the widget header. See Agent-type indicator. |
allowReactions | boolean | true, false | true | Whether visitors can react to messages. See Message reactions & replies. |
Size presets & the visitor resize control
defaultSize sets how large the widget opens on desktop:
| Preset | Approximate size | Notes |
|---|---|---|
compact | 340 × 480 px | A small, unobtrusive panel. |
tall | 380 px × ~70% of viewport height | The default — a comfortable reading height. |
full | 400 px × full viewport height | Maximum vertical space. |
The visitor can cycle between these sizes at any time using a resize control in the widget header. Their choice is remembered in the browser's localStorage and restored on their next visit, so a returning visitor sees the size they last chose rather than the configured default.
On mobile devices the widget always opens full-screen, regardless of defaultSize. The size presets and the resize control apply on desktop only.
Agent-type transparency indicator
When showAgentType is true (the default), the widget header tells the visitor who they are talking to:
- AI Agent — an AI assistant is answering.
- Automation — an automation/flow is handling the conversation.
- Human — a member of your team has taken over.
This is a transparency indicator: it makes automated conversation partners clearly identifiable to the visitor, in line with the transparency expectations of the EU AI Act. The label updates live — for example, when a bot escalates and a teammate takes over, the header switches from AI Agent to Human without a page reload.
Set showAgentType to false to hide the indicator.
Message reactions & replies
allowReactions controls the React button on individual messages inside the widget:
true(default) — visitors can add an emoji reaction to a message.false— the React button is hidden.
This toggle gates reactions only. Reply (replying to a specific message) is always available and is not affected by allowReactions.
Creating widgets from the preset gallery
New workspaces no longer start with an auto-created default widget. Instead, you create the widgets you need from a preset gallery in the widget editor — pick a starting preset (for example a support bubble or a newsletter signup) and customize it with the options above. Existing widgets are unchanged.
RCS as a widget channel
The widget can offer RCS (Rich Communication Services) as a channel, alongside WhatsApp, Telegram, Messenger, Instagram, Email and SMS. RCS is offered only when your workspace has an active RCS channel, and whether it appears for support, for newsletter opt-in, or both is driven by the RCS agent's declared use case.
For RCS as a full messaging channel (capabilities, sending, delivery model), see the RCS channel guide.
Why RCS is different from other channels
Every other messenger channel has a public click-to-chat URL — WhatsApp's wa.me, Telegram's t.me, Messenger's m.me. RCS has none. The officially supported website/QR entry point for an RCS business agent is an sms: deep link that carries the agent's messaging service id, which has the form {agent_id}@rbm.goog.
Tapping the link opens the visitor's default messaging app. On a device that is RCS-capable and whose carrier has your agent launched, it upgrades to a branded RCS conversation with your agent. Otherwise it opens plain SMS (when a fallback number is configured) or shows the messaging app's built-in error.
There are two deep-link formats:
| Format | Shape | When it is used |
|---|---|---|
| Service id only | sms:{service_id}?body={message} | No SMS fallback configured. On a non-RCS device this shows the messaging app's error. |
| With SMS fallback | sms:+{fallback}?service_id={service_id}&body={message} | A fallback number is configured. On a non-RCS device the message is sent as a plain SMS to that number. |
The @ in the service id must be percent-encoded in the URL so the phone's URI parser does not read it as an address separator.
Support widget: supportSignupOptions.rcs
On a support widget, RCS appears under supportSignupOptions.rcs. The sms: deep link is pre-built on the server (with a default "Hi, I need help!" message), because a support entry point has no per-visitor list choice:
{
"supportSignupOptions": {
"rcs": {
"direct_link": "sms:sendseven_x_agent%40rbm.goog?body=Hi%2C%20I%20need%20help%21",
"qr_code_base64": "data:image/png;base64,iVBORw0KGgo...",
"launched": true
}
}
}
| Field | Type | Description |
|---|---|---|
direct_link | string | The ready-to-use sms: deep link. |
qr_code_base64 | string | A QR code for the same link, as a base64-encoded PNG data URI — ideal for print or on-screen scanning. |
launched | boolean | Advisory only — see The launched flag. |
Newsletter widget: availableChannels.rcs
On a newsletter widget, RCS appears under availableChannels.rcs. Here the deep link is built on the client, because the opt-in message depends on which list(s) the visitor is subscribing to (the body is start {slug1}_{slug2}, exactly like the WhatsApp newsletter opt-in). The widget receives the pieces it needs to assemble the link:
{
"availableChannels": {
"rcs": {
"service_id": "[email protected]",
"fallback_number": null,
"launched": true
}
}
}
| Field | Type | Description |
|---|---|---|
service_id | string | The RCS agent's messaging service id ({agent_id}@rbm.goog). The widget uses it to build the sms: link client-side. |
fallback_number | string | null | An optional SMS-capable fallback number. When null, the widget emits the service-id-only format; when present, it emits the SMS-fallback format so non-RCS devices still reach you by SMS. |
launched | boolean | Advisory only — see below. |
The launched flag is advisory
launched reflects whether the RCS agent is launched on at least one carrier. It is advisory only — it does not remove the RCS option. The channel/chip still shows even when launched is false, so you can surface RCS to visitors before carrier launch is complete. Use the flag if you want to decide, in your own front-end, whether to present RCS publicly yet.
Next Steps
- Live Chat Widget — widget messaging capabilities and responding to conversations
- Deploy a Bot to a Widget — attach an AI Assistant to a widget
- RCS Business Messaging — RCS as a full messaging channel
- Getting Subscribers & Opt-Ins — how newsletter opt-in works across channels