Conversations
Answer customer questions in the Messages inbox, attach products, orders and coupons to replies, and leave internal notes for your team.
The Messages inbox is where you communicate with customers. You use it to answer questions, keep internal notes for your team, and send replies that include a product, order or coupon from the store.
Conversations
A conversation is a record with a status and an assignee. It can also link to the customer, product and campaign it relates to.
Each message in a conversation records what kind of author wrote it, along with an ordered list of structured parts. These parts let a reply include a product, an order or a coupon as an actual item from the store, rather than as a URL pasted into the text.
The inbox is here:
Messages
/admin/messagesYou need the tickets:view permission to open it.
Status and assignment
A conversation is Open, Resolved or Archived.
Each conversation has an assignee from your staff. Litestore also stores the time of the conversation's last activity.
Litestore writes that time in the same transaction as the message, so the inbox order always matches the messages. A thread can't stay at the top of the queue without anything new in it, and it can't drop down the list while a question is still unanswered.
Only a message from the customer reopens a resolved or archived thread.
A staff reply or a system event updates the last-activity time but doesn't reopen a closed thread. Otherwise, the queue would fill up again every time a shipping webhook fired for an order you'd already dealt with.
Authors
Every message records who wrote it.
| Author | Who writes it |
|---|---|
| Customer | The customer. |
| Staff | A member of your team. |
| System | Litestore, for an event. |
| Assistant | The AI assistant. |
| Note | A member of your team, writing an internal note. |
note is a separate author kind rather than a variant of a staff message. This is what allows internal notes to behave differently from replies, as described in the next section.
Internal notes
Notes are internal, and Litestore uses two separate rules to keep them that way.
First, Litestore removes notes when it builds the customer's view of the thread. They're not sent to the customer at all, rather than just being hidden in the interface.
Second, a note doesn't count as a reply. If you write one, the thread still shows as waiting for a staff response, because the customer still hasn't heard back.
Message parts
Besides the text body, a message can include these parts:
| Part | What it adds |
|---|---|
| Text | Written text. |
| Product | A product from the catalog. |
| Order | An order, showing its current state. |
| Coupon | A discount code. |
| Suggestion | A suggested reply. |
| Image | An image. |
| Event | A system event. |
| Quote | An earlier message, quoted. |
| Campaign application | A collab's application to a campaign. |
Litestore stores the parts as an ordered JSON array on the message itself rather than in a separate table, and the server resolves them for display.
An order attached to a reply is a reference to the order rather than a snapshot of it, so when the customer opens the thread, they see the order's current state.
Approvals
While a campaign application is pending, staff see approve and reject buttons on it, and the collab's view shows its current status.
This means you don't need a separate review page. You review the application in the conversation about it, and your decision appears in the collab's thread without needing an email that links somewhere else.
Customer and admin views
The admin inbox and the customer's view use the same conversation and the same messages.
The records behind them are Conversation and Message. Litestore doesn't keep separate support and customer copies that need to be kept in sync. There's one thread, which Litestore displays differently to each audience, with notes removed for the customer.
A thread loads its 30 most recent messages, and older ones load as you scroll up.
Duplicate sends
A message can include an idempotency key.
If a send is repeated, Litestore returns the original message instead of posting a second one. Repeated sends can happen after a double click, on an unreliable connection or when a request is retried.
Replies send an email to the customer, and incoming messages send an email to the store's staff. Without the key, a duplicate message would also mean someone receives a duplicate email.
AI draft
If you set an AI provider key, the inbox shows a draft reply control. It drafts a reply based on the customer's profile and the current state of any order attached to the thread, and puts it in the composer for you to edit and send.
If you haven't set a key, Litestore doesn't show the control, so the inbox never shows disabled buttons for features that aren't configured.
The draft doesn't rely only on the message text. It reads the order attached to the thread, so it won't tell a customer their parcel has shipped when it hasn't.
Inbox workflow
Assignment
A question can come from a product page, an order or a campaign application.
Thread
The customer, the linked record and the conversation history are already attached, so you don't need to search for the customer's email address to get context.
Replies and notes
Write your reply and attach a product, coupon or order part wherever you would otherwise paste a link. Alternatively, leave an internal note that the customer never sees.
Resolution
Only a new message from the customer reopens it.
Use notes to share information with your team. If the customer needs information or has to do something, send a reply instead. The thread shows as waiting for you until you do.
Related
Customers
The customer list shows who buys from the store, how much each customer has spent, and which lifecycle stage their orders put them in.
Orders
Orders go from payment to shipment and ship in parts when needed, and staff create phone and in-person orders by hand.
Campaigns
A campaign groups the work for a launch and reports how much revenue it earned.