Lorsque vous expédiez des milliers de SMS au Maroc, la réponse de l'API (`HTTP 200 OK`) ne confirme qu'une chose : la passerelle a bien reçu votre demande. Pour savoir si le client a réellement reçu le message sur son téléphone, vous devez interpréter les **Delivery Reports (DLR)**.
Ces accusés de réception asynchrones sont envoyés par l'opérateur (IAM, Orange, inwi) à la passerelle, qui vous les transmet via un [Webhook](/fr/blog/webhook-de-statut-de-livraison-sms-qui-ne-se-declenche-pas-guide/).
La compréhension précise de ces 4 statuts est vitale pour monitorer la santé de vos envois, identifier une base de données corrompue, ou réagir à une panne réseau opérateur. Voici ce qu'ils signifient concrètement sur le terrain.
Les 4 statuts DLR expliqués simplement
### 1. DELIVERED (Délivré avec succès)
C'est le statut final idéal. Il confirme formellement que le SMS a atteint le combiné (le téléphone) du destinataire.
*Délai technique :* Pour un numéro marocain valide et couvert par le réseau, ce statut remonte généralement entre 2 et 5 secondes après l'envoi initial.
### 2. PENDING (En attente de livraison)
Le message a été transmis à l'opérateur local, mais ce dernier n'a pas encore pu le livrer au combiné.
*Pourquoi ?* Le téléphone est éteint, en mode avion, hors zone de couverture, ou la boîte de réception SMS du client est pleine.
*Durée :* L'opérateur gardera le message en `Pending` pendant une période définie (Validity Period, souvent 24h ou 48h). Il réessaiera périodiquement. Si le délai expire, le statut basculera en `Failed`.
### 3. FAILED (Échec définitif)
Le message n'a pas pu être livré, et l'opérateur a abandonné les tentatives.
*Pourquoi ?* Le numéro n'existe plus, n'est pas attribué (Non-Existent Number), le délai de validité est dépassé, ou le téléphone a bloqué spécifiquement la réception. Un taux élevé de `Failed` indique que votre base de données n'est pas nettoyée et contient de nombreux "numéros morts".
### 4. UNKNOWN / REJECTED (Rejet opérateur)
L'opérateur a reçu la demande mais refuse catégoriquement de l'acheminer.
*Pourquoi ?* Le [Sender ID n'est pas autorisé](/fr/blog/sender-id-rejete-ou-bloque-au-maroc-ce-qui-se-passe-vraiment-et/) sur ce réseau, le contenu a été [marqué comme SPAM](/fr/blog/pourquoi-vos-sms-marketing-sont-filtres-comme-spam-au-maroc-et/) par les filtres réseau, ou l'itinéraire vers ce préfixe est temporairement fermé.
Pourquoi un SMS reste en pending longtemps
Un pourcentage normal de `Pending` en fin de campagne se situe entre 5% et 8% (liés aux téléphones éteints ou hors réseau).
Cependant, si vous observez un bloc massif de messages bloqués en `Pending` (ex: 40% de la campagne) sur un opérateur spécifique (par exemple, uniquement les numéros en `0661`), cela indique un **incident de congestion réseau** (Throttling) ou une panne SMSC chez l'opérateur en question. Dans ce cas, les messages sont coincés dans le goulot d'étranglement de l'opérateur.
Quand un statut unknown doit alerter votre équipe technique
Le statut `Unknown` ou `Rejected` est le plus critique. S'il apparaît de manière isolée, c'est souvent un filtre anti-spam mineur. S'il frappe une campagne entière dès le lancement, alertez immédiatement vos développeurs : votre Sender ID vient probablement d'être blacklisté, ou le compte a été bloqué pour non-conformité.
**Exemple de payload JSON de webhook réel :**
```json
{
"message_id": "d983f4b2-...",
"to": "212612345678",
"status": "REJECTED",
"error_code": "403",
"error_description": "Sender ID not whitelisted for this carrier",
"timestamp": "2026-06-27T10:05:22Z"
}
```
*Ici, le DLR vous donne précisément la raison de l'échec. La lecture de `error_description` est primordiale.*
Comment automatiser les relances sur statut failed
L'analyse des DLR n'a de sens que si elle déclenche une action métier.
- **Hygiène de base :** Configurez un script qui détecte les statuts `Failed` (avec erreur type "numéro non attribué") et supprime ou marque ces numéros comme inactifs dans votre CRM. Cela évitera de payer pour les spammer à la prochaine campagne.
- **Relance intelligente :** Si un SMS critique (OTP, confirmation de commande) tombe en `Failed`, configurez votre système pour déclencher un fallback automatique : envoyez l'alerte par e-mail, par WhatsApp, ou déclenchez un appel vocal.
La maîtrise des DLR est la différence entre une application qui "envoie des SMS" et un [système de notification robuste](/fr/api/) de niveau entreprise.
💡 Pourquoi choisir EnvoiSMS pour votre entreprise ?
⚡Délivrabilité Critique
Moins de 4 secondes pour vos OTP via des canaux directs opérateurs IAM, Inwi et Orange Maroc.
💰Optimisation du Budget
WhatsApp Business API à 0,13 MAD seulement par session. Le meilleur ROI conversationnel.
🛡️Données Souveraines (CNDP)
Hébergement conforme aux réglementations de protection des données personnelles locales.