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 sits at the bottom of the chat tab and has three parts: an attach button, 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. Messages from your team and from the AI are a different story — see Formatting in Agent and AI Replies below.

Attachments

Visitors attach files with the + button to the left 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 + button replaces 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
ImageRendered inline at full bubble width. Clicking opens the full-size file in a new browser tab.
Video (MP4)A camera icon with the filename, as a download link — there's no inline player.
PDFA document icon with the filename, as a download link.

Messages that contain files but no text get a small paperclip header reading "Attachment" or "Attachments".

Message Bubbles

  • The visitor's messages are right-aligned in your widget's brand color, with no avatar.
  • Agent and AI messages are left-aligned on a muted background, with an avatar.

Under the last message in a run, a footer shows who sent it and when. AI messages carry a small sparkle icon and the name Vex; replies from your team show the agent's own name and profile photo. Consecutive messages from the same sender collapse into one avatar and one footer, so a burst of replies reads as a single block.

The AI badge is a deliberate honesty signal — visitors can always tell whether they're talking to Vex or to a person, without having to ask.

Formatting in Agent and AI Replies

Unlike visitor input, messages from your side of the conversation do 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 support formatting from the Inbox composer. See Insert & Start for what 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 Bubbles

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

Choice buttons

Workflow options a visitor taps instead of typing. The choice is recorded in the transcript.

Data collection

Inline fields — 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 "Powered by ⚡ Yaplet" link sits under the composer. It can be hidden on plans that include the Remove branding permission — see Branding, Menu & Dark Mode.