FixControl/Documentation

User Guide

Inbox

Collaborative operator workspace — mailboxes, threads, internal notes, categories, rules, AI signals, and reply send through Gmail / Office 365.

What it is

The Inbox is the shared workqueue your operators run customer email out of. Inbound mail from connected mailboxes lands as a thread, gets categorised and AI-scored, and stays there until somebody replies, snoozes, or resolves it. Replies go back through the same provider connection (Gmail or Office 365) using the mailbox's identity.

It is not an IMAP client. There is no folder sync, no labels, no archive button. It is a triage + reply surface that lives next to the rest of your tenant.

Inbox — split view with threads, signals, and detail pane
Inbox — split view with threads, signals, and detail pane

The model

Three first-class objects:

ObjectWhat it is
MailboxA logical address (support@, billing@, alex@) bound to a Gmail or Office 365 connection.
ThreadOne conversation with one customer on one mailbox. Carries status, assignee, category, AI signals.
MessageA single inbound or outbound email on a thread.

A customer's fifth follow-up reopens the same thread — it does not create a new one.

Mailboxes

Each tenant has at least one mailbox. A system mailbox (display name "Inbox") catches anything that lands on an unknown recipient — see Settings → Inbox mailboxes to surface and adopt those addresses.

A real mailbox has:

  • Kind — Shared (team), Personal (single owner), or System.
  • Provider — Gmail, Office 365, or Internal (no send).
  • Visibility — Private (owner only), Team (reserved; behaves as Tenant until teams ship), Tenant (anyone in the workspace).
  • Send enabled — controls whether the reply composer can send AS this mailbox. Defaults off; the provider must already be connected in Channels.
  • Ingest enabled — flip off to stop receiving mail without losing the row.
  • Auto-assign mode — Off / Round robin / Sticky hint for the assignment helper.
  • Default AI policy — optional reference into Inbox AI policies; pins which policy applies to this mailbox unless a more specific scope wins.
Settings — Inbox mailboxes
Settings — Inbox mailboxes

The mailbox card carries a compact health panel: inbound 24h / 7d, live thread count, unread count, snoozed count, replies sent 7d, and the age of the oldest live thread. If the oldest thread is days old, you have a triage problem, not a delivery problem.

Thread status

StatusMeaning
NewJust landed; nobody has touched it yet.
OpenBeing worked on.
Waiting on customerReply sent; ball is on their side.
Pending internalBlocked on internal collaboration.
AI draftedAn AI policy prepared a draft; awaits operator review.
ResolvedClosed. Reopens automatically if the customer replies.
IgnoredSoft-dismissed (newsletter, channel join, etc.).

Status is per thread. Sending a reply transitions to Waiting on customer; an internal note alone does not change status; a fresh customer message on a Resolved / Ignored thread reopens it.

Categories

Per-tenant labels (Billing, Shipping, Sales, Spam, …) with a color and an optional icon. One primary category per thread — there is no many-to-many tagging by design. Manage them under the inbox toolbar's Categories button.

Categories drive:

  • Queue filtering and saved-view scopes.
  • AI policy targeting (you can scope a policy to a single category).
  • Routing via inbox rules.

Inbox rules

Declarative routing applied as mail arrives. Rules are evaluated by ascending priority (lower runs first); the first match wins. Matchers:

  • Sender email — exact match on the From address.
  • Sender domain — match the domain part (e.g. customer-domain.com).
  • Subject contains — case-insensitive substring of the subject.

Each rule can apply a category, an assignee, or both. A rule can be scoped to a single mailbox; rules without a mailbox scope apply to every mailbox in the tenant.

Internal notes

A note attached to a thread that the customer never sees. Plain text only — no HTML, no rich text editor. Notes outlive any single message; they are the right place to write "@alex flagged this as VIP — please escalate next reply". A note never gets promoted to an outbound reply: if you want to send what you wrote, retype it into the composer. That is a deliberate guard against the wrong-channel mistake.

Signals on a thread

Derived live from the thread, not stored:

  • Unassigned — no assignee.
  • Unread (N) — unread customer messages.
  • Customer waiting — Open / New and the last customer message is newer than your last reply.
  • Stale — live thread with no movement in 24h. Waiting on customer doesn't count.
  • AI low confidence — AI assessed below 0.5.
  • High risk — AI risk is High. Critical-tone badge.

The toolbar exposes built-in views as one-click chips: Customer waiting, Stale, Unassigned, High risk, AI drafted. Save your own views (filter + sort + visible columns) and pin one as default; saved views are scoped to you.

Snooze

Per-thread "hide until". A snoozed thread drops out of the listing until the timer expires, at which point it reappears in its current status (snooze does not flip status). A new customer message also wakes it immediately — the customer always wins the timer.

Attachments

Inbound attachments show as chips on the message — filename, type, and size. Bytes stay with the provider and are fetched on demand when you click the chip. Re-receiving the same message does not duplicate the attachment.

Workflow

  1. Triage. Hit Customer waiting or Unassigned, work top-to-bottom. j / k to move, Enter to open detail.
  2. Assign or self-assign. a opens the assignee picker.
  3. Categorise. c opens the category picker.
  4. Reply, note, or status-shift. Reply through the composer; add an internal note for collaboration; transition the thread with Shift+R/W/P/O.

Replies

The composer sends through the bound mailbox's provider — Gmail or Office 365 — under the mailbox's identity. Send is locked while in flight, so a double-click never fires twice. After a successful send the timeline shows a Reply sent entry; failures stay as a draft you can retry.

For drafts and AI auto-reply behaviour see Auto-reply.

Keyboard shortcuts

KeyAction
j / kMove row down / up
EnterOpen detail pane
xToggle row selection
/Focus search
iIgnore (single or selection)
rRe-analyse (single or selection)
Shift+RResolve thread
Shift+WMark waiting on customer
Shift+PMark pending internal
Shift+OReopen thread
EscClear selection / blur

Bulk actions (Assign, Categorise, Ignore, Re-analyse) live in the toolbar; "Select all matching" extends the page selection to the entire filter result.

CSV export

Export honours the active filters and search. There is no "export everything" shortcut by accident — to dump the tenant, set the filter to All first.

Troubleshooting

  • Thread stuck on New for hours. AI classification runs in the background; it does not gate operator action. If the AI suggestion never arrives, click Re-analyse on the row.
  • No reply sent, no error. Check that the mailbox has Send enabled and the underlying provider is connected (Settings → Channels). A send-disabled mailbox rejects the action with a UI error, and the skip is recorded with reason email_replies_disabled.
  • Unknown recipient. Mail to an address you have not registered as a mailbox lands on the system mailbox. Settings → Inbox mailboxes shows discovered addresses with an occurrence counter; promote the high-volume ones into a real mailbox or dismiss them.
  • Customer sees their own thread split into two. A subject change without Re: prefix can force a new thread row. Both threads will land on the same row once the provider reasserts the conversation; until then, merge by replying from the older thread.

FAQ

Can a colleague see my drafts? Drafts are visible to anyone with access to the thread. You have one active draft per thread: saving a second draft on the same thread updates yours in place.

Can two operators reply at the same time? Send is locked while in flight, so the second send fails fast. The reply composer is not a real-time collaborative editor.

Where do AI suggestions come from? A per-tenant AI policy decides whether a suggestion is shown, drafted, or sent. See Auto-reply.

Anything unclear or wrong?Let us know →

FixControl is a trade name of FixControl B.V. i.o.