> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Horas de silencio: puertas de canal a nivel de organización vs. la ventana de respaldo de campañas

> Elija su postura de horas de silencio: la puerta de canal por organización, la ventana de respaldo para drip/journey y cómo interactúan los dos controles para envíos 1:1 públicos y tráfico de campañas.

# Horas de silencio: puertas de canal a nivel de organización vs. la ventana de respaldo de campañas

La puerta de horas de silencio de Orbit pertenece al arrendatario: todo lo
que hay en esta página es un control que **usted** configura (o decide
dejar desactivado). La única excepción es la ventana federal TCPA de voz
para destinatarios estadounidenses, cubierta en su propia sección más
abajo. Activar las horas de silencio es su decisión — nada de esto lo
exige CAN-SPAM o el RGPD.

Esta página es el manual de operaciones de esa puerta. Tres superficies
componen su postura:

1. **La puerta de canal a nivel de organización** — interruptores por
   canal en los ajustes de la organización
   (`settings → quiet_hours.<channel>.enabled`), escritos a través de
   `PUT /api/v1/settings/general` y reflejados en los ajustes de la
   organización del panel (véase también
   [Postura de cumplimiento](/compliance/posture-overview)).
2. **La ventana de respaldo de campañas** — un único par inicio/fin a
   nivel de organización para envíos drip y journey cuya fila de campaña
   no lleva una ventana explícita. En el panel: **Ajustes → Límites de
   campaña → Horas de silencio predeterminadas**; por la API:
   `GET`/`PUT /api/v1/campaigns/quiet-hours/settings`.
3. **El endpoint de vista previa** —
   `GET /api/v1/compliance/quiet-hours/preview`, una verificación de solo
   lectura que responde «¿pasaría ahora mismo este envío a este
   destinatario?». Ejecútelo antes de cada despliegue; se desarrolla en el
   manual más abajo.

## Las dos ventanas

| Control                                                                            | Cubre                                                                                                                 | Configurado dónde                                                                                               |
| ---------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| Puerta de canal a nivel de organización (`organizations → settings → quiet_hours`) | Todo envío en cada canal que active: panel, API, flujos, despacho de campañas                                         | El bloque `quiet_hours` en los ajustes de la organización (véase abajo)                                         |
| Ventana de respaldo de campañas                                                    | Solo envíos drip + journey, y solo cuando la fila de campaña no tiene `quiet_hours_start` / `quiet_hours_end` propias | Ajustes → Límites de campaña → Horas de silencio predeterminadas, o `campaigns/quiet-hours/settings` por la API |

El respaldo de campaña es exactamente lo que su nombre dice — un respaldo,
no una segunda puerta. Orden de resolución para un envío de campaña: la
ventana propia de la fila de campaña, luego el respaldo de la
organización, luego el valor predeterminado de plataforma 21:00 → 09:00
(las horas de silencio van de 21:00 a 9:00 hora local del destinatario).

Los dos controles pueden discrepar. Un envío despachado por campaña
evalúa la ventana del camino de campaña como una capa; la puerta de canal
de la organización — cuando ha activado ese canal — es una capa separada
evaluada en el punto de envío. Trate la puerta de la organización como la
postura para tráfico 1:1 y el respaldo de campaña como el régimen
predeterminado para tráfico masivo. Un envío bloqueado informa
`next_allowed_at` — programe alrededor de la ventana en lugar de reintentar.

Los respaldos que puede fijar en cualquiera de las capas solo pueden
**estrechar** la envolvente; nunca ensanchan una puerta de canal que haya
activado.

## Puerta por canal a nivel de organización

La puerta de canal es opt-in por canal. Cada entrada por canal admite:

| Campo          | Significado                                                                                                                                       |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `enabled`      | Si la puerta se aplica a este canal. Todos los canales están en `false` por defecto.                                                              |
| `start_hour`   | Hora de inicio inclusiva en formato 24h (0–23), p. ej. `8` para 8:00 hora local del destinatario.                                                 |
| `end_hour`     | Hora de fin exclusiva en formato 24h (0–23), p. ej. `21` para 21:00 hora local del destinatario. `start_hour > end_hour` es una ventana nocturna. |
| `allowed_days` | Lista opcional de días de la semana permitidos, `0` = domingo … `6` = sábado. Omita para permitir todos los días.                                 |

