Skip to main content

Nettoyage DNC : sources, fraîcheur et endpoint de vérification

Un nettoyage Do-Not-Call répond à une seule question avant l’envoi : ce numéro figure-t-il sur une liste qui bloque ou restreint sa sollicitation ? Orbit vérifie vos propres listes (marqueurs de contact, entrées DNC, suppression, consentement), la liste globale de la plateforme, les flux fédéraux/étatiques/TCR américains et plusieurs registres nationaux internationaux — et la même chaîne que celle appliquée au chemin d’envoi est lisible via une API, ce qui permet de pré-vérifier une liste froide sans risquer un envoi non conforme. Cette page présente la vue de bout en bout : quand le nettoyage compte, comment l’activer, d’où viennent les données synchronisées, comment lire les champs source et last_synced_at de l’endpoint de vérification, et l’unique réserve fail-open à gérer. Pour les gates appliqués à l’envoi qui consomment le résultat, voir Gates d’envoi. Tous les endpoints ci-dessous sont enracinés à https://api.orbit.devotel.io/api/v1/compliance.
Cette page décrit les contrôles de la plateforme Orbit. Elle ne constitue pas un avis juridique. Le fait qu’un numéro vous soit interdit dépend de votre juridiction, de vos destinataires et du contenu envoyé. Confirmez auprès de conseillers juridiques qualifiés.

Quand le nettoyage DNC compte

Les obligations DNC proviennent de plus d’un registre, et elles se cumulent :
  • DNC fédérale américaine (National Registry de la FTC). Les appels de télémarketing et les SMS marketing vers un numéro inscrit au registre fédéral sont restreints ; un nettoyage contre le registre fédéral est la défense de base avant toute campagne sortante.
  • Registres étatiques américains. Plusieurs États gèrent leurs propres listes DNC en plus du registre fédéral. Un numéro peut être absent au niveau fédéral mais inscrit dans, par exemple, la Pennsylvanie — un nettoyage fédéral seul n’est donc pas complet pour le trafic américain.
  • TCR Universal Opt-Out. La liste d’opt-out universelle du Campaign Registry capture les numéros ayant refusé la messagerie A2P au niveau du registre. Son respect fait partie de l’hygiène de la messagerie 10DLC américaine, indépendamment de votre propre liste de suppression.
  • Registres nationaux internationaux. Hors des États-Unis, des listes nationales équivalentes s’appliquent — le TPS et le CTPS britanniques, le Do Not Call Register australien, le NDNC indien. Elles sont propres à chaque juridiction : vous nettoyez une campagne britannique contre les registres britanniques, c’est pourquoi l’endpoint de vérification accepte un filtre country (ci-dessous).
Rien de tout cela ne remplace votre propre couche de suppression — un destinataire qui vous a répondu STOP est restreint indépendamment de tout registre national. La chaîne de nettoyage traite votre suppression, vos désinscriptions de consentement et les registres nationaux comme une réponse combinée unique.

Activer le bascule du locataire

L’endpoint de vérification est désactivé par défaut par organisation. Tant que vous ne vous y êtes pas inscrit — ou tant qu’Orbit n’a synchronisé aucun flux pour la plateforme — l’endpoint renvoie 403 DNC_SYNC_NOT_ENABLED :
Activez-le dans les paramètres de conformité de votre organisation (le paramètre dnc_sync_enabled — voir la carte des postures, qui répertorie ce bascule et sa valeur par défaut). Une seule activation rend disponibles à la fois la vérification d’un numéro unique et le nettoyage en masse.
Le gate se désactive automatiquement une fois les flux synchronisés. Le bascule de l’organisation est la reconnaissance que, tant qu’aucun flux fédéral n’est synchronisé, Orbit ne nettoie pas pour vous contre le registre de la FTC. Une fois que la plateforme a synchronisé un instantané fédéral/étatique/TCR (ou international), l’endpoint répond directement et le gate 403 ne s’applique plus — le champ federal_feeds_synced de chaque réponse indique l’état dans lequel vous vous trouvez. Votre propre application des DNC, de la suppression et du consentement sur le chemin d’envoi n’est pas affectée dans un cas comme dans l’autre.

