Skip to main content

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 einer rejectionReason-Zeichenfolge, an drei Stellen: dem Einstellungen > Compliance > 10DLC-Wizard, einer Dashboard-Benachrichtigung beim terminalen Übergang und dem rejectionReason-Feld auf GET /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.
Einige Codes werden vor jeder TCR-Entscheidung emittiert: 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 wie 30883, 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:
Antwort (200 OK):
Lesen Sie vier Felder von der Karte ab:
  • 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.
Der Decoder ist eine reine Regel-Engine — er speichert nichts, erstellt nichts und normalisiert den Code für Sie: 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.
Führen Sie den Decoder aus, bevor Sie Remediation laufen lassen. Wenn der fix der Karte eine Beispielnachricht oder Beschreibung umschreibt, führen Sie die korrigierte Payload durch den Preflight-Linter, bevor Sie erneut einreichen — er erfasst die Sekundär-Ablehnung, die der Fix oft einführt.

Ausgearbeitetes Beispiel: ‘Use-Case-Mismatch’

Ein Kampagnen-Status-Poll gibt zurück:
Die Begründungszeichenfolge nennt die Ursache, aber keinen TCR-Code. Der Decoder arbeitet mit einem oder dem anderen, also übergeben Sie, was Sie haben — den Freitext allein:
Antwort — die 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:
Erwarten Sie dieselben 1–5 Werktage wie die Ersteinreichung; pollen Sie den Status-Endpunkt oder beobachten Sie die Dashboard-Benachrichtigung.

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
Antwort (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:
Antwort (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, meldet consumption Headroom vor der Silent-Filter-Zone: ok unter 80 % der Obergrenze, warning bei 80 %, critical bei 95 %, exceeded bei 100 %.
Beide Query-Params sind optional; consumption ist null, bis Sie sent_today liefern.

Re-Vet, oder die Stufe akzeptieren?

Verwenden Sie die warning-/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