Claves a nivel de organización (se aplican a todos los canales a la vez):

| Clave                           | Significado                                                                                                                                                                                                         |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `default`                       | Una ventana parcial que rellena los campos que una entrada por canal no fijó.                                                                                                                                       |
| `unknown_timezone_policy`       | `skip` (predeterminado), `enforce_utc` o `deny` — véase la sección de zona horaria más abajo.                                                                                                                       |
| `consent_overrides_quiet_hours` | Cuando es `true` (predeterminado), un destinatario con registro de consentimiento explícito atraviesa la puerta — la excepción TCPA de «consentimiento expreso previo». Funciona solo en canales que no son de voz. |

### Postura predeterminada por canal

Hasta que active un canal, nada se retiene. Cuando active un canal sin
especificar horas, entran en juego las horas de la plataforma:

| Canales                                                        | Ventana predeterminada (hora local del destinatario) |
| -------------------------------------------------------------- | ---------------------------------------------------- |
| `sms`, `mms`, `rcs`, `viber`, `telegram`, `voice`              | 08:00–21:00                                          |
| `whatsapp`, `instagram`, `messenger`, `apple_messages`, `line` | 09:00–21:00                                          |
| `email`, `fax`, `push`, `web_chat`                             | 08:00–21:00 cuando está activado                     |

El conjunto completo de canales que acepta la puerta: `sms`, `mms`,
`whatsapp`, `rcs`, `viber`, `telegram`, `voice`, `email`, `instagram`,
`messenger`, `line`, `apple_messages`, `fax`, `push`, `web_chat`.

### Dos excepciones que mantienen el tráfico esencial fluyendo

* **Consentimiento expreso previo** — con `consent_overrides_quiet_hours`
  en `true` (predeterminado), un destinatario con registro de
  consentimiento explícito atraviesa cualquier canal que no sea de voz.
  La voz nunca toma esta excepción.
* **Canal de tráfico transaccional** — los envíos que quien llama marca
  como transaccionales (OTP, alertas, notificaciones de cuenta) están
  exentos de la puerta incluso en un canal activado. La voz tampoco toma
  esta excepción.

Ponga `consent_overrides_quiet_hours` en `false` solo si quiere envíos
detenidos sin excepciones de consentimiento.

## Ventana de respaldo de campañas

Todo llamante autenticado la lee; solo el propietario/administrador la
escribe.

Lea la ventana de respaldo actual:

```bash theme={null}
curl https://api.orbit.devotel.io/api/v1/campaigns/quiet-hours/settings \
  -H "Authorization: Bearer $ORBIT_API_KEY"
```

```json theme={null}
{
  "enabled": false,
  "start_hour": null,
  "end_hour": null,
  "platform_default_start": 21,
  "platform_default_end": 9
}
```

`platform_default_start` / `platform_default_end` repiten las horas que
usan los envíos drip y journey mientras la anulación está desactivada —
herédelas o reemplácelas, usted decide. En el panel este formulario es
**Ajustes → Límites de campaña → Horas de silencio predeterminadas**.
Fije su propia ventana (ambas horas son obligatorias cuando `enabled` es
true):

```bash theme={null}
curl -X PUT https://api.orbit.devotel.io/api/v1/campaigns/quiet-hours/settings \
  -H "Authorization: Bearer $ORBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "enabled": true, "start_hour": 22, "end_hour": 7 }'
```

Vuelva al valor predeterminado de la plataforma:

```bash theme={null}
curl -X PUT https://api.orbit.devotel.io/api/v1/campaigns/quiet-hours/settings \
  -H "Authorization: Bearer $ORBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "enabled": false }'
```

Las ventanas nocturnas (p. ej. inicio `22`, fin `7`) se aceptan en ambas
capas — un par `start > end` cruza la medianoche.

## Resolución de la zona horaria del destinatario

La puerta trabaja en *hora local del destinatario*. La resolución de zona
horaria sigue esta cadena:

