> ## 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.

# Ruhezeiten: organisationsweite Kanal-Gates vs. das Kampagnen-Fallback-Fenster

> Wählen Sie Ihre Ruhezeiten-Haltung: das organisationsweite Kanal-Gate, das Fallback-Fenster für Drip/Journey-Sendungen und wie die beiden Regler für öffentliche 1:1-Sendungen und Kampagnenverkehr zusammenwirken.

# Ruhezeiten: organisationsweite Kanal-Gates vs. das Kampagnen-Fallback-Fenster

Das Ruhezeiten-Gate von Orbit gehört dem Mandanten: Alles auf dieser Seite
ist eine Einstellung, die **Sie** konfigurieren (oder bewusst deaktiviert
lassen). Die einzige Ausnahme ist das TCPA-Bundesfenster für US-Empfänger,
das in einem eigenen Abschnitt unten behandelt wird. Ruhezeiten zu
aktivieren ist Ihre Entscheidung — nichts davon ist durch CAN-SPAM oder
DSGVO vorgeschrieben.

Diese Seite ist das Betriebshandbuch für dieses Gate. Drei Flächen
bestimmen Ihre Haltung:

1. **Das organisationsweite Kanal-Gate** — Kanalschalter in den
   Organisationseinstellungen (`settings → quiet_hours.<channel>.enabled`),
   geschrieben über `PUT /api/v1/settings/general` und gespiegelt in den
   Organisationseinstellungen des Dashboards (siehe auch
   [Compliance-Haltung](/compliance/posture-overview)).
2. **Das Kampagnen-Fallback-Fenster** — ein einzelnes organisationsweites
   Start/Ende-Paar für Drip- und Journey-Sendungen, deren Kampagnenzeile
   kein eigenes Fenster trägt. Im Dashboard: **Einstellungen →
   Kampagnenlimits → Standard-Ruhezeiten**; über die API:
   `GET`/`PUT /api/v1/campaigns/quiet-hours/settings`.
3. **Der Vorschau-Endpunkt** — `GET /api/v1/compliance/quiet-hours/preview`,
   eine schreibgeschützte Prüfung, die beantwortet: „Würde diese Sendung
   an diesen Empfänger jetzt durchgehen?" Führen Sie sie vor jeder
   Einführung aus; sie wird im Runbook unten durchgespielt.

## Die zwei Fenster

| Regler                                                                    | Gilt für                                                                                                                     | Konfiguriert wo                                                                                           |
| ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| Organisationsweites Kanal-Gate (`organizations → settings → quiet_hours`) | Jede Sendung auf jedem aktivierten Kanal: Dashboard, API, Flows, Kampagnenversand                                            | Der `quiet_hours`-Block in den Organisationseinstellungen (siehe unten)                                   |
| Kampagnen-Fallback-Fenster                                                | Nur Drip- und Journey-Sendungen, und nur wenn die Kampagnenzeile keine eigenen `quiet_hours_start` / `quiet_hours_end` trägt | Einstellungen → Kampagnenlimits → Standard-Ruhezeiten, oder `campaigns/quiet-hours/settings` über die API |

Das Kampagnen-Fallback ist genau das, was der Name sagt — ein Fallback,
kein zweites Gate. Auflösungsreihenfolge für eine Kampagnensendung: zuerst
das eigene Fenster der Kampagnenzeile, dann das Organisations-Fallback,
dann der Plattform-Standard 21:00 → 09:00 (Ruhezeiten laufen von 21 Uhr
bis 9 Uhr Empfänger-Ortszeit).

Die beiden Regler können auseinanderlaufen. Eine kampagnenversendete
Sendung wertet das Fenster des Kampagnenpfads als eine Ebene aus; das
Organisations-Kanal-Gate — sofern Sie diesen Kanal aktiviert haben — ist
eine separate Ebene, die am Sendeort ausgewertet wird. Behandeln Sie das
Organisations-Gate als Haltung für 1:1-Verkehr und das Kampagnen-Fallback
als Standardregime für Massenverkehr. Eine blockierte Sendung meldet
`next_allowed_at` — planen Sie um das Fenster herum statt wiederholt zu
senden.

Die Fallbacks, die Sie auf einer der beiden Ebenen setzen, können die
Hüllkurve nur **verengen**; sie erweitern niemals ein Kanal-Gate, das Sie
aktiviert haben.

## Organisationsweites Kanal-Gate pro Kanal

