Skip to content
Try Free →

Resolve a conversation

Last updated: 3 min read

When to resolve

Resolve when there is nothing left to do:

  1. The customer confirms it's fixed. "Thanks, that fixed it!"
  2. No reply after a follow-up. You answered and the customer went quiet.
  3. The conversation needs no action. Spam, a duplicate, or a test.

A later message from the same customer starts a new conversation. The resolved one stays resolved.

How to resolve

One conversation. Open it in the Help Desk inbox and click Resolve. This button works on escalated conversations, the ones a person was asked for or a teammate took over.

Many conversations. Select them in the inbox and choose Resolve from the bulk actions. Up to 200 conversations per action. See bulk operations.

With an automation rule. A rule with the Auto-resolve action resolves a conversation when its trigger matches. See automation rules.

There is no resolution note. To record what was done, add an internal note before you resolve.

What happens on resolve

When a teammate resolves a conversation:

  1. The state changes to resolved and the resolution time is recorded.
  2. The assignee is cleared and the live session ends.
  3. The AI is turned back on for that customer.
  4. The resolve is recorded in the conversation's activity log with who did it.
  5. In the website widget, a visitor chatting with the agent sees the agent leave, and the AI answers their next message. This happens with the Resolve button, not with bulk resolve.
  6. Waiting conversations may be assigned. If your Help Desk uses auto-assignment, the agent who clicked Resolve gets the oldest unassigned conversation.

Nothing is sent to the customer. There is no CSAT survey and no CRM status sync.

The conversation.resolved webhook fires only when an automation rule auto-resolves. Resolving in the Help Desk or in bulk does not send it today. See resolution webhooks for what is rolling out.

Other ways a conversation gets resolved

The idle timeout. An AI conversation that has been silent for 4 hours is resolved when the same customer writes again. Their new message starts a new conversation. This applies to AI conversations only, never to escalated ones.

Customer confirmation through the API. If your own app asks the customer "Did this solve your issue?", it can record the answer with POST /v1/agent/resolve and your API key. A "yes" marks the conversation as resolved by the AI.

There is no 7-day auto-resolve and no background sweep that resolves idle conversations.

Rolling out: not yet switched on. When an automation rule resolves a conversation, or the customer confirms it in the widget or through POST /v1/agent/resolve, a widget visitor who was chatting with an agent will see the agent leave, the same as with the Resolve button. Once CSAT surveys are on for your workspace, these resolves will also ask for a rating, but only for conversations a teammate worked on, unless you choose to include AI-only conversations in your CSAT settings. A "no" through POST /v1/agent/resolve, or a call to POST /v1/agent/escalate, will alert the inbox and send the conversation.escalated webhook once per handoff. The response will include a handoff_token your app can use to connect the customer to the live chat.

CSAT (customer satisfaction)

AskVault does not send CSAT surveys. Nothing asks the customer for a rating when a conversation is resolved, on any channel.

To track CSAT:

  1. Ask the customer yourself, for example in your own follow-up email.
  2. Record the rating with POST /v1/agent/csat, passing the conversation ID, a score from 1 to 5, and an optional comment of up to 2,000 characters.
Terminal window
curl -X POST https://api.askvault.co/v1/agent/csat \
-H "Authorization: Bearer ak_xxx" \
-H "Content-Type: application/json" \
-d '{"conversation_id": "conv_xxx", "score": 5, "comment": "Quick and clear"}'

A score of 2 or less marks the conversation's resolution as negative in your reports. Recorded ratings appear as average CSAT in the Help Desk reports.

Separately, visitors can give a thumbs up or down on individual AI answers in the widget. That is answer feedback, not CSAT, and it fires the conversation.feedback webhook.

Reopening a resolved conversation

Open the resolved conversation in the Help Desk and click Reopen. It goes back to active.

A reply from the customer does not reopen it. Their message starts a new conversation, and the teammate who resolved the old one is not notified.

Resolution reporting

The Help Desk reports show, for the last 30 days by default:

  • AI resolution rate. Conversations the AI resolved without a person.
  • Resolution breakdown. Confirmed, assumed, escalated and negative resolutions.
  • Average CSAT, from ratings recorded through the API.

Rolling out (not yet switched on):

  • A conversation a teammate closed is never counted as an AI resolution, even when nobody replied or claimed it first, for example a bulk resolve from the Help Desk list.
  • When there is no AI resolution rate to show, the tile shows ": " and says why: your plan doesn't include the Help Desk, the report couldn't load, or no conversation in the range was handled by the AI alone. Before, the Overview showed your answer rate in its place.
  • First response time counts only real handoffs and real replies. It is measured from the moment a conversation was handed to your team to the first reply that was actually sent. A scheduled reply counts from when it went out, not from when it was queued. Conversations the AI closed on its own are not counted as handoffs, and replies that took longer than 24 hours are included rather than left out. The Help Desk agent report's "Median 1st reply" uses the same rule.

See analytics.

Resolution webhooks

Subscribe to the conversation.resolved event to hear about resolutions.

Today it fires only when an automation rule auto-resolves a conversation.

Rolling out (not yet switched on): it fires once for every resolution, however it was made: an agent's Resolve, the status menu, a bulk resolve, an idle conversation timing out, the customer confirming their question was answered in the widget, or the /v1/agent/resolve API. The payload looks like this:

{
"event": "conversation.resolved",
"timestamp": "2026-05-15T10:30:01",
"data": {
"conversation_id": "conv_xxx",
"channel_type": "widget",
"message_count": 6,
"status": "resolved",
"resolution_state": "confirmed",
"resolved_at": "2026-05-15T10:30:00",
"resolved_by": "agent",
"agent_id": "usr_xxx",
"source": "inbox",
"idempotency_key": "conv_xxx:2026-05-15T10:30:00"
}
}

resolved_by is agent, customer or system (idle timeout). source is inbox, status_menu, bulk, widget, api or idle_timeout. Re-resolving a conversation that's already resolved doesn't send a second event. Reopening and resolving it again does, with a new idempotency_key. Use that key to ignore a redelivery. The payload carries no customer contact details.

Limits

  • Bulk resolve. 200 conversations per action.
  • CSAT comment. 2,000 characters.
  • CSAT score. Whole numbers from 1 to 5.
  • Retention. Resolved conversations are kept for your plan's retention period, from 7 days on Free to 365 days on Business and Enterprise. See conversation lifecycle.

Common pitfalls

Resolve button returns an error. The single Resolve button only works on escalated conversations. Use bulk Resolve for others.

The customer wrote again and you can't find it. Their reply started a new conversation. Search by their email or name.

No CSAT data. Expected unless you record ratings through the API. AskVault does not collect them for you.

FAQ

Can I undo a resolve?

Yes. Click Reopen on the resolved conversation.

Does the customer know the conversation is resolved?

Not from AskVault. No message is sent. A widget visitor who was chatting with an agent sees the agent leave.

Can a rule auto-resolve?

Yes, with the Auto-resolve action in automation rules.

Do resolved conversations affect SLA reports?

Resolving doesn't settle an SLA. Only a teammate's first reply does. See SLA policies.

Was this page helpful?