1. Una sugerencia explícita de `recipientTimezone` del llamante, cuando
   se proporciona.
2. Código de área de EE. UU. → zona horaria IANA, para números +1.
3. Código de país E.164 → una zona horaria IANA representativa (Europa,
   Asia, las Américas y mercados operadores comunes).
4. Para destinatarios de correo electrónico, la zona horaria predeterminada
   de la organización.
5. Cuando nada de lo anterior se resuelve — la `unknown_timezone_policy`
   de la organización (también configurable en el panel en
   **Ajustes → Voz**):

| Política                                                                       | Comportamiento                                                                        |
| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------- |
| `skip` (predeterminado para cada canal excepto voz a destinatarios de EE. UU.) | Permitir — fail-open para destinatarios fuera de la jurisdicción estadounidense.      |
| `deny` (predeterminado solo para voz a destinatarios de EE. UU.)               | Bloquear. Devuelve `422 QUIET_HOURS_TIMEZONE_UNKNOWN` (voz: `TCPA_TIMEZONE_UNKNOWN`). |
| `enforce_utc`                                                                  | Evaluar contra UTC — una ventana determinista independientemente del destinatario.    |

Si el destinatario sí resuelve una zona horaria, un bloqueo normal de
canal activado devuelve `422 QUIET_HOURS_BLOCKED` (voz:
`TCPA_DIALING_WINDOW_BLOCKED`) con la ventana y `next_allowed_at` en los
detalles del error.

## Excepción federal TCPA de voz

La voz de campaña y de marcador hacia **destinatarios estadounidenses** se
bloquea de forma estricta fuera de la ventana federal 8:00–21:00 hora
local del destinatario — ninguna puerta de organización, ventana de
respaldo o indicador de consentimiento la relaja, y un destinatario
estadounidense cuya zona horaria no pueda resolverse se bloquea
fail-closed. Este es el único control de la plataforma; se aplica solo a
voz de campaña y marcador, no a llamadas ad-hoc 1:1 ni a canales de
mensajería.

Los destinatarios fuera de EE. UU. siguen la puerta normal: la política
`skip` fail-open se aplica a destinatarios fuera de la jurisdicción
estadounidense, y su propia puerta del canal de voz (si está activada) se
superpone encima. Siempre puede estrechar más allá de la ventana federal
— p. ej. una puerta de voz de 09:00–20:00 hora local del destinatario —
pero nunca ensancharla.

La voz ad-hoc 1:1 desde el panel fuera de la ventana federal marca con un
registro de aviso, a menos que haya activado el canal `voice` en la puerta
de la organización, lo que lo convierte en una retención estricta
(`422 TCPA_DIALING_WINDOW_BLOCKED`).

## El consentimiento anula las horas de silencio

Con `consent_overrides_quiet_hours: true` (predeterminado), un
destinatario para quien guarda consentimiento explícito atraviesa la
puerta en canales **que no son de voz** — la excepción TCPA de
«consentimiento expreso previo». Un destinatario permitido sigue siendo
alcanzable dentro de sus horas cerradas; un contacto sin registro de
consentimiento se retiene hasta que se abra la ventana.

Póngalo en `false` cuando el consentimiento nunca deba relajar su
ventana. La puerta ignora por completo el indicador en el canal `voice` —
la voz depende de la ventana federal y de las superposiciones estatales,
no de la excepción de consentimiento.

## Superposiciones estatales mini-TCPA

Algunos estados de EE. UU. superponen una ventana de llamada más estricta
o una prohibición por día de la semana sobre las horas federales (la
prohibición dominical de Florida, las ventanas de Oklahoma/Mississippi y
otras). Las superposiciones se componen con la regla **gana la más
restrictiva**: un envío debe superar la ventana federal *y* cada
superposición estatal aplicable; la superposición puede estrechar pero
nunca ensanchar. Los bloqueos de voz se rastrean con estos motivos de
fallo:

* `outside_state_window` — una superposición estatal estrechó la ventana
  y esta hora cayó fuera de ella.
