Snooze & Postpone Conversations
Snoozing lets you postpone a conversation until you are ready to deal with it. A snoozed conversation leaves the Open tab and moves to the Snoozed tab until the time you choose — then it returns to Open on its own. It is the inbox equivalent of "remind me later".
This is useful when you are waiting on a customer to gather information, a third party to respond, or simply want to clear your active queue of things you cannot action right now.
How it works
- Snoozing sets a
snoozed_untiltimestamp on the conversation. - While
snoozed_untilis in the future, the conversation is considered snoozed: it is filtered out of Open and shown under Snoozed. - The conversation's underlying
statusstaysopenthe whole time — snooze is a derived state, not a separate status. - When
snoozed_untilpasses, the conversation simply reappears in Open. Expiry is evaluated at query time — there is no background job and no extra event when the timer lapses. - You can optionally have an incoming customer message clear the snooze immediately (auto-reopen). This is controlled per snooze by the
reopen_on_messageflag.
Snooze adds two fields to the conversation object: snoozed_until (the ISO 8601 UTC timestamp) and snooze_reopen_on_message (the boolean auto-reopen choice). Both are null when the conversation has never been snoozed or after it has been unsnoozed.
Snooze a conversation
curl -X POST "https://api.sendseven.com/api/v1/conversations/conv_xyz789/snooze" \
-H "Authorization: Bearer $SENDSEVEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"snoozed_until": "2026-06-23T09:00:00Z",
"reopen_on_message": true
}'
| Field | Type | Required | Description |
|---|---|---|---|
snoozed_until | string (ISO 8601, UTC) | yes | When the conversation should return to Open. Must be in the future — a past timestamp returns 422. Send as a timezone-aware/UTC datetime; compute the absolute time from the user's local timezone client-side. |
reopen_on_message | boolean | no (default false) | If true, an incoming customer message clears the snooze and returns the conversation to Open immediately. If false, only the timer un-snoozes it. |
The endpoint returns the updated conversation object, now including snoozed_until and snooze_reopen_on_message.
The SendSeven inbox UI defaults the "reopen automatically when the customer replies" checkbox to on, so agents do not miss a reply while a conversation is snoozed. We recommend the same default in your own integrations.
Validation
| Condition | Response |
|---|---|
snoozed_until is in the past or now | 422 Unprocessable Entity — "snoozed_until must be in the future" |
| Conversation not found in your workspace | 404 Not Found |
| Agent lacks permission to act on another agent's conversation | 403 Forbidden |
Unsnooze a conversation
Clear the snooze and return the conversation to Open immediately:
curl -X DELETE "https://api.sendseven.com/api/v1/conversations/conv_xyz789/snooze" \
-H "Authorization: Bearer $SENDSEVEN_API_KEY"
This nulls both snoozed_until and snooze_reopen_on_message and returns the updated conversation. It is idempotent — calling it on a conversation that is not snoozed is a no-op (and still safe).
Auto-reopen on incoming message
When a conversation was snoozed with reopen_on_message: true, the first genuine inbound customer message clears the snooze automatically across every channel (WhatsApp, Telegram, SMS, Messenger, Instagram, email, live chat). The conversation returns to Open and a conversation.updated webhook is emitted with "change": "unsnoozed".
Outbound/agent messages and channel echoes (for example, a reply sent from the WhatsApp Business app) never trigger auto-reopen — only real customer messages do.
Listing snoozed conversations
The conversation list endpoint exposes the three tabs via the status filter:
# Snoozed tab — open conversations whose snoozed_until is in the future
curl "https://api.sendseven.com/api/v1/conversations?status=snoozed" \
-H "Authorization: Bearer $SENDSEVEN_API_KEY"
status value | Returns |
|---|---|
open | Open conversations excluding snoozed ones. |
snoozed | Open conversations whose snoozed_until is in the future. |
closed | Closed conversations. |
The open filter deliberately excludes snoozed conversations, and the "needs reply" badge counts do the same, so snoozing genuinely removes a conversation from the active queue.
Webhook: conversation.updated
Snoozing and unsnoozing both emit a conversation.updated webhook (and the equivalent real-time WebSocket event), so your systems can move the conversation between tabs live.
{
"id": "evt_conv_010",
"type": "conversation.updated",
"event_id": "evt_conv_010",
"created_at": "2026-06-22T14:00:00Z",
"tenant_id": "tenant_abc123",
"data": {
"change": "snoozed",
"conversation": {
"id": "conv_xyz789",
"channel_id": "ch_123",
"contact_id": "ct_456",
"status": "open",
"subject": null,
"snoozed_until": "2026-06-23T09:00:00Z",
"snooze_reopen_on_message": true,
"created_at": "2026-06-22T10:29:00Z"
},
"actor": {
"user_id": "user_1a2b3c"
}
}
}
data field | Description |
|---|---|
change | "snoozed" when a snooze is set, "unsnoozed" when it is cleared (manually, by the timer being removed, or by auto-reopen). |
conversation | The updated conversation, including snoozed_until and snooze_reopen_on_message. |
actor | Who triggered the change (the acting user). Omitted for system-triggered changes such as auto-reopen on an inbound message. |
See the full Webhook Events Reference for how conversation.updated fits alongside conversation.created and conversation.closed.
Next steps
- Conversations Overview — statuses, assignment, notes, AI assist, and modes
- Webhook Events Reference — all conversation event payloads