Conversation lifecycle in AskVault
The six conversation states
Every AskVault conversation has a state that determines how the bot, your agents, and the inbox UI treat it. The states:
- Open. Bot is actively engaging. New customer messages get bot responses.
- Claimed. An agent took ownership. Bot stops auto-responding. Agent replies inline.
- Escalated. Bot decided (or was asked) to hand off to a human. Pending agent pickup.
- Snoozed. Agent decided to pause. Conversation hidden from main view until snooze expires.
- Resolved. Conversation is closed. Bot doesn't respond to follow-ups in this thread.
- Archived. Resolved + hidden from default inbox views. Still searchable, just out of the way.
Transitions happen automatically based on signals, or manually when an agent overrides.
How conversations start: open
Every conversation starts in open state when the customer sends their first message. The bot processes the message via knowledge retrieval, fires any triggered skills, and responds.
While the state is open, the bot keeps responding to new messages from this customer. Multi-turn conversation context maintains across turns.
Open state has no time limit. A customer can chat with the bot for hours; the conversation stays open until something transitions it.
Auto-escalation
Three signals automatically transition open conversations to escalated:
- Customer explicitly asks for a human. Trigger phrases like "talk to a person", "speak to an agent", "human please". Configurable under escalate_to_human.
- Low-confidence chain. Bot answers with
confidence: "low"for 2+ consecutive turns. Retrieval keeps coming back empty. - Sentiment trigger. sentiment_router detects frustration or anger above the configured threshold.
When auto-escalation fires:
- Bot stops auto-responding to new messages in this conversation.
- Conversation appears in your Live Chat inbox tagged for escalation.
- Optional: Slack alert pings your support channel.
Manual claim
An agent in your inbox can claim a conversation, transitioning it to claimed. Two paths:
- From the inbox view. Agent sees the conversation, clicks Claim.
- API.
PATCH /v1/conversations/{id}with{"status": "claimed", "assigned_to": "agent@yourco.com"}.
When claimed:
- Bot stops auto-responding.
- The agent's name appears in the conversation header for visibility to teammates.
- Customer sees agent messages flowing back through their original channel.
Snooze
For conversations that need follow-up later (waiting on customer info, follow-up after a fix), the agent can snooze:
- Snooze for X hours. Conversation hides from default view; re-surfaces after the timer.
- Snooze until Y date/time. Useful for "follow up Monday" patterns.
- Snooze until customer replies. Re-surfaces when a new customer message arrives.
Snoozed conversations don't trigger SLA timers (configurable). Don't snooze something to game your SLA stats; use it for genuinely-deferred follow-ups.
Resolve
Two paths to resolved:
- Agent manually resolves. Clicks Resolve in the inbox. Confirms the conversation is done.
- Auto-resolve. Open conversations with no activity for 7 days auto-resolve. Configurable threshold under Automation Rules > Auto-resolve.
When resolved:
- Bot doesn't respond to new messages in this thread.
- If the customer replies, the conversation re-opens automatically as a new "follow-up" linked to the resolved one.
- Analytics counts the conversation as completed.
Archive
After resolution, conversations live in the inbox for 30 days. You can manually archive earlier to clean up the default view:
- Archive button in the conversation header.
- Bulk archive from the inbox view (multi-select then Archive).
Archived conversations stay searchable for the full retention period (365 days standard, 6 years Enterprise). They just don't clutter your default "all conversations" view.
Re-opening conversations
If a customer comes back after a resolved or archived conversation:
- Same thread. A new message in the same channel context auto-re-opens the conversation. The bot picks up with full prior context.
- New thread. A different channel context (different widget session, different email thread) creates a fresh conversation linked to the customer's profile.
Re-open transitions move the state back to open.
Bulk transitions
For inbox cleanup, bulk-transition multiple conversations:
- Multi-select in the inbox view.
- Apply action: Claim, Resolve, Archive, or Tag.
- Confirm.
Up to 100 conversations per bulk operation. For larger sets, use the conversations API for programmatic transitions.
Webhook events per transition
Each state transition fires a webhook event:
conversation.started(Open).conversation.escalated(Open -> Escalated).conversation.claimed(Escalated/Open -> Claimed).conversation.snoozed(any -> Snoozed).conversation.resolved(any -> Resolved).conversation.archived(Resolved -> Archived).conversation.reopened(Resolved -> Open).
Subscribe under Dashboard > Webhooks to integrate with your CRM, support tool, or alert system.
Limits
- Plan availability. Conversation lifecycle is on every paid plan.
- Auto-resolve threshold. Default 7 days; configurable 1 to 90 days.
- Retention. 365 days standard, 6 years Enterprise.
Common pitfalls
Conversations stay open forever. Auto-resolve threshold is too long or disabled. Set a reasonable cap (7 days for most teams).
Resolved conversations re-open unexpectedly. A customer replied. By design. If you want a "this conversation is closed permanently" path, archive instead of resolve.
Snoozed conversations forgotten. Snooze indefinitely is a danger pattern. Always set a snooze timer; default 24 hours.
Bulk transitions slow. Large operations (50+ conversations) take a few seconds to process. Don't navigate away during the operation.
FAQ
Can I disable auto-resolve?
Yes. Automation Rules > Auto-resolve > Disabled. Conversations stay open indefinitely until manually resolved.
Does the bot respond in claimed conversations?
No. Once an agent claims, the bot steps aside. The agent has full control. If the agent un-claims (releases the conversation), the bot can resume.
How are SLAs counted across states?
SLA timers run during open and escalated states. They pause during snoozed and claimed states (in claimed, the agent is actively handling). They stop at resolved.
Can I customize the state machine?
The six states are fixed but the transition rules are configurable. Add custom transition triggers under Automation Rules > Conversation Transitions.
Can I delete a conversation permanently?
Yes. DELETE /v1/conversations/{id} removes the conversation and its messages. Audit log entries retain.
Related guides
- Tags on conversations
- Snoozing conversations
- Saved inbox views
- Internal notes
- Escalate to human skill