Opt-out & Unterdrückungslisten
Eine Unterdrückungsliste ist die Menge der Adressen, die Sie nie wieder anschreiben dürfen — Personen, die mit STOP geantwortet, sich abgemeldet, einen Bounce erzeugt oder sich beschwert haben. Sie zu beachten ist auf jedem regulierten Kanal eine gesetzliche Pflicht, und Orbit behandelt sie als hartes Send-Gate: Eine unterdrückte Adresse wird vor dem Versand verworfen, unabhängig von Kampagne, Kontaktimport oder API-Aufruf. Diese Seite behandelt, wie Unterdrückung funktioniert, wie Sie eine bestehende Unterdrückungsliste massenimportieren — zum Beispiel bei einer Migration von einer anderen Plattform — über einen einzigen CSV-Upload, und wie Sie das Register für ein Audit wieder exportieren. Alle Endpunkte unten sind unterhttps://api.orbit.devotel.io/api/v1/compliance verwurzelt.
Wie Unterdrückung entsteht
Eine Adresse landet auf mehreren Wegen auf der Unterdrückungsliste:- Ein Kontakt antwortet mit einem STOP-Keyword auf SMS/WhatsApp.
- Ein Kontakt meldet sich über das Preference Center ab.
- Sie erfassen ein Opt-out über die
Consent API (
opt_in: false). - Sie importieren eine Liste per Massenimport (diese Seite).
all, sms, voice, whatsapp, email, push,
telegram, messenger, rcs.
Wie der Geltungsbereich gewählt wird, hängt vom Einstiegspunkt ab:
- CSV-Massenimport leitet den Geltungsbereich aus dem Adresstyp
jeder Zeile ab: Telefon- und WhatsApp-Adressen erhalten standardmäßig
den Geltungsbereich
all— ein STOP-Signal auf einer Telefonnummer unterdrückt jeden auf dieser Nummer erreichbaren Kanal — während E-Mail-Adressen aufemailbeschränkt werden. Einechannel-Spalte überschreibt dies pro Zeile (siehe CSV-Massenimport). - Die Consent API und das Preference Center unterdrücken stets den
Geltungsbereich
all, unabhängig davon, ob die erfasste Kennung eine Telefonnummer oder eine E-Mail-Adresse ist. Ein Opt-out über einen dieser Einstiegspunkte entfernt den Kontakt aus jedem Kanal.
Wie auch immer eine Telefonnummer unterdrückt wurde: Die Voice- und
Dialer-Gates beachten sie — eine Nummer, die auf irgendeinem Kanal ein
Opt-out erteilt, erhält weder Anrufe noch Nachrichten. Der Mechanismus
unterscheidet sich je nach Einstiegspunkt. Ein CSV-Massenimport
spiegelt Telefonzeilen zusätzlich auf die DNC-Liste und markiert die
passenden Kontakte. Ein STOP-Keyword-, Preference-Center- oder
Consent-API-Opt-out wird stattdessen mit dem Geltungsbereich
all
erfasst, den die Voice- und Dialer-Gates direkt aus der
Unterdrückungsliste lesen — der Anruf wird weiterhin blockiert, aber
es wird keine separate DNC-Listenzeile oder Kontaktmarkierung
geschrieben.CSV-Massenimport
POST /compliance/suppression-list/import nimmt einen
multipart/form-data-Upload einer CSV-Datei entgegen. Er erfordert
einen Admin- oder Owner-Key und ist auf 5 Anfragen/Minute
ratenbegrenzt.
Formularfelder
CSV-Format
Die erste Zeile ist eine Kopfzeile. Spaltennamen sind Groß-/Kleinschreibung-unabhängig und positionsunabhängig, und gängige Aliasse werden akzeptiert:
Jede Zeile muss mindestens eines von Telefon / E-Mail / wa_id
enthalten. Eine einzelne Zeile kann mehrere Adresstypen tragen — jeder
erzeugt seinen eigenen Unterdrückungseintrag. Beispiel:
channel-Spalte vorhanden, überschreibt sie den
Standardgeltungsbereich für diese Zeile und muss einem der oben
genannten Geltungsbereichswerte entsprechen.
Ergebnisse pro Zeile
Die Antwort meldet Ergebnisse pro Zeile. Akzeptierte Zeilen werden geschrieben; andere werden klassifiziert, nie still verworfen.Die beiden Duplikat-Zähler werden bewusst getrennt gemeldet:
intra_file_duplicates sind Wiederholungen innerhalb der soeben
hochgeladenen Datei, während duplicates bereits von früher auf
Ihrer Liste standen. Keines ist ein Fehler, und keines wird still
verschluckt — beide werden gezählt, damit Ihre Abstimmung aufgeht.Validierungsgründe
Jedererrors[]-Eintrag trägt einen verständlichen reason und die
Quell-raw_line, damit Sie korrigieren und erneut hochladen können:
Grenzen
Für Volumen über 100.000 Zeilen teilen Sie die Datei auf und
importieren in Batches — die Duplikaterkennung macht das erneute
Importieren überlappender Bereiche sicher.
Wenn ein Import fehlschlägt
Diagnostizieren Sie Fehler auf zwei Ebenen: Ablehnungen auf HTTP-Ebene (nichts wird geschrieben) und Klassifizierungen auf Zeilenebene (die Datei wird akzeptiert, bestimmte Zeilen jedoch nicht). Ablehnungen auf HTTP-Ebene:
Klassifizierungen auf Zeilenebene (die
errors[]-Einträge, die einen
erfolgreichen Import begleiten) lassen sich wie folgt auf Ursachen
zurückführen:
Nur die ersten 100
errors[]-Einträge werden mit vollem Detail
zurückgegeben — der invalid-Zähler spiegelt stets die wahre Summe.
Der Dashboard-Assistent (unten) bündelt die aufgeführten Zeilen als
herunterladbare skipped.csv, damit Sie genau die Fehler korrigieren
und erneut importieren können.
Import aus dem Dashboard
Derselbe Endpunkt wird von einem geführten Assistenten unter Settings → Compliance → Opt-out lists → Import suppression list umhüllt — derselbe CSV-Vertrag, kein Terminal erforderlich.- CSV-Datei wählen — wählen Sie eine
.csvunter 25 MB. Nutzen Sie Download sample CSV im Dialog für eine vorformatierte Startdatei. - Defaults setzen (optional) — ein
Default country(ISO alpha-2) zur Normalisierung nationaler Formate und ein Freitext-Reason, der auf jede akzeptierte Zeile gestempelt wird. - Vorschau — führt den Import als serverseitigen Dry-Run aus: Nichts wird geschrieben, und der Dialog zeigt die Aufschlüsselung akzeptiert / bereits gelistet / Wiederholungen-in-der-Datei / ungültig, bevor Sie committen.
- Import bestätigen — führt den committenden Schreibzugriff aus.
Waren Zeilen ungültig, laden Sie
skipped.csvherunter, um sie zu korrigieren und erneut zu importieren.
Die Unterdrückungsliste exportieren
GET /compliance/suppression-list/export lädt das
Unterdrückungsregister herunter — das symmetrische Gegenstück zum
Import oben. Nutzen Sie es, um einem Regulator oder
Auditor zu belegen, welche Adressen zu einem gegebenen Zeitpunkt
unterdrückt waren, einschließlich massenimportierter Nummern ohne
passenden Kontakt.
Jede Zeile trägt
suppression_id, channel, address, den
abgeleiteten status (active oder revoked), reason, source,
contact_id (leer bei massenimportierten Adressen ohne Kontakt),
notes und die Zeitstempel suppressed_at / revoked_at /
created_at.
Der Zugriff ist auf Owner- und Admin-Keys beschränkt, und jeder
Exportlauf wird ins Audit-Log geschrieben. Überschreitet das Register
50.000 Zeilen, trägt die CSV-Antwort einen
X-Export-Truncated: true-Header (das JSON-Äquivalent setzt
truncated: true) — verengen Sie nach Kanal oder exportieren Sie
aufeinanderfolgende Datumsfenster, um den Rest zu erfassen.
Verifizieren, dass eine Unterdrückung gewirkt hat
Vertrauen ist gut, Kontrolle ist besser: Nach einem Import (oder jedem Opt-out-Ereignis) bestätigen Sie, dass das Send-Gate die Adresse tatsächlich einzäunt, bevor Sie die Liste einer Kampagne übergeben.-
Eine Testnachricht an die unterdrückte Adresse senden. Ein
direkter API-Versand an einen unterdrückten Empfänger schlägt
synchron mit HTTP 422 und dem Fehlercode
RECIPIENT_OPTED_OUTfehl. Im Sandbox-Modus wird kein Carrier berührt und kein Guthaben abgebucht; jeder Empfänger, der auf8endet, löst außerdem in die simulierteblocked-Zustellquittung auf — die carrierseitige Sicht derselben Einzäunung.Ein Kampagnenversand an dieselbe Adresse verhält sich bewusst anders: Der Empfänger wird still übersprungen (status: "skipped",reason: "opted_out"), damit der Batch weiterläuft — prüfen Sie den Empfängerbericht der Kampagne, statt einen Fehler zu erwarten. -
Bestätigen, dass der Eintrag auf dem Register steht. Exportieren
Sie mit der Abfrage oben
(
status=activeist der Standard) und prüfen Sie, dass die Adresse mit dem erwartetenchannel-Geltungsbereich erscheint. Der Export ist die Wahrheitsquelle, die jedes Send-Gate liest — ist die Zeile dortactive, steht die Einzäunung.
Eine Unterdrückung entfernen (Re-Opt-in)
Um eine Adresse zurückzuholen, erfassen Sie ein frisches Opt-in über die Consent API (opt_in: true).
Das widerruft den passenden Unterdrückungseintrag und räumt die
STOP-Einzäunung weg. Schreiben Sie einen zuvor unterdrückten Kontakt
niemals ohne ein dokumentiertes, frisches Einwilligungsereignis
wieder an.
Bestätigen, dass die Einzäunung weg ist. Exportieren Sie mit
status=revoked und finden Sie die Adresse: Die Zeile ist für Audits
weiter vorhanden mit status: revoked und einem revoked_at-Zeitstempel —
Unterdrückungshistorie wird nie gelöscht, nur widerrufen. Senden Sie
dann eine kleine Testnachricht an die Adresse wie unter Verifizieren,
dass eine Unterdrückung gewirkt
hat: Eine
erfolgreiche Einreichung (kein RECIPIENT_OPTED_OUT) bestätigt, dass
das Gate auf widerrufener Historie nicht mehr feuert. Bis beide
Prüfungen bestehen, behandeln Sie die Adresse als weiter eingeäunt.
Weiterführende Referenzen
- Consent Management — Einwilligung je Kanal erfassen und abfragen.
- Send Gates — Ruhezeiten, DNC, RND, RMD, Notfall-Stopp und das Preference-Center.
- DSAR — wie
delete- /opt_out-Anfragen zur Unterdrückung gelangen. - API Reference → Opt-outs — Endpunktschemata für Opt-out und Unterdrückung.