Bulk operations on conversations
What bulk operations exist
Six actions you can apply to many conversations at once:
- Resolve. Mark as resolved. Skip the resolution-prompt confirmation per conversation.
- Apply tag. Add one or more tags to all selected.
- Remove tag. Strip a tag from all selected.
- Archive. Move to archive (out of active inbox views).
- Snooze. Set the same snooze rule across all selected.
- Reassign. Move to a different team member or back to "unclaimed".
Up to 200 conversations per bulk action. Larger batches split automatically into 200-conversation chunks behind the scenes.
How to multi-select
Three selection patterns:
Click-and-shift.
- Click the first conversation's checkbox.
- Shift-click the last. Everything in between selected.
Select all visible.
- Click the header checkbox (top of the conversation list).
- All conversations on the current page selected (typically 50).
- Optionally click "Select all 312 matching" to expand to every conversation in the current filter.
Filter-based.
- Apply a filter (tag, status, channel, date range).
- Click "Select all matching" to operate on every conversation in the filter, even ones not currently visible.
Bulk resolve
The most common bulk action. Use it after a campaign or product launch where many conversations share a resolution:
- Filter to the conversations (e.g., tag =
launch-2026-q2). - Select all.
- Click "Bulk Actions > Resolve".
- Add a resolution note (optional but recommended for audit).
- Confirm.
Within 30 seconds, all selected conversations are marked resolved. The system fires conversation.resolved webhooks per conversation if subscribed.
Bulk tag application
Useful for retroactively categorizing:
- Filter to the conversations you want to tag.
- Select all.
- Click "Bulk Actions > Apply Tag".
- Pick existing tags or create new ones.
- Confirm.
Tags layered on top of existing tags. Pre-existing tags aren't removed.
Bulk archive
Archive removes conversations from active inbox views but keeps them queryable:
- Useful for seasonal campaign cleanup, year-end inbox grooming.
- Different from delete. Archived data stays indexed and searchable; resurfaces if the same customer returns.
To archive in bulk:
- Filter to old or low-priority conversations (e.g., status = resolved, last update > 30 days ago).
- Select all.
- Click "Bulk Actions > Archive".
Bulk snooze
For conversations awaiting external action (waiting on engineering, customer asked for time to respond):
- Select the conversations.
- Click "Bulk Actions > Snooze".
- Pick the wake time (1 hour, 1 day, 1 week, or custom).
- Confirm.
Each conversation reopens at the wake time and shows up in the active inbox again.
Bulk reassign
Useful for shift handoffs or rebalancing workload:
- Filter to one assignee (e.g., the agent going off-shift).
- Select all.
- Click "Bulk Actions > Reassign".
- Pick the new assignee or "Return to unclaimed pool".
The new assignee gets a single bulk notification (not one per conversation) to avoid notification floods.
Undo window
Every bulk action has a 30-second undo prompt:
Resolved 47 conversations. [Undo]
Click Undo within 30 seconds and the action reverses. After 30 seconds, the undo button disappears and the action is final.
Per-conversation revert is always possible after the 30-second window via the normal conversation actions, but it's slower (one click per conversation).
API for bulk operations
For automation or scripted cleanup:
curl -X POST https://api.askvault.co/v1/conversations/bulk \ -H "Authorization: Bearer ak_xxx" \ -H "Content-Type: application/json" \ -d '{ "conversation_ids": ["conv_a", "conv_b", "conv_c"], "action": "resolve", "params": {"resolution_note": "Auto-resolved post-campaign"} }'The API accepts the same six actions as the UI. Same 200-conversation cap per request. Response includes per-conversation success/failure.
Audit logging
Every bulk action is logged with:
- Author (user or API key).
- Action type.
- List of affected conversation IDs.
- Pre- and post-state.
- Timestamp.
Visible under Dashboard > Audit Log. Retained 365 days standard, 6 years Enterprise. Useful for proving compliance with retention policies.
Limits
- Max conversations per bulk action. 200 in one request (UI splits larger sets automatically).
- Concurrent bulk actions per workspace. 5.
- Bulk delete. Not available via the UI for safety; use the API with an explicit deletion confirmation flag.
Common pitfalls
Selected the wrong filter, bulk-resolved 500 conversations. Click Undo within 30 seconds. After that, filter to the affected resolved conversations (filter by "resolved in last 5 min") and bulk-reopen.
Bulk tag overwrites existing tags. It doesn't. Bulk tag is additive. To remove a tag, use "Remove tag" action explicitly.
Reassigned to wrong agent. Undo within 30 seconds, or reassign again with the correct target.
Webhook flood from bulk resolve. Each conversation fires a conversation.resolved webhook individually. Subscribe to the conversation.bulk_resolved event instead (Business and above) for a single aggregate webhook per bulk operation.
FAQ
Can I undo a bulk action after the 30-second window?
Partially. Each conversation can be individually reverted (reopened, untagged, etc.) but there's no one-click bulk undo after the window. Use a script via the API for fast bulk revert.
Can I bulk-delete conversations?
Not via the UI for safety. Use the API with action=delete and a confirmation parameter. Deletion is irreversible after 30 days.
What's the largest bulk operation supported?
200 per single request. The UI auto-splits larger selections into sequential 200-conversation chunks; in practice you can act on 10,000+ conversations in one UI action, the system just batches them.
Are bulk operations transactional?
Yes. If any conversation in the batch fails (permission error, already deleted), the action rolls back for that conversation only. Others succeed.
Can I schedule bulk actions for later?
Not today. Bulk actions run immediately. Scheduled bulk operations on the roadmap.
Related guides
- Conversation lifecycle
- Tags on conversations
- Saved inbox views
- Snoozing conversations
- Conversations API reference