Litestore · Help center
Assist

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.

ZKWrong size on #1051OpenML
The shirt is too small. Can I swap it for a large in the same colour?Order #1051Linen shirt, M / Sand●Delivered
Note from MariaCity store has two large Sand shirts. Reserve one before replying.
We've set a large aside for you. Send the medium back and we'll ship this one.Linen shirtL / Sand · $48.00
Write a reply…
A thread can hold the customer's order, internal notes the customer never receives, and replies with a product attached.

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/messages

You 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.

AuthorWho writes it
CustomerThe customer.
StaffA member of your team.
SystemLitestore, for an event.
AssistantThe AI assistant.
NoteA 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:

PartWhat it adds
TextWritten text.
ProductA product from the catalog.
OrderAn order, showing its current state.
CouponA discount code.
SuggestionA suggested reply.
ImageAn image.
EventA system event.
QuoteAn earlier message, quoted.
Campaign applicationA 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.

On this page