Das Kanal-Gate ist pro Kanal opt-in. Jeder Kanal-Eintrag unterstützt:

| Feld           | Bedeutung                                                                                                                               |
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `enabled`      | Ob das Gate für diesen Kanal gilt. Alle Kanäle stehen standardmäßig auf `false`.                                                        |
| `start_hour`   | Inklusive Start-Stunde im 24h-Format (0–23), z. B. `8` für 8 Uhr Empfänger-Ortszeit.                                                    |
| `end_hour`     | Exklusive End-Stunde im 24h-Format (0–23), z. B. `21` für 21 Uhr Empfänger-Ortszeit. `start_hour > end_hour` ist ein Übernacht-Fenster. |
| `allowed_days` | Optionale Liste erlaubter Wochentage, `0` = Sonntag … `6` = Samstag. Weglassen, um jeden Tag zu erlauben.                               |

Organisationsschlüssel (gelten für alle Kanäle gemeinsam):

| Schlüssel                       | Bedeutung                                                                                                                                                                        |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `default`                       | Ein Teilfenster, das Felder auffüllt, die ein Kanal-Eintrag nicht gesetzt hat.                                                                                                   |
| `unknown_timezone_policy`       | `skip` (Standard), `enforce_utc` oder `deny` — siehe den Zeitzone-Abschnitt unten.                                                                                               |
| `consent_overrides_quiet_hours` | Wenn `true` (Standard), passiert ein Empfänger mit ausdrücklichem Einwilligungsnachweis das Gate — die TCPA-Ausnahme „prior express consent". Wirkt nur auf Nicht-Voice-Kanälen. |

### Standardhaltung pro Kanal

Solange Sie einen Kanal nicht aktivieren, wird nichts zurückgehalten.
Wenn Sie einen Kanal ohne Stundenangabe einschalten, greifen die
Plattform-Stunden:

