# 30610: Message couldn't be delivered

Log Type: APPLICATION

Log Level: ERROR

## Description

This error occurs when Compliance Toolkit blocks a non-essential outbound message because the send attempt falls inside Quiet Hours for the recipient's local time. Quiet Hours enforcement uses the recipient's phone number area code by default and can use ZIP code data from Contact API when you provide it. Twilio returns 30610 when Quiet Hours handling is set to `Block` instead of rescheduling the message for a later delivery time.

### Possible causes

* The message was sent during Quiet Hours for the recipient's local time. In the US, Compliance Toolkit checks federal TCPA quiet hours from 9:00 PM to 8:00 AM and can also enforce state-specific quiet hours in supported states.
* Compliance Toolkit classified the message as non-essential based on the message content and context.
* You set `messageIntent` to a non-essential use case such as `marketing`, `events`, `education`, `polling`, or `announcements`, which keeps Quiet Hours enforcement in place.
* Quiet Hours handling for Compliance Toolkit is configured as `Block` instead of the default `Reschedule` behavior.
* The recipient's local time was inferred from the phone number area code, or from ZIP code data you supplied through Contact API, and that location placed the send attempt inside a restricted window.

### Possible solutions

* Send the message outside the recipient's local Quiet Hours window. For planned campaigns, schedule delivery for an allowed time instead of sending immediately.
* Change Compliance Toolkit Quiet Hours handling from `Block` to `Reschedule` if you want Twilio to deliver non-essential messages automatically after Quiet Hours end.
* Set `messageIntent` explicitly for each message so Compliance Toolkit uses your intended use case. Essential values such as `otp`, `notifications`, `fraud`, `security`, `customercare`, and `delivery` are exempt from Quiet Hours checks.
* Provide the recipient's ZIP code through Contact API when the phone number area code does not reflect the recipient's current location. This improves Quiet Hours accuracy.
* If you are building your own send timing workflow, create a scheduled message with `ScheduleType` and `SendAt` so the message is queued for a future delivery time.

#### Additional resources

* [Compliance Toolkit for Programmable Messaging](/docs/messaging/features/compliance-toolkit)
* [Contact API](/docs/messaging/features/contact-api)
* [Message Scheduling](/docs/messaging/features/message-scheduling)
