# Updates (/docs/agents/chat-widget/updates)

> For the complete documentation index, see [llms.txt](https://docs.tandemcx.ai/llms.txt). Any page on this site can be fetched as Markdown by appending `.md` to its URL.

An update is a short post your visitors can read in the chat panel: a new feature, a
price change, a planned outage. Turning the tab on adds a second section to the panel
alongside the conversation, and a dot appears on it until a visitor has read the newest
post.

Updates belong to your organization, not to one widget. You write a post once on
**Web Chat → Updates**, and by default every widget with the tab switched on shows it. If a
post only belongs on some of your widgets, its **Audience** narrows it — see
[Choosing which widgets show a post](#choosing-which-widgets-show-a-post).

## Writing an update

**Web Chat → Updates → Add Update** asks for a title, then opens the editor. Everything
else is optional:

- **Title** — the headline on the card and at the top of the post. Up to 120 characters.
- **Summary** — the excerpt under the title on the card. Up to 300 characters. It is
  written rather than taken from the first paragraph, because the card is all most
  visitors read.
- **Update** — the post itself, in a rich-text editor. Headings, bold, italics, bulleted
  and numbered lists, links, and images.
- **Cover Image URL** — an image across the top of the card and the post.
- **Labels** — up to three chips above the title, 24 characters each.
- **Shared By** — the byline. Any name you like; it is not tied to a Tandem user, so it
  survives someone leaving.
- **Sender Image URL** — an optional picture beside the byline.
- **Call to Action** — button text and a link, shown at the end of the post. Fill in both
  or neither.
- **Audience** — which of your widgets show this post. **All widgets** by default; see
  below.

Images and links are pasted URLs, and they must start with `https://`. An `http://` image
is blocked as mixed content by every browser on an `https://` site, so it would reach your
visitors as a broken picture with no explanation. The editor says
`Must be an https:// URL.` when you save one.

### What the editor keeps

The panel renders a fixed set of elements, so the editor's formatting is narrowed to that
set when you save. Headings, bold, italics, lists, links, images and the call-to-action
button all survive. Anything else — a table, a font colour, text pasted from a document
with its own styling — is kept as plain text, and the words are never lost.

One consequence worth knowing: a heading becomes a subheading. The post's title is the
only top-level heading in that view, so an authored heading always sits below it.

## Choosing which widgets show a post

An update goes to **all widgets** unless you say otherwise. That is the right default for
most posts — an outage notice belongs everywhere — and it is what every post written before
this setting existed still does.

To narrow one, open the update and use the **Audience** section:

1. Choose **Only selected widgets**.
2. Tick the widgets that should show it. Each row shows the widget's name and the sites it
   runs on, so two similarly named widgets are still tellable apart.

Four things are worth knowing:

- **Audience and the widget's own Updates switch both have to allow it.** A post targeted at
  a widget whose **Updates** section is switched off still shows nothing — the widget has no
  Updates tab at all. That is the likeliest reason a narrowed post seems to have vanished.
- **Ticking nothing is the same as All widgets.** The editor warns you when you are in that
  state, because the two are indistinguishable once saved.
- **The list is the widgets you have now.** A widget created later does not inherit an
  existing post's audience; come back and tick it if the post should appear there.
- **Deleting a widget does not rewrite your posts.** A post that named only that widget
  stops reaching anything. Re-open its Audience and pick a widget, or set it back to
  **All widgets**.

You can check the result without deploying: open the widget on **Web Chat → Widgets** and
click **Updates** in the preview panel, which shows exactly the posts that widget would
serve.

## Publishing

A new update is a **draft**, and a draft is not visible to anyone outside your
organization. **Publish** puts it on the widgets its Audience names — every widget with the
tab switched on, unless you have narrowed it; **Unpublish** takes it off again. Both are on
the row in the list and in the editor.

Publishing is disabled while you have unsaved changes. Save first, or you would publish
the last saved version while newer text is on screen.

Unpublishing and republishing keeps the post's original publish date, so it does not jump
to the top of the feed and does not re-alert visitors who had already read it. That is
also why correcting a typo in a published post is safe.

## Turning the tab on for a widget

The tab is off for every widget until you switch it on, including widgets you already
have. On **Web Chat → Widgets**, open a widget and use the switch on the **Updates**
section.

With it off, the panel is exactly what it is today: one conversation, no bottom
navigation, and the feed is not served to that widget at all.

## What a visitor sees

The panel gains a two-tab bar at the bottom: **Chat** and **Updates**. The Updates tab
shows your published posts, newest first, as cards with the cover image, labels, title and
summary. Tapping one opens the full post.

A red dot sits on the Updates tab when the newest published post is one the visitor has
not seen. It clears when they open the tab, and it stays clear when they come back later.
The dot is per-browser, so a visitor who reads an update on their laptop still sees the dot
on their phone.

Links and the call-to-action button open in a new tab, so a visitor reading a post does not
lose the conversation they were having.

## Limits and defaults

| Field               | Limit                                         |
| ------------------- | --------------------------------------------- |
| Title               | 1–120 characters, required                    |
| Summary             | 300 characters                                |
| Labels              | 3 labels, 24 characters each                  |
| Shared By           | 60 characters                                 |
| Call-to-action text | 40 characters                                 |
| Blocks in a post    | 60 (a paragraph, heading, list or image each) |
| Whole post          | 100 KB                                        |
| Widgets in Audience | 50 (leave empty for all widgets)              |
| Images and links    | `https://` only                               |

The tab is **off** by default on every widget, a new update is created as a **draft**, and
its Audience is **all widgets**.

## Troubleshooting

- **The tab isn't in the panel.** It is off per widget. Check the **Updates** section of
  that widget on **Web Chat → Widgets**. If you have just switched it on, a visitor's
  browser may hold a cached copy of the widget script for up to five minutes.
- **A post isn't showing.** Two things have to be true. Only published posts are served —
  check the status badge on the row, where a draft says **Draft** — and the post's
  **Audience** has to include that widget. The widget's own preview panel is the quickest
  way to check both at once.
- **The dot won't go away.** It clears per browser when the tab is opened. Publishing
  another post lights it again for everyone who has not read that one.
- **An image isn't loading.** It must be an `https://` URL that your visitors' browsers can
  reach. An image behind a login, or on a host that blocks other sites from loading it, will
  not render.
- **Formatting disappeared when I saved.** The panel renders a fixed set of elements — see
  [What the editor keeps](#what-the-editor-keeps). The text is kept; the styling is not.

## Next steps

- [Installing the widget](/docs/agents/chat-widget/installing) — the snippet, and the sites
  a widget is allowed to run on.
- [Chat Widget](/docs/agents/chat-widget) — what the agent brings to a chat, and what it
  does not.
