10DLC-Ablehnungen, Re-Vetting und der Nach-Genehmigungs-Lebenszyklus
Der 10DLC-Registrierungsleitfaden endet bei „Versand beginnen”. Dieser Leitfaden behandelt, was danach passiert — eine Ablehnung mit einem kryptischen Code, ein Vetting-Score, der Ihren Durchsatz deckelt, oder eine genehmigte Kampagne, deren Tagesobergrenze nicht mehr zu Ihrem Volumen passt. Alles hier ist eine Kontrolle über Ihre eigenen Registrierungen; Carrier- und Registry-Entscheidungen bleiben deren.Wo Ablehnungen herkommen
Eine Ablehnung ist eines von zwei Dingen, und der Unterschied entscheidet alles, was Sie als Nächstes tun:- Registry-Ablehnungen (TCR und die CSPs, die ihn proxyen) feuern während
oder nach der Registrierungsprüfung — die Einreichung selbst wird
verweigert. Diese erscheinen als
FAILED-/REJECTED-Statusdatensätze mit einerrejectionReason-Zeichenfolge, an drei Stellen: dem Einstellungen > Compliance > 10DLC-Wizard, einer Dashboard-Benachrichtigung beim terminalen Übergang und demrejectionReason-Feld aufGET /api/v1/compliance/10dlc/campaigns/:id/status. - Carrier-Ablehnungen (AT&T, T-Mobile) können nach TCR-Genehmigung
landen, innerhalb der Carrier-
mnoStatuses-Map — ein direktes Carrier-Audit auf der Marke, oder ein Carrier, der mit der CSP-Ebenen-Entscheidung nicht einverstanden ist.
DUPLICATE-BRAND und der Kleinbuchstaben-usecase-Fehler sind
Einreichungszeit-Signale, keine Prüfungsphasen-Ergebnisse. Eine Ablehnung,
die der Wizard unmittelbar nach Ihrer Einreichung zeigt, fällt üblicherweise
in diese Klasse.
Zwei Ablehnungen sperren den Datensatz statt eine Korrektur anzufordern —
BRAND-DCA-FAIL und DUPLICATE-BRAND geben eine Fix-Karte mit
resubmit_allowed: false zurück, was bedeutet, dass die Marken-ID verbrannt
ist und der Fix eine frische Registrierung ist, nicht eine Bearbeitung.
Einen rohen Ablehnungscode in eine Fix-Karte dekodieren
TCR und die CSPs geben Codes wie30883, 40016 und EIN-MISMATCH mit
einer einzeiligen Freitext-Begründung und ohne feldspezifische Korrektur
zurück. Die Remediation-Tabelle unter
Troubleshooting: 10DLC-Kampagne abgelehnt
deckt die gängigen Fälle statisch ab; der Decoder-Endpunkt wendet denselben
Katalog auf jeden Code an — einschließlich Formulierungen und Codes, die die
Tabelle nicht auflistet.
POST /api/v1/compliance/10dlc/decode-rejection
Übergeben Sie den rohen code, plus den Freitext-rejectionReason, wenn Sie
ihn haben — der Freitext disambiguiert Codes, die auf mehrere Ursachen
mappen:
200 OK):
fix— der einzelne höchstwahrscheinliche Korrekturschritt, in demselben Register, das der Ablehnungsbanner des Wizards verwendet.resubmit_allowed— das Urteil, das Ihren nächsten Aufruf entscheidet.true: die Payload korrigieren und dieselbe Marke oder Kampagne erneut einreichen.false: der Datensatz ist gesperrt; eine frische Registrierung starten.category— ein stabiler Bucket (eligibility,content,identity,throughput,format,dca,unknown) zur Gruppierung in Ihrer eigenen UI.field— der Wizard-Schritt, auf den sich der Fix bezieht (campaign.sample_message,brand.ein, …), sodass Sie den Operator zum richtigen Formular zurückdeep-linken können.
TCR-30883, Twilio Error 30883
und ein_mismatch lösen alle zu ihren kanonischen Einträgen auf. Ein nicht
erkannter Code gibt eine Karte der Kategorie unknown zurück, deren fix
Sie an Devotel-Compliance weiterleitet, sodass eine UI, die die Karte
rendert, niemals ein leeres Panel zeigt.
Ausgearbeitetes Beispiel: ‘Use-Case-Mismatch’
Ein Kampagnen-Status-Poll gibt zurück:30898-Karte:
resubmit_allowed: true sagt korrigieren-und-erneut-einreichen. Reichen Sie
jetzt die korrigierte Kampagne gegen dieselbe Marke erneut ein — derselbe
Aufruf wie die Ersteinreichung, wie-für-wie erneut eingereicht:
Ein zweites ausgearbeitetes Beispiel: ‘SHAFT-Sample’
Dies ist dieselbe Schleife mit einer Inhaltsklasse-Karte. Eine Begründung wie"Sample 2 flagged: SHAFT sample" dekodiert zu 30883 — Inhaltsverstoß —
mit resubmit_allowed: true und field: "campaign.sample_message".
Schreiben Sie das beanstandete Sample um, um das deklarierte Vertical zu
nennen und die verbotene Formulierung zu entfernen, dann reichen Sie die
Kampagne wie-für-wie erneut ein. Der Punkt der Schleife: ein Decoder-Aufruf,
eine korrigierte Einreichung, und nichts davon hängt davon ab, welche
Formulierung TCR zurückgab.
Re-Vet vs. Neuesreichung
Ablehnungen von Inhalten bedeuten Neuesreichung. Ein niedriger Vetting-Score ist ein anderer Blocker — keine Korrektur an einer Kampagnen-Payload repariert ihn, und er deckelt jede Kampagne auf der Marke, nicht nur die unter Prüfung. Der Score entscheidet das Limit, also ist das Mittel ein Re-Vet, nicht eine Neuesreichung.POST /api/v1/compliance/10dlc/brands/:id/revet
200 OK):
provider nennt, welcher Registrar die Marke trägt; status ist der
aktualisierte Markenstatus, sobald das Re-Vet startet. Bevor Sie re-veten,
vollständigen Sie den Markendatensatz — EIN, rechtlicher Name abgeglichen mit
IRS-Aufzeichnungen, Website, Support-E-Mail auf Ihrer eigenen Domain — das
Re-Vet bewertet dieselben Informationen erneut, und ein unveränderter
Datensatz gibt einen unveränderten Score zurück.
Der Registrar ratenlimitiert Re-Vets (einmal sofort nach Registrierung, dann
einmal pro ungefähr drei Monate), sodass ein ratenlimitierter Aufruf 422 mit
dem Warte-bis-Text des Registrars zurückgibt — lesen Sie ihn, nicht in einer
Schleife erneut versuchen.
Durchsatzplanung: Was der Score gewährt
Zwei Endpunkte wandeln den Vetting-Score in die Limits um, unter denen Sie operieren.GET /api/v1/compliance/10dlc/brands/:id/vetting gibt das rohe Ergebnis
zurück:
vettingScore: null bedeutet, der EVP verarbeitet noch — rendern Sie
„Ausstehend”, nicht 0.
GET /api/v1/compliance/10dlc/brands/:id/throughput leitet die
Carrier-zugewiesenen Limits aus diesem Score ab:
200 OK):
att.class— AT&T weist eine Durchsatzklasse pro Kampagne zu, D→C→B→A (15 → 75 → 240 → 600 Nachrichten pro Minute), bei Trust-Score-Stufen 0/25/50/75.tmobile.tier— T-Mobile weist eine Tagesobergrenzen-Stufe pro Marke zu (2k / 10k / 40k / 200k / unbegrenzt), die jede Kampagne und Nummer auf der Marke abdeckt.entity_type(optionaler Query-Param) — Sole-Proprietor-Marken sind unabhängig vom Score auf der 2k-Stufe und Klasse D gedeckelt; übergeben Sie den registrierten Entity-Typ, damit die Ableitung den Sonderfall sieht.sent_today(optionaler Query-Param) — Message-Parts, die im aktuellen rollierenden 24h-Fenster bereits gesendet wurden. Wenn Sie ihn übergeben, meldetconsumptionHeadroom vor der Silent-Filter-Zone:okunter 80 % der Obergrenze,warningbei 80 %,criticalbei 95 %,exceededbei 100 %.
consumption ist null, bis Sie
sent_today liefern.
Re-Vet, oder die Stufe akzeptieren?
Verwenden Sie diewarning-/critical-Schwellwerte als Signal. Wenn Ihr
Vordergrundvolumen konsistent im Warnband landet, planen Sie ein Re-Vet — es
ist ratenlimitiert, also verbrennen Sie es nur bei einer echten
Trajektorienänderung. Wenn die Decke die Tagesobergrenze statt der Klasse
ist, ist die Einschränkung pro Marke: Das Zuweisen weiterer Nummern zur
Kampagne hebt sie nicht an, aber ein SOLE_PROPRIETOR-Upgrade auf einen
vollständigen Markendatensatz tut es — das ist eine Entity-Typ-Änderung,
kein Re-Vet.
Neuesreichung, Re-Vet: Was jede kostet
TCR erhebt pro Neuesreichung und pro Re-Vet eine neue Vetting-Gebühr (typischerweise wenige USD), und Carrier behandeln jede Neuesreichung als frische Prüfung — unabhängiges Timing von Ihren vorherigen Versuchen.Siehe auch
- 10DLC-Registrierungsleitfaden — Marke → Kampagne → Genehmigung, Use-Case-Codes und die Durchsatzstufen-Tabelle
- Troubleshooting: 10DLC-Kampagne abgelehnt — die statische Symptom → Ursache → Fix-Matrix, die der Decoder dieses Leitfadens anwendet
- Pre-Submit-Linter — die korrigierte Payload vor der Neuesreichung durch Preflight laufen lassen