| Kanäle                                                         | Standardfenster (Empfänger-Ortszeit) |
| -------------------------------------------------------------- | ------------------------------------ |
| `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, wenn aktiviert          |

Der vollständige Kanalsatz, den das Gate akzeptiert: `sms`, `mms`,
`whatsapp`, `rcs`, `viber`, `telegram`, `voice`, `email`, `instagram`,
`messenger`, `line`, `apple_messages`, `fax`, `push`, `web_chat`.

### Zwei Ausnahmen, die wesentlichen Verkehr fließen lassen

* **Vorherige ausdrückliche Einwilligung** — mit
  `consent_overrides_quiet_hours` auf `true` (Standard) passiert ein
  Empfänger mit ausdrücklichem Einwilligungsnachweis auf jedem
  Nicht-Voice-Kanal. Voice nimmt diese Ausnahme nie in Anspruch.
* **Transaktionale Verkehrsspur** — Sendungen, die der Aufrufer als
  transaktional kennzeichnet (OTPs, Alarme, Kontobenachrichtigungen), sind
  vom Gate ausgenommen, selbst auf einem aktivierten Kanal. Voice nimmt
  auch diese Ausnahme nie in Anspruch.

Setzen Sie `consent_overrides_quiet_hours` nur dann auf `false`, wenn Sie
gestoppte Sendungen ohne Einwilligungsausnahmen wollen.

## Kampagnen-Fallback-Fenster

Jeder authentifizierte Aufrufer liest es; nur Inhaber/Admin schreibt es.

Das aktuelle Fallback-Fenster lesen:

```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` spiegeln die Stunden,
die Drip- und Journey-Sendungen verwenden, solange die Überschreibung aus
ist — übernehmen Sie sie oder ersetzen Sie sie, Ihre Wahl. Im Dashboard
ist dieses Formular **Einstellungen → Kampagnenlimits →
Standard-Ruhezeiten**. Setzen Sie Ihr eigenes Fenster (beide Stunden sind
erforderlich, wenn `enabled` true ist):

```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 }'
```

Zurück auf den Plattform-Standard setzen:

```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 }'
```

Übernacht-Fenster (z. B. Start `22`, Ende `7`) werden auf beiden Ebenen
akzeptiert — ein `start > end`-Paar läuft über Mitternacht hinweg.

## Auflösung der Empfänger-Zeitzone

Das Gate arbeitet in *Empfänger-Ortszeit*. Die Zeitzonenauflösung folgt
dieser Kette:

1. Ein expliziter `recipientTimezone`-Hinweis des Aufrufers, sofern
   angegeben.
2. US-Vorwahl → IANA-Zeitzone, für +1-Nummern.
3. E.164-Ländercode → eine repräsentative IANA-Zeitzone (Europa, Asien,
   die Amerikas und übliche Betreibermärkte).
4. Für E-Mail-Empfänger die Standard-Zeitzone der Organisation.
5. Wenn nichts davon auflöst — die `unknown_timezone_policy` der
   Organisation (im Dashboard ebenfalls konfigurierbar unter
   **Einstellungen → Voice**):

| Richtlinie                                                    | Verhalten                                                                                    |
| ------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| `skip` (Standard für jeden Kanal außer Voice an US-Empfänger) | Zulassen — fail-open für Empfänger außerhalb der US-Gerichtsbarkeit.                         |
| `deny` (Standard nur für Voice an US-Empfänger)               | Blockieren. Gibt `422 QUIET_HOURS_TIMEZONE_UNKNOWN` zurück (Voice: `TCPA_TIMEZONE_UNKNOWN`). |
| `enforce_utc`                                                 | Gegen UTC auswerten — ein deterministisches Fenster unabhängig vom Empfänger.                |

Wenn der Empfänger sich zu einer Zeitzone auflöst, gibt ein normaler
Aktivierter-Kanal-Block `422 QUIET_HOURS_BLOCKED` zurück (Voice:
`TCPA_DIALING_WINDOW_BLOCKED`) mit dem Fenster und `next_allowed_at` in
den Fehlerdetails.

## TCPA-Bundes-Voice-Ausnahme

Kampagnen- und Dialer-Voice an **US-Empfänger** wird außerhalb des
Bundesfensters 8–21 Uhr Empfänger-Ortszeit hart blockiert — kein
Organisations-Gate, kein Fallback-Fenster und kein Einwilligungs-Flag
lockert es, und ein US-Empfänger, dessen Zeitzone nicht aufgelöst werden
kann, wird fail-closed blockiert. Dies ist der eine Regler, den die
Plattform besitzt; es gilt nur für Kampagnen- und Dialer-Voice, nicht
für 1:1-Ad-hoc-Anrufe oder Messaging-Kanäle.

Nicht-US-Empfänger folgen dem normalen Gate: die fail-open-Richtlinie
`skip` gilt für Empfänger außerhalb der US-Gerichtsbarkeit, und Ihr
eigenes Voice-Kanal-Gate (falls aktiviert) schichtet sich darüber. Sie
können das Bundesfenster immer verschärfen — etwa ein Voice-Gate von
09:00–20:00 Empfänger-Ortszeit — aber niemals erweitern.

Ad-hoc-1:1-Voice aus dem Dashboard außerhalb des Bundesfensters wählt mit
einem Hinweis-Log durch, es sei denn, Sie haben den `voice`-Kanal auf dem
Organisations-Gate aktiviert, was ihn zu einem harten Halt macht
(`422 TCPA_DIALING_WINDOW_BLOCKED`).

## Einwilligung überschreibt Ruhezeiten

Mit `consent_overrides_quiet_hours: true` (Standard) passiert ein
Empfänger, für den Sie eine ausdrückliche Einwilligung halten, das Gate
auf **Nicht-Voice-Kanälen** — die TCPA-Ausnahme „prior express consent".
Ein erlaubter Empfänger bleibt innerhalb Ihrer geschlossenen Stunden
erreichbar; ein Kontakt ohne Einwilligungsnachweis wird zurückgehalten,
bis das Fenster öffnet.

Setzen Sie es auf `false`, wenn Einwilligung Ihr Fenster nie lockern darf.
Das Gate ignoriert das Flag auf dem `voice`-Kanal vollständig — Voice
hängt am Bundesfenster und an Bundesstaat-Overlays, nicht an der
Einwilligungsausnahme.

## Mini-TCPA-Overlays der Bundesstaaten

Einige US-Bundesstaaten schichten ein strengeres Anruffenster oder ein
Wochentagsverbot auf die Bundesstunden (Floridas Sonntagsverbot,
Oklahoma-/Mississippi-Fenster und andere). Overlays kombinieren sich nach
**dem strengsten gewinnt**: Eine Sendung muss das Bundesfenster *und*
jedes anwendbare Bundesstaat-Overlay passieren; das Overlay kann
verschärfen, aber niemals erweitern. Voice-Blockaden melden diese
Fehlergründe zurück:

* `outside_state_window` — ein Bundesstaat-Overlay hat das Fenster
  verschärft, und diese Stunde lag außerhalb.
* `state_blocked_day` — das Overlay verbietet das Wählen an diesem
  Wochentag vollständig.

Die vollständige Tabelle pro Bundesstaat und welche Empfänger-Bundesstaaten
in welches Overlay auflösen, steht in
[US-Bundesstaat-Anruffenster](/compliance/state-calling-windows).

## Operationales Runbook

**Einführungs-Checkliste.** Bevor Sie einen Kanal aktivieren oder eine
große Liste pushen:

1. Eine Stichprobe von Empfängern mit
   `GET /api/v1/compliance/quiet-hours/preview?phone=<E.164>&channel=<channel>`
   vorschaubar prüfen; `timezone_override=<IANA>` nur hinzufügen, wenn Ihr
   CRM einen besseren Hinweis liefert als die Nummer auflöst.
2. Den Organisations-Gate-Block bestätigen: `GET /api/v1/settings/general`
   aufrufen und den `quiet_hours`-Baum vor dem `PUT` lesen — Schreibvorgänge
   mergen auf der obersten Ebene, aber der `quiet_hours`-Schlüssel selbst
   wird vollständig ersetzt (siehe den Schreibabschnitt unten).
3. Bei Massen-Einführungen `GET /api/v1/settings/compliance-health` im
   Blick behalten — dessen Warnungen rängen den schlimmsten Verursacher
   (am häufigsten zurückgehaltener Absender, Fehlercluster) zuerst, damit
   Sie die lautesten Spur zuerst fixen.

**Halte sind pro Empfänger, nicht pro Mandant.** Ein Kontakt, der um
21:05 Empfänger-Ortszeit zurückgehalten ist, blockiert nur dessen
Sendungen; der Rest Ihres Batches läuft parallel weiter. Eine
zurückgehaltene 1:1-Sendung wirft `422 QUIET_HOURS_BLOCKED` mit
`next_allowed_at` in den Fehlerdetails — planen Sie auf diesen Zeitstempel
statt in einer Schleife zu wiederholen. Eine zurückgehaltene Sendung
verbraucht keine Quote oder Slot-Reservierung, sodass Wiederholungen
sauber wieder zugelassen werden, sobald das Fenster öffnet.

**Schreibvorgänge brauchen bis zu etwa einer Minute, um jeden Sendeort zu
erreichen** — Organisationseinstellungen werden im Sendepfad kurz
gecacht. Lesezugriffe sind sofort; verifizieren Sie die gemergte Haltung
mit einem `GET` zurück, bevor Sie ausrollen.

## Durchgespielte Beispiele

### Massen-einführung um 21:05 — Verhalten der Halte-Queue

Sie pushen eine Liste mit 1.000 Empfängern über die API zu einem
Zeitpunkt, an dem ein Teil Ihrer Liste außerhalb Ihres 08:00–21:00-Organisations-Gates
Empfänger-Ortszeit liegt. Jeder Empfänger löst unabhängig gegen Ihren
aktivierten `sms`-Gate auf:

* In-Fenster-Empfänger geben sofort zugelassen.
* Zurückgehaltene Empfänger bekommen einen `422` mit `next_allowed_at`;
  Ihr Worker parkt sie und setzt den Batch fort. Der Batch selbst pausiert
  nicht — Halte sind pro Empfänger.
* Wenn das Fenster jedes Empfängers wieder öffnet, reichen Sie die
  geparkte Zeile erneut ein; während der Haltezeit wurde kein Slot
  verbrannt.

Einen bestimmten Empfänger ohne Verbrauch des Versuchs prüfen:

```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` ist ein DST-sicherer ISO-Zeitstempel — geben Sie ihn
direkt an Ihren Scheduler weiter.

### Zeituneaufgelöster US-Voice-Empfänger — fail-closed

Eine Kampagnen-Voice-Wahl an `+15551234567`, bei der die Vorwahl keine
Zeitzone auflöst, läuft in die fail-closed-Haltung der Bundeswache: die
Wahl wird mit `422 TCPA_TIMEZONE_UNKNOWN` abgelehnt, bevor irgendeine
Fenstermathematik beginnt. Fixen Sie die Daten — setzen Sie die Zeitzone
des Kontakts am Datensatz oder übergeben Sie `recipientTimezone` — und
reihen Sie dann erneut ein.

Dieselbe unaufgelöste Eingabe auf dem `sms`-Kanal mit
`unknown_timezone_policy: "deny"` endet in
`422 QUIET_HOURS_TIMEZONE_UNKNOWN`; mit der Standard-`skip`-Richtlinie
passiert sie fail-open. Die `deny`-Richtlinie ist nur der Standard für
US-Empfänger-Voice, gemäß der Bundesausnahme oben.

### Einwilligungs-Override innerhalb des Fensters

Zwei Kontakte, `sms`-Gate aktiviert, 22:30 Empfänger-Ortszeit (außerhalb
Ihres Fensters):

```text theme={null}
Kontakt a — Einwilligungsnachweis vorhanden  → zugelassen (Grund: consent_override)
Kontakt b — kein Einwilligungsnachweis      → zurückgehalten (422 QUIET_HOURS_BLOCKED)
```

Mit `consent_overrides_quiet_hours: false` halten beide bis 08:00
Empfänger-Ortszeit. Auf `voice` gilt das Flag überhaupt nicht — jeder
Voice-Versuch wird allein auf Fenstermathematik geprüft.

## Einen Kanal über die Organisationseinstellungen-API aktivieren

Es gibt keinen dedizierten Ruhezeiten-Schreib-Endpunkt für das
Kanal-Gate; es lebt im Organisationseinstellungen-Speicher, und jeder
Sendeort liest es. Aktualisieren Sie es über
`PUT /api/v1/settings/general` (Inhaber/Admin):

```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
      }
    }
  }'