D’où vient la liste (câblage des flux)

Les données DNC synchronisées proviennent de flux en amont, rafraîchis quotidiennement dans la liste DNC globale de la plateforme. Ce qu’un opérateur configure détermine quelle valeur de source l’endpoint de vérification vous renvoie. Ce sont des variables d’environnement de niveau opérateur. Sur la plateforme hébergée (SaaS) d’Orbit, elles sont définies pour vous ; l’opérateur SaaS contrôle quels flux sont actifs. Elles ne vous concernent directement que si vous auto-hébergez Orbit — dans ce cas, configurez-les dans votre déploiement :
  • DEVOTEL_DNC_FEED_FILE — un volume monté contenant un instantané fédéral/étatique/TCR acquis. La synchronisation quotidienne le lit, analyse chaque numéro désinscrit et l’insère dans la liste DNC de la plateforme avec son étiquette de source (federal_dnc, state_dnc:XX ou tcr).
  • DEVOTEL_DNC_FEED_URL — un téléchargement authentifié du même instantané, en alternative au fichier monté. Le fichier a la priorité lorsque les deux sont définis.
La synchronisation s’exécute une fois par jour UTC (les flux publient une fois par jour ouvré ; l’exécution cible 03:00 UTC afin qu’une fenêtre d’envoi matinale voie des données fraîches). Relancer le même instantané est sans effet au-delà du rafraîchissement de l’horodatage — l’insertion est idempotente. Solution de repli : extraction TCR directe. Lorsqu’aucun fichier/URL d’instantané n’est configuré mais que les identifiants payants du partenaire TCR sont définis — DEVOTEL_TCR_API_KEY avec DEVOTEL_TCR_PARTNER_ID — la synchronisation quotidienne extrait le registre Universal Opt-Out de TCR directement depuis l’API du partenaire et l’insère avec source: "tcr". Cela fournit le nettoyage TCR à partir de l’abonnement TCR existant sans CSV hors bande.
Le même instantané que la synchronisation quotidienne écrit dans la liste DNC de la plateforme est également chargé en mémoire par l’API au démarrage, de sorte que l’endpoint de vérification peut répondre à une recherche fédérale/étatique/TCR sans attendre la prochaine écriture quotidienne. federal_feeds_synced: true dans la réponse signifie que le flux en mémoire est actif.

Lire l’endpoint de vérification

GET /compliance/dnc/check indique si un numéro E.164 figure sur une source DNC que le chemin d’envoi applique. Il est en lecture seule — il n’effectue aucun envoi.
Un résultat positif renvoie :
Un numéro non figurant renvoie "on_dnc": false, "source": "none" et un jurisdictions vide. Les champs qui portent la posture :
  • source — la source qui a produit le premier résultat, l’une parmi federal_dnc, state_dnc (un registre étatique américain), tcr (le TCR Universal Opt-Out), intl_dnc (un registre national international), suppression (votre propre couche de suppression) ou none (ne figure sur aucune liste). jurisdictions liste toutes les origines correspondantes, de sorte qu’un numéro inscrit à la fois au registre fédéral et à un registre étatique fait apparaître les deux.
  • last_synced_at — l’horodatage de fraîcheur de la source correspondante : quand l’instantané fédéral/étatique/TCR (ou la ligne qu’il a touchée) a été synchronisé pour la dernière fois. La synchronisation quotidienne horodate une ligne de pulsation à chaque exécution, de sorte que ce champ porte toujours un signal de « dernière synchronisation » pour les sources adossées à un flux, plutôt que de rester muet quand aucune ligne ne correspond. Vos propres sources de suppression/consentement n’ont pas de synchronisation : pour un résultat de suppression seule, le champ reflète l’événement d’opt-out lui-même.
  • federal_feeds_synced / intl_feeds_synced — si l’API a effectivement ingéré un instantané fédéral/étatique/TCR américain et un instantané de registre national international, respectivement. Lisez-les à chaque réponse : ils distinguent « le numéro est libre » de « le numéro est libre et un nettoyage fédéral a étayé cette réponse. »
