Litestore · Operator guide
Assist

Conversations

Answer customer questions in the Messages inbox, attach real products, orders and coupons to your replies, and leave internal notes for your team.

The Messages inbox is where you talk to customers. You use it to answer questions, keep internal notes for your team, and send replies that include a real product, order or coupon.

A conversation is a record with a status and an assignee. It can also link to the customer, product and campaign it came from.

Each message in a conversation records what kind of author wrote it, along with an ordered list of structured parts. These parts are the design decision worth understanding. A reply can attach a product, an order or a coupon as a real item instead of pasting a URL into the text.

You find the inbox here:

Messages
/admin/messages

You need the tickets:view permission to open it.

Status and assignment

A conversation has one of three statuses:

  • Open
  • Resolved
  • Archived

You can assign a conversation to a staff member. Litestore also stores the time of its last activity.

Litestore writes that time in the same transaction as the message. This keeps the inbox order in step with the messages. A thread can't sit at the top of the queue with nothing new in it, and it can't sink out of sight 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 it doesn't reopen a closed ticket. Without this rule, your queue would fill back up every time a shipping webhook fired for an order you had already dealt with. With it, you can trust the queue.

Five kinds of author

Every message records who wrote it:

  1. Customer
  2. Staff
  3. System
  4. Assistant
  5. Note

The last one isn't a person. note is an author kind of its own. That is why internal notes behave correctly, rather than just looking different on screen.

Internal notes

A note is internal, and Litestore uses two separate rules to keep it that way.

First, Litestore removes notes before it builds the customer's view of the thread. The note is taken out when that view is put together. The interface doesn't simply hide it.

Second, a note doesn't count as a reply. If you write one, the thread still shows as waiting on you. That is correct, because the customer still hasn't heard anything.

Nine kinds of part

Besides the text body, a message can include any of these parts:

  • Text
  • Product
  • Order
  • Coupon
  • Suggestion
  • Image
  • Event
  • Quote (an earlier message, quoted)
  • Campaign application

Litestore stores the parts as an ordered JSON array on the message itself, not in a separate table. The server resolves them for display.

For you, this means an order attached to a reply is the order itself, not a snapshot of it. When the customer opens the thread, they see the order's current state.

Approvals inside the thread

While a campaign application is pending, staff see approve and reject buttons on it. The collab sees its live status.

You don't need a separate review page. You review the application in the conversation that is already about it. The collab watching the thread sees your decision without needing an email that links somewhere else.

One conversation, two views

The admin inbox and the customer's view read the same conversation and the same messages.

The records behind them are Conversation and Message. Litestore doesn't keep a support copy and a customer copy that need to match. There is one thread, which Litestore shows differently to each audience, with notes removed for the customer.

A thread loads its 30 most recent messages. Older ones load as you scroll up.

Sending twice

A message can include an idempotency key.

If a send is repeated, Litestore returns the original message instead of posting a second one. Repeats happen after a double click, on a flaky connection or when a request is retried.

Replies send an email to the customer, and incoming messages send an email to your staff. So a duplicate isn't just a cosmetic problem. Without the key, someone would get a second email.

The AI draft

If you set an AI provider key, the inbox shows two extra controls:

  • A drafted reply, based on the customer's profile and the real state of any order attached to the thread
  • A task assistant chat

If you haven't set a key, Litestore doesn't show either control. You won't see a disabled button for a feature you haven't configured.

What the draft is based on is what makes it useful. It doesn't write from the message text alone. It reads the actual order attached to the thread, so it won't tell a customer their parcel shipped when it hasn't.

Working the inbox

  1. A question arrives. It can come from a product page, an order or a campaign application.
  2. Open the thread. The customer, the linked record and the conversation history are already attached, so you don't have to search for their email address to get context.
  3. Reply or leave a note. Write your reply and attach a product, coupon or order part wherever you would otherwise paste a link. Or leave an internal note that the customer never sees.
  4. Resolve or archive the thread. Only a new message from the customer reopens it.

To choose between a note and a reply, use the same rule Litestore applies:

A note is for the next person on your team. If what you want to say changes what the customer should do, it's a reply. Until you send one, the thread is still waiting on you.

On this page