```

Lesen Sie die aktuelle Haltung mit `GET /api/v1/settings/general` zurück
und sehen Sie sich den `quiet_hours`-Block in den zurückgegebenen
`settings` an.

<Warning>
  Merge-then-verify. `PUT /settings/general` mergt Einstellungen auf der
  obersten Ebene, sodass ein Schreibvorgang, der *nur* `quiet_hours`
  enthält, Ihre übrigen Einstellungen unberührt lässt — aber ein
  Schreibvorgang, dessen Wurzel ein vollständiges `quiet_hours`-Objekt
  trägt, ERSETZT diesen Schlüssel. Wenn Sie vorhandene Einträge behalten
  wollen (zum Beispiel ein `default`-Fenster oder die gespeicherten
  Blattschlüssel des Kampagnen-Fallbacks), lesen Sie den aktuellen Block
  zuerst und mergen Sie vor dem Schreiben.
</Warning>

Schreibvorgänge brauchen bis zu etwa einer Minute, um jeden Sendeort zu
erreichen — Organisationseinstellungen werden im Sendepfad kurz gecacht.

## Eine Haltung wählen

1. **Alles aus lassen (Standard)**, wenn Sie außerhalb von
   Ruhezeiten-Jurisdiktionen operieren oder Grenzen woanders behandeln.
   Ein Vorbehalt: US-Kampagnen- und Dialer-Voice bleibt hart blockiert —
   das lässt sich nicht ausschalten.
2. **US-Marketing-Betreiber** — aktivieren Sie `sms` (und Voice, wenn Sie
   ad-hoc wählen) auf dem Organisations-Gate; die Plattform-Stunden
   08:00–21:00 Empfänger-Ortszeit gelten sofort. Die
   Einwilligungsausnahme hält erlaubte Empfänger erreichbar.
3. **EU/APAC-Betreiber mit Drip-Kampagnen** — setzen Sie das
   Kampagnen-Fallback auf Ihr lokales Fenster (z. B. 22:00 → 07:00) unter
   Einstellungen → Kampagnenlimits, damit jede Drip und Journey ohne
   eigenes Fenster in Ihrem Regime sendet. Fügen Sie das Organisations-
   Gate pro Kanal hinzu, wenn Sie auch 1:1-Verkehr zurückhalten wollen.

## Siehe auch

* [Send-Gates](/compliance/send-gates) — der Vorschau-Endpunkt und der
  vollständige Gate-Stapel (DNC, RND, Notfall-Stopp).
* [US-Bundesstaat-Anruffenster](/compliance/state-calling-windows) — welche
  Bundesstaaten ein strengeres Mini-TCPA-Overlay tragen und wie der Block
  zu einer Statute zurückverfolgt.
* [API-Referenz → Compliance](/api-reference/endpoints/compliance) —
  vollständige Anfrage-/Antwort-Schemas.
* [Kampagnen-A/B-Tests](/guides/campaign-ab-testing) — wie
  Gewinner-Auswahl und Hold-Out-Experimente durch dieses Gate und
  pro-Kontakt-[Frequenzlimits](/guides/frequency-caps) laufen.
