Engagement state — pending vs engaged
Conversation state in Atender has two independent axes:
- Lifecycle status — Active / Snoozed / Done / Archived — Where in the lifecycle is it?
- Engagement state — Pending / Engaged — Whose court is the ball in right now?
These are orthogonal — every Active conversation is also either Pending or Engaged. The two together tell you what to actually work on.
What each engagement state means
- Pending — Ball is in our court. The customer has spoken and we haven’t (yet) responded since their last message. — Reply, snooze with intent, or escalate
- Engaged — Ball is in the customer’s court. We’ve replied since their last message; we’re waiting on them. — Wait, follow up if they go silent, or close out if appropriate
A conversation flips between Pending and Engaged automatically as messages flow:
- Customer sends a message → flips to Pending
- Agent replies → flips to Engaged
- Customer replies → flips back to Pending
- And so on
There is one configuration-based exception: custom inbound endpoints can be configured as no-reply. Deliveries through those endpoints create or update the conversation as Engaged because the workspace is not expected to respond, even though the latest visible message is inbound. This comes from the endpoint configuration — it’s not an agent override.
Review-channel conversations have a similar narrow exception. A newly imported Trustpilot review may appear Active + Engaged because no agent reply is owed at creation time. If the reviewer later revises that review, the conversation can flip to Pending so the team can follow up on the new customer signal.
Why this matters
The lifecycle status alone (Active / Snoozed / Done) doesn’t tell you the most important question: do I need to reply right now? You can have 200 Active conversations where 180 are Engaged (we already replied) and only 20 are Pending (waiting on us).
Knowing which of the two a conversation is in is the difference between drowning in your inbox and knowing what to focus on. See Where you can see engagement for where the split is surfaced today.
How engagement is computed
Engagement is deterministic — Atender computes it automatically by walking the conversation timeline, newest first, and stopping at the first signal that says one side or the other holds the ball. There’s no manual override. The rules in plain English:
- A conversation starts Pending when the customer’s first message arrives.
- Last meaningful event was an agent message → Engaged.
- Last meaningful event was a customer message → Pending.
- An assignment, team change, or AI handoff event leaves the conversation Pending — somebody on our side now owns it but hasn’t replied yet.
- For voice:
customer_answeredandcall_answeredcount as Engaged (both parties active on a call). - An automated message (
isAutomated) is skipped — unless the agent pipeline authored it. An Agent Stack answer is a real reply and flips the conversation to Engaged even though it also carries the automated flag on email, Slack and voice. - Also skipped: system notifications, internal notes, and one of our own messages whose send failed — an undelivered reply leaves the customer waiting exactly as if we had written nothing.
- Custom inbound endpoint deliveries from endpoints configured as no-reply count as Engaged, because that endpoint does not expect a workspace response.
- Newly imported Trustpilot reviews can count as Engaged at creation time because no agent reply is owed yet; later review revisions can count as Pending when they need follow-up.
Snoozed and Done conversations also have engagement state — it’s just less actionable on a moment-to-moment basis. A Done + Engaged conversation is “we said our piece, customer hasn’t replied”. Done + Pending is rarer than it sounds: a customer reply to a Done conversation reopens it to Active, so the usual result is Active + Pending. You reach Done + Pending by marking a Pending conversation Done, or when the reopen is deliberately suppressed for machine-written mail.
Don’t confuse engagement with status
Easy mistake: treating “Active” as the same as “Pending.”
- Active = lifecycle bucket. Conversation is alive, not closed.
- Pending = engagement state. We owe a reply.
Most Pending conversations are also Active. But:
- An Active + Engaged conversation is alive but waiting on the customer
- A Done + Pending conversation was closed while we still owed a reply — a customer writing back would have reopened it to Active instead
The two-axis model makes this visible.
Where you can see engagement
The conversation list cannot be filtered or sorted by engagement. There is no Pending/Engaged quick filter, no engagement field on a saved filter, and the public API’s conversation list filters on status, channel, contact, team, tag and date only — engagement comes back on each conversation but you cannot ask for one value of it.
Where the split is surfaced:
- Dashboard → Right Now — The open queue broken into New, Pending and Engaged, sliceable by channel, team and agent. New is the subset of Pending nobody has ever answered; Pending here means we replied once and the customer has written back since.
- Engagement card — The same three numbers as a single card.
- Conversation payload (API) —
engagementStateon each conversation, as a read-only field.
Clicking a Right Now cell deep-links into the inbox, but because there is no engagement filter both Pending and Engaged land on the Active tab. A first-class engagement filter is a known gap, not a setting you are missing.
A common gotcha — automation messages
Atender deliberately skips automation messages when computing engagement, so an auto-acknowledgement or a CSAT follow-up does not mask a conversation that still needs a human reply.
The rule is narrower than “skip anything automated”. A message is skipped when it is automated and the agent pipeline did not author it. An Agent Stack reply is automated in the sense that no human typed it, but it is the substantive answer, so it counts as Engaged. Keying on the flag alone used to make the same AI answer count on web chat and not on email, Slack or voice.
The flag is set by Atender when the message is sent; there is no tenant-facing switch for it, and it is not a field you can set through the API. So a Pending pile that “looks engaged” is not something you fix by re-tagging your automations — collect the conversation IDs and raise it, because engagement is computed from the timeline and a wrong answer is a bug.
See also
- Conversation statuses — the lifecycle axis
- What is the conversation list?
- FAQ — Status vs engagement