Filtre par juridiction. Ajoutez country (ISO alpha-2) pour limiter la recherche dans les registres internationaux à une juridiction :
Avec country=GB, seuls les registres britanniques (TPS/CTPS) peuvent produire une correspondance internationale — une campagne à destination du Royaume-Uni n’est jamais signalée pour un enregistrement d’un pays sans rapport. En masse. Pour nettoyer une liste entière ou l’audience d’une campagne en un seul appel, utilisez POST /compliance/dnc/scrub avec un tableau phones (jusqu’à 500 numéros par requête ; les doublons sont supprimés). Il exécute la même chaîne par numéro et renvoie des verdicts par numéro plus les compteurs on_dnc / clear. Le même gate d’organisation s’applique.

Comment le côté envoi le consomme

L’endpoint de vérification est une lecture de la même chaîne que le chemin d’envoi applique. Vous n’avez pas à câbler le nettoyage dans vos envois — Orbit le fait déjà :
  • Messagerie (SMS / MMS / WhatsApp / …). Avant l’envoi, le chemin d’envoi répond à la question « ce destinataire est-il désinscrit ? » contre les mêmes sources DNC — votre marqueur DNC de contact, votre liste DNC, la liste de suppression (le signal STOP intercanal), la liste DNC globale de la plateforme (où atterrit le flux quotidien fédéral/étatique/TCR) et les désinscriptions de consentement enregistrées. Un résultat au hit abandonne l’envoi.
  • Voix / composeur. Le composeur exécute la même chaîne de conformité avant d’originer un appel — STOP intercanal, DNC de contact, DNC de plateforme et consentement — de sorte qu’un numéro désinscrit par SMS n’est ensuite pas composé par la voix. Le chemin d’envoi échoue de manière fermée : si la vérification de conformité elle-même ne peut aboutir, l’appel est différé plutôt que composé.
Le rôle de l’endpoint est donc le pré-vol, non l’application : interrogez-le (ou le nettoyage en masse) sur une liste froide avant une campagne pour supprimer les numéros que le gate bloquerait de toute façon — et pour les faire remonter dans vos propres dossiers.

La réserve fail-open

L’endpoint de lecture est fail-open au niveau de la source : si une source DNC ne peut être interrogée, la vérification continue avec les autres et renvoie la meilleure réponse possible. La conséquence concrète à comprendre :
Tant qu’aucun flux fédéral n’est synchronisé, un numéro qui ne figure qu’au registre fédéral de la FTC est renvoyé comme libre (on_dnc: false).
C’est pourquoi l’endpoint est en gate jusqu’à ce que vous vous inscriviez, et pourquoi federal_feeds_synced voyage sur chaque réponse. Deux règles opérationnelles en découlent :
  1. Ne traitez pas un résultat libre comme une sauvegarde fédérale sauf si federal_feeds_synced: true. Un verdict libre avec federal_feeds_synced: false signifie seulement que vos propres listes, la suppression, le consentement et la liste de la plateforme n’ont pas signalé le numéro.
  2. Le gate strict est le chemin d’envoi. Le chemin de lecture est fail-open par conception ; le chemin d’envoi ne l’est pas. Un faux négatif d’une requête de pré-vol ne devient jamais un envoi — la chaîne au moment de l’envoi revérifie les mêmes sources et bloque ce qu’elle trouve.
Sur le SaaS d’Orbit, traitez federal_feeds_synced: false comme « aucun nettoyage fédéral n’étaye encore cette réponse » et pesez cela dans la décision de vous reposer sur le pré-vol pour une campagne américaine. Les auto-hébergeurs comblent l’écart en configurant un flux (ci-dessus).

Vérifier avant une campagne

Pré-vérifiez l’audience d’une campagne avec le nettoyage en masse, puis agissez sur les verdicts :
Supprimez les numéros on_dnc: true de l’audience avant l’envoi. Vérifiez federal_feeds_synced / intl_feeds_synced sur la même réponse pour savoir quels registres ont réellement étayé les verdicts, et vérifiez last_synced_at par résultat pour confirmer que les données sont fraîches. Pour une liste plus grande, paginez-la par tranches de 500 numéros.
Voir aussi :