Operator inbox

One inbox for every channel

Live chat, email, and Discord are channel values over a single conversation model — so every thread lands in one queue with full history and context.

3 channels · 1 queueShared historyAI drafts waiting
Woes operator inbox with live chat, email, and Discord in one queue
One operator queue
Live chatEmailDiscord
The problem

Three channels, three tabs, three sources of truth

A developer starts in your Discord, follows up over email, then opens the widget on your docs. In most stacks that's three disconnected tickets and an operator stitching context back together by hand. Threads get dropped between tools, history is fragmented, and no one can see the whole customer.

Why it works

Support that spans a widget, an inbox, and a community server usually means three tools and three sets of history.

One conversation model

Channels are just a field. A thread that opens in Discord can continue over email without losing the customer, the history, or the agent.

Drafts before you open

The grounded agent writes the first reply and attaches its citations, so most threads arrive as a review-and-send instead of a blank box.

One-click takeover

Operators can step in on any thread at any time. Takeover is always one click away, and the sanitized agent trace explains how it got there.

One conversation model

Three channels collapse into one thread

A thread that opens in Discord can continue over email and finish in live chat — one customer, one history, one owner. Channels are just a field.

conversation · one customerlive
Continued on Live chatkept in sync
Continued on Emailkept in sync
Continued on Discordkept in sync
One operator inbox1-click takeover
Queue

Every channel, sorted into one stream

Chat, email, and Discord messages flow into a single prioritized queue. Delivery and unread state travel with the thread, so operators triage by what needs a human — not by which tool a message happened to arrive in.

  • Channel, delivery, and unread badges on every row
  • AI-drafted threads flagged and ready to review
  • Assignment and ownership visible at a glance
inbox · all channelslive
Stripe webhook returns 401chat · 2m
Rate limit on /ordersdiscord · now
SDK timeout in prodemail · 1m
AI draft ready for review→ maya
Context

The whole customer, in the thread

Open any conversation and the full cross-channel history is right there, alongside the API context the agent used to answer. Operators never switch tools to reconstruct what happened before they arrived.

  • Cross-channel timeline in a single view
  • Grounded citations attached to each AI reply
  • Customer identity resolved across channels
conversation · one customer
Opened in Discord · #api-help3d
Continued over email1d
Back on live chatnow
docs/auth.md POST /v1/authshared history
Handoff

The agent hands off, not drops off

When the agent is unsure, it doesn't guess — it clarifies or routes the thread to a human with the reason attached. Takeover keeps the customer in the same conversation, so escalation never feels like starting over.

  • Low-confidence threads escalate with a reason
  • Sanitized, operator-only agent trace on every reply
  • Customer stays in one continuous conversation
handoff · one thread
Why is my webhook signature failing intermittently?
Confidence low — routing to a human
Handed to Maya1-click takeover
How it works

Three steps, no heavy lift.

01step

Connect your channels

Drop the widget on your site, connect an inbound email address, and link your Discord server.

<script src="https://woes.dev/widget.js">
02step

Messages converge

Every inbound message becomes a conversation in one queue, tagged with its channel and delivery state.

chat · email · discord → one queue
03step

Review, takeover, resolve

Send the agent's grounded draft, edit it, or take over the thread — all without leaving the inbox.

draft ready → review → sent
03
channels, one inbox
01
conversation model
1-click
human takeover
FAQ

Unified inbox questions

Are live chat, email, and Discord really the same inbox?

Yes. Woes models channels as values over a single conversation and message schema, so a thread can move between live chat, email, and Discord while keeping one continuous history and one owner.

Can a human take over a conversation the AI started?

Any operator can take over any thread with one click. The agent's sanitized trace stays visible so you can see exactly what it did before you stepped in.

What happens when the AI is not confident?

The agent clarifies or hands off to a human instead of bluffing. Escalated threads arrive with the reason attached and the customer stays in the same conversation.

Does the customer see the channel switch?

From the customer's side it's one ongoing conversation. Operators see the channel and delivery state on each message; customers just get continuity.

See every channel in one queue

Connect live chat, email, and Discord and let grounded drafts meet your operators where the work already lives.