* `state_blocked_day` — la superposición prohíbe marcar en este día de la
  semana por completo.

La tabla completa por estado y qué estados del destinatario resuelven en
cada superposición está en
[Ventanas de llamada por estado de EE. UU.](/compliance/state-calling-windows).

## Manual de operaciones

**Lista de comprobación de despliegue.** Antes de activar un canal o
empujar una lista amplia:

1. Previsualice una muestra de destinatarios con
   `GET /api/v1/compliance/quiet-hours/preview?phone=<E.164>&channel=<channel>`,
   añadiendo `timezone_override=<IANA>` solo cuando su CRM lleva una
   sugerencia mejor que la que resuelve el número.
2. Confirme el bloque de la puerta de la organización:
   `GET /api/v1/settings/general` y lea el árbol `quiet_hours` antes del
   `PUT` — las escrituras fusionan en el nivel superior, pero la propia
   clave `quiet_hours` se reemplaza por completo (véase la sección de
   escritura más abajo).
3. Para despliegues masivos, vigile `GET /api/v1/settings/compliance-health`
   — sus advertencias clasifican el peor ofensor (remitente más retenido,
   grupos de errores) para que corrija primero el canal más ruidoso.

**Las retenciones son por destinatario, no por arrendatario.** Un contacto
retenido a las 21:05 hora local bloquea solo los envíos de ese contacto;
el resto de su lote sigue admitiendo en paralelo. Un envío 1:1 retenido
lanza `422 QUIET_HOURS_BLOCKED` con `next_allowed_at` en los detalles del
error — programe en esa marca de tiempo en lugar de reintentar en un
bucle. Un envío retenido nunca consume cuota ni reserva de ranura, así
que los reintentos se readmiten limpiamente una vez que se abre la
ventana.

**Las escrituras tardan hasta aproximadamente un minuto en llegar a cada
punto de envío** — los ajustes de la organización se almacenan en caché
brevemente en el camino de envío. Las lecturas son inmediatas; verifique
la postura fusionada con un `GET` antes de desplegar.

## Ejemplos desarrollados

### Despliegue masivo a las 21:05 — comportamiento de la cola de retención

Empuja una lista de 1.000 destinatarios por la API en un momento en que
una parte de su lista queda fuera de su puerta de organización 08:00–21:00
hora local del destinatario. Cada destinatario se resuelve
independientemente contra su puerta `sms` activada:

* Los destinatarios dentro de la ventana se admiten de inmediato.
* Los destinatarios retenidos reciben un `422` con `next_allowed_at`; su
  trabajador los aparca y continúa el lote. El lote en sí no se pausa —
  las retenciones son por destinatario.
* Cuando se reabre la ventana de cada destinatario, vuelva a enviar la
  fila aparcada; no se quemó ninguna ranura mientras estaba retenido.

Compruebe un destinatario específico sin quemar el intento:

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/compliance/quiet-hours/preview?phone=%2B14155551234&channel=sms" \
  -H "Authorization: Bearer $ORBIT_API_KEY"
