Format E.164 des numéros de téléphone : conversion et validation
Format E.164 expliqué : règles, conversion des numéros locaux avec un tableau d'exemples, exigences des API WhatsApp et SMS, regex et libphonenumber.
Par OmniChannels.ai Editorial Team · Relu par BroadNet Messaging Solutions Team
Intégration
Réponse courte
E.164 est le plan de numérotation international de l'UIT-T. Un numéro E.164 s'écrit avec un signe plus initial, l'indicatif pays et le numéro national, soit 15 chiffres au maximum, sans espaces ni ponctuation, par exemple +971501234567. Pour convertir un numéro local, supprimez le préfixe national (en général 0) si le pays en utilise un, ajoutez le plus et l'indicatif pays, puis retirez espaces et parenthèses.
Sur cette page
- Qu'est-ce que le format E.164 ?
- Comment convertir un numéro de téléphone local en E.164 ?
- À quoi ressemblent les numéros E.164 selon les pays ?
- Pourquoi l'Italie conserve-t-elle le 0 initial ?
- Pourquoi les API SMS et WhatsApp exigent-elles E.164 ?
- Comment valider et normaliser les numéros en code ?
- Comment corriger les numéros de téléphone dans un tableur ?
- Exemple concret : nettoyer une liste de clients
- Quelles sont les erreurs courantes ?
- Comment OmniChannels.ai vous aide
Points clés
- Un numéro E.164 se compose d'un signe plus, de l'indicatif pays et du numéro national : 15 chiffres au plus au total, sans espaces, tirets ni parenthèses.
- Convertir revient à retirer le préfixe national, en général 0, mais tous les pays n'en ont pas : le tableau des procédures de numérotation de l'UIT n'en indique aucun pour l'Italie, l'Espagne et le Qatar.
- Meta recommande d'inclure le signe plus et l'indicatif pays dans les requêtes d'envoi WhatsApp, car un numéro qui en est dépourvu reçoit l'indicatif pays de l'expéditeur et peut atteindre la mauvaise personne.
- Une regex vérifie la forme d'un numéro ; une bibliothèque comme libphonenumber vérifie qu'il est valide pour son pays.
- Excel peut supprimer les zéros initiaux et afficher les longs numéros en notation scientifique : gardez donc les colonnes de numéros au format Texte.
Ce guide s'adresse aux marketeurs, analystes et développeurs qui manipulent des numéros de téléphone pour le SMS ou WhatsApp et les veulent sous la forme qu'une API accepte. Il explique ce qu'est E.164, montre comment convertir des numéros de différents pays, et aborde la validation en code ainsi que les problèmes de tableur qui corrompent les numéros avant même leur envoi.
Qu'est-ce que le format E.164 ?
E.164 est le plan de numérotation public international des télécommunications, publié par l'UIT-T sous la recommandation E.164. Au quotidien, le terme désigne une façon d'écrire un numéro : un signe plus, l'indicatif pays et le numéro national, en chiffres uniquement.
Un numéro E.164 comporte ces éléments :
+représente le préfixe d'appel international, qui diffère selon les pays (00 dans beaucoup d'endroits, 011 aux États-Unis).- L'indicatif pays, de un à trois chiffres, comme 971 pour les Émirats arabes unis ou 1 pour les États-Unis et le Canada.
- Le numéro national, le reste du numéro sans le préfixe national.
La recommandation fixe la longueur maximale à 15 chiffres, hors préfixe international. Ainsi +971501234567 est un E.164 valide (12 chiffres), alors qu'une valeur de 17 chiffres ne peut pas l'être. Notre entrée de glossaire sur E.164 en donne une courte définition.
Comment convertir un numéro de téléphone local en E.164 ?
Retirez la mise en forme, supprimez le préfixe national s'il y en a un, puis ajoutez le signe plus et l'indicatif pays.
- Supprimez espaces, tirets, points et parenthèses.
050 123 4567devient0501234567. - Retirez le préfixe d'appel international si le numéro en comporte un :
00971...ou011...devient971.... - Supprimez le préfixe national si le pays en utilise un. Dans de nombreux pays, c'est
0; aux États-Unis et au Canada, c'est1. - Ajoutez l'indicatif pays s'il n'y est pas déjà.
- Ajoutez le signe plus.
Il faut connaître le pays pour cela. 0501234567 n'a de sens qu'avec un pays associé, raison pour laquelle les tableurs doivent comporter une colonne pays.
À quoi ressemblent les numéros E.164 selon les pays ?
Le tableau donne des exemples. Les numéros sont des exemples fictifs, pas de vrais abonnés. Les indicatifs proviennent de nos données réglementaires ; les préfixes nationaux proviennent du tableau des procédures de numérotation de l'UIT.
| Pays | Indicatif | Préfixe national (tableau UIT) | Forme locale (exemple) | E.164 |
|---|---|---|---|---|
| Émirats arabes unis | +971 | 0 | 050 123 4567 | +971501234567 |
| Arabie saoudite | +966 | 0 | 051 234 5678 | +966512345678 |
| Qatar | +974 | aucun indiqué | 5512 3456 | +97455123456 |
| Kenya | +254 | 0 | 0712 345 678 | +254712345678 |
| Royaume-Uni | +44 | 0 | 07700 900123 | +447700900123 |
| Allemagne | +49 | 0 | 0151 12345678 | +4915112345678 |
| Inde | +91 | 0 | 098765 43210 | +919876543210 |
| Espagne | +34 | aucun indiqué | 612 345 678 | +34612345678 |
| Italie (mobile) | +39 | aucun indiqué | 312 345 6789 | +393123456789 |
| Italie (fixe) | +39 | aucun indiqué | 06 1234 5678 | +390612345678 |
| États-Unis | +1 | 1 | (202) 555-0123 | +12025550123 |
Le tableau de l'UIT est une position publiée en décembre 2011 : voyez-y un guide des modèles courants et confirmez un pays précis avec la bibliothèque ou le régulateur.
Pourquoi l'Italie conserve-t-elle le 0 initial ?
Parce qu'en Italie le 0 fait partie du numéro et n'est pas un préfixe national. Le tableau des procédures de numérotation de l'UIT montre l'Italie (indicatif 39) sans préfixe national : il n'y a donc rien à supprimer. Les numéros géographiques italiens commencent par 0, comme dans l'exemple de style romain 06 1234 5678, et le conservent à l'international : +390612345678. Les numéros mobiles italiens commencent par 3 et n'ont pas de zéro à conserver : 312 345 6789 devient +393123456789.
N'appliquez pas « supprimez toujours le zéro » comme règle générale. Le même tableau n'indique aucun préfixe national pour l'Espagne ni le Qatar, et les données évoluent, ce qui est une bonne raison d'utiliser une bibliothèque pour tout ce que vous ne pouvez pas vérifier à la main.
Pourquoi les API SMS et WhatsApp exigent-elles E.164 ?
Parce que l'acheminement exige un numéro sans ambiguïté. Un numéro sans indicatif pays peut appartenir à de nombreux pays : la plateforme pourrait alors envoyer vers le mauvais marché, appliquer les mauvaises règles de sender ID et facturer le mauvais tarif. Les tarifs, l'enregistrement des sender ID et les horaires d'envoi promotionnels s'appliquent tous par pays de destination, et l'indicatif pays sert à identifier la destination.
Que dit Meta des numéros WhatsApp ?
La documentation de Meta sur les formats de numéros de téléphone des utilisateurs WhatsApp indique que les signes plus, tirets, parenthèses et espaces sont pris en charge dans les requêtes d'envoi de message, et recommande vivement d'inclure le signe plus et l'indicatif pays. Si le signe plus est absent, l'indicatif pays de l'expéditeur est ajouté au numéro, ce qui peut conduire à l'envoi d'un message à un mauvais numéro. L'exemple de Meta : pour un expéditeur en Inde (indicatif 91), (631) 555-1234 est remis à +916315551234, tandis que +1 (631) 555-1234 est remis correctement. Meta précise aussi que pour le Brésil et le Mexique, l'API Cloud peut modifier le préfixe supplémentaire présent dans certains numéros, et qualifie cela de comportement standard.
L'approche sûre : stockez du E.164 propre et envoyez exactement cela.
Et pour le SMS ?
Les API SMS attendent elles aussi le numéro international complet. Certaines exigent les chiffres sans le signe plus ; le format diffère selon les API et les protocoles : consultez donc la documentation de l'API utilisée et testez avec votre propre numéro. Voir envoyer des SMS via API et envoyer un message WhatsApp via API pour des exemples concrets.
Comment valider et normaliser les numéros en code ?
Utilisez une regex pour un contrôle rapide de la forme et une bibliothèque pour une vraie validation.
Un contrôle de forme E.164 courant :
// Plus, a non-zero first digit, then 1 to 14 more digits: 15 digits at most
const E164 = /^\+[1-9]\d{1,14}$/;
function looksLikeE164(value) {
return E164.test(value);
}
looksLikeE164("+971501234567"); // true
looksLikeE164("0501234567"); // false: no plus or country code
looksLikeE164("+0501234567"); // false: country codes do not start with 0
La regex ne vérifie que la longueur et les caractères. Elle accepte +99999999999 alors qu'aucun numéro de ce type n'existe. Pour une vraie validation, utilisez libphonenumber, la bibliothèque open source de Google pour analyser, formater et valider les numéros de téléphone internationaux, disponible pour Java, C++ et JavaScript, avec des portages communautaires dans d'autres langages. Son README décrit isValidNumber comme la validation complète pour une région à partir des informations de longueur et de préfixe, et montre comment formater un numéro analysé en E.164.
# pip install phonenumbers (a Python port of libphonenumber)
import phonenumbers
def to_e164(raw, default_region):
try:
number = phonenumbers.parse(raw, default_region) # e.g. "AE", "SA", "GB"
except phonenumbers.NumberParseException:
return None
if not phonenumbers.is_valid_number(number):
return None
return phonenumbers.format_number(number, phonenumbers.PhoneNumberFormat.E164)
print(to_e164("050 123 4567", "AE")) # +971501234567 if the number is valid for the UAE
print(to_e164("+44 7700 900123", "GB"))
Les portages sont écrits par des développeurs extérieurs : vérifiez la qualité de celui que vous choisissez. Analysez avec une région par défaut tirée du pays de votre client, puis stockez le résultat E.164. Conservez aussi la saisie brute pour pouvoir la réanalyser si les règles changent.
Normalisez au point d'entrée, dans le formulaire d'inscription, l'import CRM ou l'API, pas au moment de l'envoi. Un numéro écrit de deux façons devient deux contacts qui reçoivent chacun la même campagne.
Comment corriger les numéros de téléphone dans un tableur ?
Mettez la colonne des numéros au format Texte avant de saisir ou de coller les numéros. Les problèmes courants :
| Problème | Ce qui se passe | Correctif |
|---|---|---|
| Zéro initial supprimé | 0501234567 devient 501234567 |
Mettez d'abord les cellules au format Texte ; ou commencez la saisie par une apostrophe |
| Notation scientifique | Un long numéro s'affiche 9.71501E+11 |
Format Texte ; Excel conserve 15 chiffres de précision numérique |
| Signe plus perdu | Une cellule numérique peut ne pas conserver le + |
Format Texte, puis vérifiez les premiers caractères de la colonne |
| Espaces et tirets | 971 50 123 4567 |
Supprimez-les avec Rechercher/Remplacer ou SUBSTITUE |
| Indicatif pays manquant | Numéros locaux uniquement | Ajoutez une colonne pays ; construisez le numéro avec une formule |
Microsoft documente qu'Excel supprime les zéros initiaux et convertit les grands nombres en notation scientifique, et que les numéros saisis avant l'application du format Texte doivent être ressaisis. Lorsque vous ouvrez directement un fichier CSV, Excel applique ses formats par défaut à chaque colonne : utilisez donc l'Assistant d'importation de texte ou À partir du texte/CSV pour marquer la colonne des numéros comme texte.
Pour une liste de mobiles des Émirats arabes unis stockée sous la forme 050 123 4567 dans la colonne A, cette formule construit le E.164 sous forme de texte :
="+971"&RIGHT(SUBSTITUTE(A2," ",""),9)
Elle garde les neuf derniers chiffres après suppression des espaces : elle ne convient donc qu'aux numéros de cette forme. Copiez le résultat et collez-le en valeurs avant d'enregistrer en CSV. Le formateur de numéros convertit un numéro sans formule, et notre guide pour envoyer des SMS en masse depuis Excel ou CSV présente tout le parcours d'import.
Exemple concret : nettoyer une liste de clients
« Souq Rafiq » (fictif), un détaillant de Dubaï, exporte 8 000 contacts de trois systèmes, avec des numéros comme 0501234567, 971 50 123 4567, +971-50-123-4567 et 00971501234567.
- L'analyste ajoute une colonne pays à partir du pays de facturation de chaque client.
- Un script analyse chaque ligne avec le pays comme région par défaut, de sorte que les quatre formats deviennent
+971501234567. - Les lignes qui échouent à la validation vont dans une feuille de revue au lieu d'être envoyées.
- Les doublons sont supprimés après normalisation, ce qui fusionne les quatre formats en un seul contact.
- Une recherche HLR signale les numéros inactifs avant la campagne. Voir la recherche HLR expliquée.
- La colonne propre est stockée au format Texte puis importée.
C'est la normalisation préalable qui fait fonctionner la détection des doublons ; avant elle, le même client ressemblait à quatre personnes.
Quelles sont les erreurs courantes ?
- Supprimer toujours le zéro initial. Certains pays, comme l'Italie, n'ont pas de préfixe national.
- Garder le zéro et ajouter l'indicatif pays, ce qui donne
+9710501234567. - Envoyer sans le signe plus à WhatsApp, si bien que l'indicatif pays de l'expéditeur est ajouté.
- Utiliser une regex comme validation. Elle vérifie la forme, pas la validité.
- Laisser Excel traiter les numéros comme des nombres, avec perte des zéros ou passage en notation scientifique.
- Normaliser au moment de l'envoi plutôt qu'à la saisie.
- Supposer qu'un format valide signifie un numéro joignable. Les numéros portés ou déconnectés échouent quand même.
- Se fier à un tableau statique. Les plans de numérotation changent ; utilisez une bibliothèque maintenue.
Comment OmniChannels.ai vous aide
OmniChannels.ai accepte les numéros internationaux pour le SMS et WhatsApp via une seule API REST, et ses campagnes acceptent les imports Excel et CSV avec aperçu et filtrage des doublons. BroadNet propose la recherche HLR et de numéro, pour vérifier qu'un numéro bien formé est actif. Lisez la documentation de l'API SMS et celle de l'API WhatsApp pour les champs exacts des requêtes, ou parlez à notre équipe de l'onboarding.
Questions fréquentes
Qu'est-ce que le format E.164 ?
E.164 est le plan de numérotation téléphonique international défini par la recommandation UIT-T E.164. Dans l'usage courant, un numéro E.164 est un signe plus, l'indicatif pays et le numéro national écrits en chiffres uniquement, avec au plus 15 chiffres au total. Il identifie un numéro de façon unique dans le monde, ce qui explique que les plateformes de messagerie et les API le demandent.
Comment convertir un numéro de téléphone en E.164 ?
Supprimez les espaces, tirets et parenthèses. Retirez le préfixe national si le pays en utilise un, en général un 0 initial. Ajoutez le signe plus et l'indicatif pays. Ainsi, le numéro des Émirats arabes unis 050 123 4567 devient +971501234567. Des pays comme l'Italie conservent le 0 initial des numéros fixes : vérifiez donc la règle du pays ou utilisez une bibliothèque.
Combien de chiffres peut avoir un numéro E.164 ?
Au plus 15 chiffres, en comptant l'indicatif pays et le numéro national, sans compter le préfixe d'appel international. Le signe plus n'est pas un chiffre. De nombreux numéros nationaux sont bien plus courts. Une valeur de plus de 15 chiffres ne peut pas être un numéro E.164 valide et signale en général une erreur de collage ou une cellule de tableur abîmée.
L'API WhatsApp exige-t-elle le signe plus ?
La documentation de Meta indique que les signes plus, tirets, parenthèses et espaces sont pris en charge dans les requêtes d'envoi de message, et recommande vivement d'inclure le signe plus et l'indicatif pays. Sans le signe plus, l'indicatif pays de l'expéditeur est ajouté au numéro, ce qui peut envoyer le message à un autre numéro, erroné. Envoyez du E.164 complet pour éviter tout risque.
Pourquoi Excel supprime-t-il le zéro ou modifie-t-il mes numéros de téléphone ?
Excel traite un numéro de téléphone saisi comme un nombre comme une valeur numérique. Microsoft documente que cela supprime les zéros initiaux et affiche les longs nombres en notation scientifique, car Excel conserve 15 chiffres de précision. Mettez la colonne au format Texte avant de saisir ou de coller les numéros, ou commencez les saisies par une apostrophe, et ressaisissez les numéros tapés auparavant.
Un numéro E.164 valide est-il aussi un numéro joignable ?
Non. Un numéro peut être correctement formaté mais non attribué, déconnecté ou porté. La validation du format vérifie la forme et la longueur pour un pays. Pour savoir si un numéro est actif et sur quel réseau, utilisez une recherche HLR ou de numéro avant un envoi important.
Sources
- Recommendation ITU-T E.164: The international public telecommunication numbering plan
- Dialling procedures (international prefix, national (trunk) prefix and national (significant) number), ITU Operational Bulletin No. 994, 15.XII.2011
- WhatsApp user phone number formats — WhatsApp Business Platform, Meta for Developers
- Keeping leading zeros and large numbers — Microsoft Support
- libphonenumber — Google, open-source library on GitHub
À lire aussi
Autres guidesIntégration
Saisie automatique d'OTP par SMS : Android, iOS et Web
Comment fonctionne la saisie automatique d'OTP sur Android, iOS et le Web : hash SMS Retriever, codes liés au domaine, WebOTP, format SMS unique et WhatsApp.
9 min de lecture
Intégration
Débit et limites de taux de l'API Cloud WhatsApp expliqués
Débit et limites de taux de l'API Cloud WhatsApp : messages par seconde, hausse du débit, limites par paire et Graph API, codes d'erreur et reprise avec backoff.
9 min de lecture
Marketing
Rappels de rendez-vous automatiques WhatsApp et SMS : le guide
Automatisez vos rappels de rendez-vous par WhatsApp et SMS (cliniques, salons, hôtels) : moment d'envoi, modèles, boutons confirmer et reporter, repli par SMS.
8 min de lecture
