Formatted Replies and Images in Replies
A support answer often needs 5 steps, a link to a settings screen and one screenshot that shows where to click. In plain text, the steps run together, the link is a long raw address and the screenshot has nowhere to go. So the customer writes back to ask what you meant.
Core Support gives agents a formatted reply editor. You can write with bold, italic, links, lists, quotes and code, and paste or drop screenshots where they belong. The customer sees the same formatting in the portal and in the reply email.
The editor is on for every agent, with nothing to set up. Customers keep a plain text box, where they can add files, and messages written before Core Support 1.0 stay plain text. Messages imported from another help desk keep their own formatting and images.
The Reply Editor
The editor replaces the plain reply box in the agent workspace, for public replies and private notes alike. The toolbar above it has these tools:
- Bold: Ctrl+B, or ⌘B on a Mac.
- Italic: Ctrl+I, or ⌘I.
- Strikethrough
- Link: Ctrl+K, or ⌘K.
- Bulleted list and Numbered list
- Quote: turns the paragraph into a quote, or back into a paragraph.
- Code: select text on one line to mark it as code, or select several lines to make a code block. Choose Code again inside code to remove it.
- Add an image or Add a file: opens a file picker. The button says Add a file once you allow more than images, and it goes away when you turn uploads off.
- Clear formatting: removes the formatting and links from the selected text, and turns a quote or code block back into a paragraph.
Hover over a tool to see its name and shortcut.
Add a Link
- Select the words that should become the link, or put the cursor where the link should go.
- Choose Link, or press Ctrl+K (⌘K on a Mac).
- Type a web address or an email address and press Enter, or choose Apply.
An address without https:// gets it added, and an email address such as name@example.com becomes a mailto: link. With nothing selected, the address itself becomes the link text. To unlink text, put the cursor in the link, choose Link, then Remove link.
Only web addresses (http, https) and email links are kept. Anything else, such as a javascript: link, is removed when the reply is saved. Links in a reply open in a new tab for the customer.
Add Images and Files to a Reply
Files go where you put them in the reply, between paragraphs or inside a list. There are three ways to add one:
- Paste a screenshot straight from the clipboard.
- Drop a file onto the reply. In most browsers it lands where you drop it.
- Choose Add an image or Add a file in the toolbar and pick one or more files.
Each file uploads to the ticket at once, and the status line under the reply shows “Uploading” and the file name until it is in place. An image shows in the reply. Any other file becomes a download link with the file’s name. These rules apply:
- Types: PNG, JPEG, GIF and WebP images by default. Settings → Tickets adds PDFs, documents, spreadsheets, text and logs, archives and other extensions.
- Always refused: programs and web pages such as
.exe,.php,.htmland.svg. Core Support checks a file’s contents as well as its name, so a document renamed to.pngwon’t pass. - Size: up to 8 MB per file.
- Alt text: the file name, so a clear name such as
license-settings.pnghelps customers who use a screen reader. - Storage: files are saved wherever your other attachments go, set under the attachment storage settings: the database, private files, R2, S3 or Bunny.
- Limit: each agent can upload up to 120 files in each clock hour.
A file inside a reply isn’t listed again under the message as a download. The customer sees it in place.
Files From Customers
Signed-in customers see Add files on the new ticket form and under their reply box, on the support page and on connected sites, while Settings → Tickets → Customers can add files is on. They can add the same types you chose, up to 5 files of 8 MB each on a message and 30 files in each clock hour.
Only that customer and your team can open these files. Core Support saves the message first and then uploads its files, so a failed upload never loses the message, and the customer is told which file wasn’t added. Visitors without an account can’t add files, and customers who write by email keep sending attachments by email.
Paste Formatted Text
Text copied from a doc, a web page or another reply keeps the formatting the editor supports and drops the rest. Bold, italic, links, lists, quotes and code survive. Other things change shape:
- headings become ordinary paragraphs
- tables become lines of text
- colors, fonts and sizes are dropped
- images from other websites are removed, because only images uploaded to the ticket can appear in a reply
Plain text pastes as it is. If a pasted image is missing, save it as a file and add it with Add an image instead.
Send and Resolve
The buttons under the reply decide what happens to the ticket:
- Send reply sends a public reply. The ticket then takes the status chosen under Settings → Agent workspace → Status after an agent reply, which starts as Waiting on customer.
- Send and resolve sends the public reply and then marks the ticket resolved, with one click, whatever that setting says. The workspace confirms with “Reply saved and ticket resolved.” If the reply is saved but the status change fails, it says so, and the ticket keeps its status. The button shows only on public replies to tickets that aren’t resolved yet.
- Add private note saves a note only your team can see. Notes take the same formatting and images, and they never change the ticket’s status.
Ctrl+Enter, or ⌘+Enter on a Mac, presses the main button from inside the editor: Send reply, or Add private note when you’re writing a note. It never presses Send and resolve. Customers can send with the same shortcut from their reply box in the portal on your site.
The text of a reply, including the addresses of its links, counts toward Settings → Tickets → Maximum message length. Formatting barely counts: each image adds 7 characters and each list item 2. A reply can still hold only so much markup. A very long, heavily formatted reply gets “This reply has too much formatting to save.” Shorten it or split it into two replies.
How Customers See a Formatted Reply
The customer sees the formatting and the images in three places:
- the customer portal on your site
- a customer portal on a connected site
- the reply email
An image in a reply has its own address, in the form /wp-json/core-support/v1/files/{id}/{key}. The portal, a connected site and the customer’s email app all load the image from there, without signing in.
Any other file an agent adds gets the same kind of address and downloads from it, so a customer can open it from their email.
The key at the end is a keyed hash of the file, so nobody can work out one file’s address from another. Anyone who has the address can load the file, which is how email apps show images. The address serves files placed inside messages, including images in messages imported from another help desk. A customer’s file never gets one. Files that arrived as email attachments are never served this way. On a site with plain permalinks, the address takes the form ?rest_route=/core-support/v1/files/{id}/{key}.
Every reply is rebuilt from a small list of allowed formatting when it is saved and again when it is shown. Scripts, styles, embedded frames, forms and images from other sites never reach a customer or an email, even if they were pasted in.
How a Formatted Reply Looks in Email
The reply email carries two versions of the same message:
- HTML: the formatted reply, with lists, quotes and code styled to read well in email apps and links in your brand color. Images show at their own addresses.
- Plain text: the same words for email apps that show plain text. A link becomes “label (address)”, or just the address when that is also its label. A file link becomes “name (address)”. List items start with “- ” and an image becomes
[Image].
When the customer replies by email, Core Support reads their answer from the plain-text part, the same as before. Formatting changes nothing about how replies get back to the ticket.
Some email apps hide remote images until the reader allows them. When that happens, the customer sees a placeholder until they choose to show images. That is the email app’s choice, and the image address keeps working.
For Developers
The workspace uses two REST routes, and you can use them too:
POST /wp-json/core-support/v1/tickets/{id}/uploadsstores a file for a reply on that ticket. Send onefilefield as multipart form data. The answer is201with the file’sid,url,filenameandimage, which is true for an image. A customer also sendsmessage, the ID of a message they sent within the last hour, and the answer has the file’sidandfilename.POST /wp-json/core-support/v1/tickets/{id}/messageswith"format": "html"saves a formatted reply. A message from anyone who isn’t an agent is stored as plain text, whatever its format.
In a stored reply, an image is <img data-csp-file="{id}" alt="…"> and any other file is <a data-csp-file="{id}">name</a>, naming an upload on the same ticket. Core Support adds the address only when the reply is shown or emailed. The REST API reference covers authentication and the other routes.
Good to Know
- Files added to a reply that is never sent are removed by a daily cleanup once they’re 2 days old. If you send a reply after its files are gone, sending stops and asks you to add the file again.
- Customers can’t format their replies.
- The replies and notes guide covers drafts, private notes and reply visibility.