```

```json theme={null}
{
  "allowed_now": false,
  "local_hour": 21,
  "local_timezone": "America/New_York",
  "window_start_local": "08:00",
  "window_end_local": "21:00",
  "next_allowed_at": "2026-08-26T12:00:00Z",
  "reason": "outside_window",
  "channel": "sms"
}
```

`next_allowed_at` es una marca de tiempo ISO segura frente al horario de
verano — póngala directamente en su planificador.

### Destinatario de voz de EE. UU. con zona horaria no resuelta — fail-closed

Una marcación de voz de campaña a `+15551234567` donde el código de área
no resuelve ninguna zona horaria choca con la postura fail-closed de la
guarda federal: la marcación se rechaza con `422 TCPA_TIMEZONE_UNKNOWN`
antes de cualquier cálculo de ventana. Corrija los datos — fije la zona
horaria del contacto en el registro o pase `recipientTimezone` — y vuelva
a encolar.

La misma entrada no resuelta en el canal `sms` con
`unknown_timezone_policy: "deny"` termina en
`422 QUIET_HOURS_TIMEZONE_UNKNOWN`; con la política `skip` predeterminada
pasa en fail-open. La política `deny` es la predeterminada solo para voz a
destinatarios de EE. UU., según la excepción federal de arriba.

### Anulación por consentimiento dentro de la ventana

Dos contactos, puerta `sms` activada, 22:30 hora local del destinatario
(fuera de su ventana):

```text theme={null}
contacto a — registro de consentimiento en archivo → permitido (motivo: consent_override)
contacto b — sin registro de consentimiento        → retenido (422 QUIET_HOURS_BLOCKED)
```

Con `consent_overrides_quiet_hours: false`, ambos se retienen hasta las
08:00 hora local del destinatario. En `voice`, el indicador no se aplica
en absoluto — todo intento de voz se puerta solo con el cálculo de la
ventana.

## Active un canal mediante la API de ajustes de la organización

No hay un endpoint de escritura de horas de silencio dedicado para la
puerta de canal; vive dentro del almacén de ajustes de la organización y
cada punto de envío lo lee. Actualícelo mediante
`PUT /api/v1/settings/general` (propietario/administrador):

```bash theme={null}
curl -X PUT https://api.orbit.devotel.io/api/v1/settings/general \
  -H "Authorization: Bearer $ORBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "settings": {
      "quiet_hours": {
        "sms": { "enabled": true },
        "whatsapp": { "enabled": true, "start_hour": 9, "end_hour": 21 },
        "unknown_timezone_policy": "skip",
        "consent_overrides_quiet_hours": true
      }
    }
  }'
```

Lea la postura actual de vuelta con `GET /api/v1/settings/general` y mire
el bloque `quiet_hours` en los `settings` devueltos.

<Warning>
  Fusión y verificación. `PUT /settings/general` fusiona los ajustes en el
  nivel superior, por lo que una escritura que contiene *solo*
  `quiet_hours` mantiene intactos sus otros ajustes — pero una escritura
  en cuya raíz coloca un objeto `quiet_hours` completo REEMPLAZA esa
  clave. Si quiere conservar las entradas existentes (por ejemplo una
  ventana `default` o las claves hoja almacenadas del respaldo de
  campaña), lea primero el bloque actual y fúselo antes de escribir.
</Warning>

Las escrituras tardan hasta aproximadamente un minuto en llegar a cada
punto de envío — los ajustes de la organización se almacenan en caché
brevemente en el camino de envío.

## Elija una postura

1. **Deje todo desactivado (predeterminado)** si opera fuera de
   jurisdicciones con horas de silencio, o si gestiona los límites en
   otra parte. Una salvedad: la voz de campaña y marcador de EE. UU. sigue
   bloqueada de forma estricta — eso no se puede desactivar.
2. **Operador de marketing de EE. UU.** — active `sms` (y voz si marca de
   forma ad-hoc) en la puerta de la organización; las horas de la
   plataforma 08:00–21:00 hora local del destinatario se aplican de
   inmediato. La excepción de consentimiento mantiene a los destinatarios
   permitidos alcanzables.
3. **Operador UE/APAC con campañas drip** — fije el respaldo de campaña a
   su ventana local (p. ej. 22:00 → 07:00) en Ajustes → Límites de
   campaña para que todo drip y journey sin ventana propia envíe dentro de
   su régimen. Añada la puerta de la organización por canal si también
   quiere retener el tráfico 1:1.

## Véase también

* [Puertas de envío](/compliance/send-gates) — el endpoint de vista previa
  y la pila completa de puertas (DNC, RND, parada de emergencia).
* [Ventanas de llamada por estado de EE. UU.](/compliance/state-calling-windows)
  — qué estados llevan una superposición mini-TCPA más estricta y cómo se
  rastrea el bloqueo hasta un estatuto.
* [Referencia de API → Cumplimiento](/api-reference/endpoints/compliance) —
  esquemas completos de solicitud/respuesta.
* [Pruebas A/B de campañas](/guides/campaign-ab-testing) — cómo la
  selección de ganadores y los experimentos de retención pasan por esta
  puerta y los [límites de frecuencia](/guides/frequency-caps) por contacto.
