Skip to main content

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_until timestamp on the conversation.
  • While snoozed_until is in the future, the conversation is considered snoozed: it is filtered out of Open and shown under Snoozed.
  • The conversation's underlying status stays open the whole time — snooze is a derived state, not a separate status.
  • When snoozed_until passes, 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_message flag.
Two fields on the conversation

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
}'
FieldTypeRequiredDescription
snoozed_untilstring (ISO 8601, UTC)yesWhen 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_messagebooleanno (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.

Recommended default

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

ConditionResponse
snoozed_until is in the past or now422 Unprocessable Entity"snoozed_until must be in the future"
Conversation not found in your workspace404 Not Found
Agent lacks permission to act on another agent's conversation403 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 valueReturns
openOpen conversations excluding snoozed ones.
snoozedOpen conversations whose snoozed_until is in the future.
closedClosed 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 fieldDescription
change"snoozed" when a snooze is set, "unsnoozed" when it is cleared (manually, by the timer being removed, or by auto-reopen).
conversationThe updated conversation, including snoozed_until and snooze_reopen_on_message.
actorWho 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