Messages (OPN admins)
Every email and text the tool has sent or received, newest first, whatever became of it. Reading this page needs message:read; moving, opening and merging need message:manage. Both are OPN admins' keys for now.
What a row says
- Direction — received or sent.
- Channel — email or SMS.
- Kind — for a sent message: a reply an operator sent, a notice the system sent (case received, case closed), a broadcast recipient, a sign-in link, a verification code, a send-back notice to a drafter. A received message is received.
- From, To, Subject — as sent or received. A text has no subject; its words stand in. To shows the first address and +N when a reply went to more; the full To, Cc and Bcc are in the sheet.
- Recipients — how many addresses a sent message went to, across To, Cc and Bcc. A broadcast is one row per recipient, so its rows say 1.
- Case — the case the message is on, if any.
- Status — for a received message, what became of it: appended to a case, created a case, unrouted (nothing matched: not a case's address, not a subject tag, not an intake address), spam (over the threshold at intake), duplicate (a Message-ID already received). For a sent one, how far it got: sent, delivered, deferred, bounced, dropped, failed. Needs attention in the Status filter is the union of the ones that went wrong.
Click a row's subject to open the sheet: the message in full, its Message-ID and provider id, and what can be done with it. A sign-in link or a verification code is here with its secret left out: the row says [redacted] where the token or the code was.
Putting a message right
People don't always follow the reply conventions, so a message can land on the wrong case, on a new duplicate case, or nowhere. From the sheet:
- Move to case… — a received message onto the case it belongs to. It arrives there as a reply would: the timeline records it, a resolved case reopens, a closed one gets a follow-up suggestion; nobody is paged. The case it left records where it went. A message that opened its case may leave it — that case keeps its request text, and closing it is your call — or use Merge.
- Open as case… — an unrouted or spam email becomes a case under the entity you choose, as intake would have made it: the sender as submitter, the message as the original request, dated from when it arrived. The received acknowledgment goes out then.
- Merge CASE-… into… — on a message that opened a duplicate case, and on a case's Actions as Merge into case…: every received message on the duplicate moves to the case it duplicates, the two are linked duplicate of, the duplicate closes without the closed notice (the request continues), and from then on mail to the duplicate's address — and the number that last texted it — lands on the survivor.
A duplicate row can't be moved; move the original it points at. A sent message is a record, not something to move.
Filtering and export
Search an address, a subject, a case ref or a Message-ID; narrow by direction, channel, status, kind and dates. Export (CSV, XLSX or JSON, with a time zone and row count) takes the messages matching the filter. The same log is query_messages over MCP for a token with the messages area.
Retention
A message on a case stays with the case and is redacted with it at archive. A message on no case and no broadcast — unrouted or spam mail, a duplicate of one, a sign-in link, a verification code — is removed by the nightly archive job after the window on Response targets (Keep unattached messages for, 30 days by default), files included.