Messages & Media

What visitors can write and send in the chat tab — the composer, attachments and their limits, how images and files render, and the safeguards that keep conversations healthy.

The Composer

The composer is a pill at the bottom of the chat tab with three parts: a small paperclip at the left edge, the text field, and a send button.

ActionBehavior
EnterSends the message — with one exception, below
Shift + EnterInserts a line break
Typing a long messageThe field grows as you type, then scrolls once it gets tall
Placeholder"Write a message..."
Send buttonStays inactive until there's text or at least one attachment

The field is focused automatically when the chat tab opens, and refocused after every send — so a visitor can keep typing without reaching for the mouse.

Messages are capped at 20,000 characters. A counter only appears once a visitor passes 19,500, so in normal use it stays out of the way.
The Enter exception. Visitors typing Japanese, Chinese or Korean press Enter to accept the characters their input method is offering. That keystroke only confirms the conversion — it does not send the message. The same rule applies in the chat composer and in the home screen's "Ask me anything" box.

What Visitors Can Send

Visitors send plain text and files — that's it. Anything that looks like formatting is treated as literal text:

  • Markdown isn't rendered. Typing **bold** shows the asterisks.
  • HTML is stripped before the message is stored, on both the visitor's browser and the server.
  • Pasted links stay as plain text in the visitor's own bubble.

This is deliberate. Visitor input is untrusted, so it never becomes markup. Replies from the AI are a different story — see Formatting in Agent and AI Replies below.

Attachments

Visitors attach files with the paperclip at the left edge of the text field, or by pasting an image straight from the clipboard.

Limits

These limits are enforced in the widget itself:

LimitValue
Allowed file typesWebP, PNG, JPEG, MP4, PDF
Maximum file size25 MB per file
Maximum files per message8
Files that don't meet these limits are silently skipped — they simply don't appear in the attachment tray, with no error message. If a visitor reports that "the upload did nothing", an oversized or unsupported file is the usual cause.

Choosing and previewing files

Attached files appear as a row of small previews above the composer. Images show a thumbnail; videos and PDFs show an icon. Each preview has an × to remove it before sending.

Pasting adds to whatever is already attached, but picking files with the paperclipreplaces the current selection. If a visitor wants files from two different folders, they should select them in one go, or paste the second batch.

A message can be attachment-only — the send button activates as soon as one file is attached, with no text required.

What the AI can read

Only images are passed to Vex for analysis. PDFs and videos are stored and delivered to your team perfectly well, but the AI can't read their contents — so if a visitor uploads a PDF and asks "what's wrong with this invoice?", they'll need a human. This is a good moment for an agent handoff.

How Media Renders in the Thread

TypeAppearance
ImageInline at message width with card corners — above the visitor's bubble with nothing around it, inside an agent's card. Clicking opens the full-size file in a new browser tab.
Video (MP4)A row with a camera icon tile, the file name and its type, as a download link — there's no inline player.
PDFA row with a document icon tile, the file name and its type, as a download link.

A message with files but no text shows just its file rows.

Who Gets a Bubble

Only people do:

  • The visitor's messages sit on the right in your brand color, with a small flat corner at the bottom-right and no avatar. The time shows under the last message of a run.
  • A human agent's replies sit on the left in a surface card with a small flat corner at the top-left, the agent's photo in the margin with a green or red presence dot, and a name row showing just the agent's Name.
  • Vex and workflow messages have no bubble at all. They are plain text on the page color, next to a small avatar, under a name row — Vex · AI assistant in the visitor's language, for the AI's replies and workflow messages alike — with the time underneath.

Every row shows its own avatar and name; consecutive messages are not merged into one block.

The AI assistant label is a deliberate honesty signal. Every row Vex speaks in carries it, in the visitor's language — the AI's answers, workflow messages, and the cards shown in Vex's place (a rating request, a question, the email form, a form invite from a workflow). So visitors can always tell whether they're reading Vex or a person. A form invite sent by one of your agents shows that agent instead. Where the brand has no AI assistant, or its AI assistant is switched off, the rows show plain Vex.

Formatting in Agent and AI Replies

Unlike visitor input, AI replies support rich formatting:

  • AI replies are written in markdown and converted to HTML — bold, italics, links, headings, and bulleted or numbered lists all render properly. While an answer is streaming, formatting is applied live, so the text is readable as it arrives.
  • Agent replies from the Inbox are sent as plain text — what your team types is exactly what the visitor sees. See Insert & Start for the templates, articles and forms your team can send.
  • Links in AI replies are detected automatically, and bare URLs become clickable.

All of it passes through a strict sanitizer before it reaches the visitor's screen, so only a safe subset of HTML survives.

Links in messages get special handling:

  • Links to your own Yaplet knowledge base open inside the widget, in the Knowledgebase tab — the visitor never leaves your page.
  • Every other link opens in a new browser tab.
This is a strong reason to answer with knowledge base links rather than external ones. The visitor reads the article without losing the conversation, then keeps chatting.

Interactive Cards and Chips

Beyond plain messages, several interactive elements appear as cards and chips in the thread. They're covered in depth under AI Chatbot, but here's what a visitor may run into:

Choice buttons

Outlined chips on the left that a visitor taps instead of typing. The choice is recorded in the transcript.

Data collection

A card in the AI's place with one field — text, number, dropdown, or email — that a workflow uses to gather details.

Product carousel

A swipeable row of product cards with image, title, description, and price.

Context forms

Fields the AI shows when it needs specifics before it can fetch an answer.

Limits That Protect the Conversation

Two safeguards can interrupt a send. Both show a small chip above the composer and clear on their own.

Sending too fast

Visitors can fire off a short burst of messages, but sustained rapid-fire is throttled to roughly one message every couple of seconds. While throttled:

"You're sending messages too fast — slow down."

Pressing Enter inserts a line break instead of sending, so nothing is lost — the visitor just waits a moment and sends.

Blocked words

If your organization runs a word filter and a message trips it:

"Your message contains a word that isn't allowed — please edit it."

The message and any attachments are put back in the composer, so the visitor can edit and resend rather than retype everything. The filter is checked instantly in the browser and enforced again on the server.

Blocked words are configured for your whole organization, not per widget, on Audience → Security — whose four views are tabs on one page. See Security.

Banned visitors

If you've banned a visitor — with Ban visitor in the conversation's sidebar in the Inbox, where you set the reason, the duration and the level — their composer is disabled and the placeholder becomes "Messaging is temporarily unavailable". They can still read the conversation, but they can't send, attach, or reach an agent. Open bans are listed on Audience → Visitors → Banned visitors; Audience → Security keeps a separate Block list of its own and can also lift a manual ban.

Branding

A thin "Powered by ⚡ Yaplet" line sits under the composer. It can be hidden on plans that include the Remove branding permission — see Branding, Menu & Dark Mode.