Saltar al contenido
OmniChannels.ai

Formato E.164 de números de teléfono: conversión y validación

Formato E.164 explicado: reglas, cómo convertir números locales con una tabla de ejemplos, requisitos de las API de WhatsApp y SMS, regex y libphonenumber.

Actualizado 9 min de lectura

Por OmniChannels.ai Editorial Team · Revisado por BroadNet Messaging Solutions Team

Integración

Respuesta breve

E.164 es el plan de numeración internacional de la UIT-T. Un número E.164 se escribe con un signo más inicial, el prefijo del país y el número nacional, con un máximo de 15 dígitos y sin espacios ni signos de puntuación, por ejemplo +971501234567. Para convertir un número local, elimine el prefijo troncal nacional (normalmente 0) si el país lo usa, añada el más y el prefijo del país, y quite espacios y paréntesis.

En esta página
  1. ¿Qué es el formato E.164?
  2. ¿Cómo convierto un número de teléfono local a E.164?
  3. ¿Qué aspecto tienen los números E.164 en distintos países?
  4. ¿Por qué Italia conserva el 0 inicial?
  5. ¿Por qué las API de SMS y WhatsApp necesitan E.164?
  6. ¿Cómo valido y normalizo números en código?
  7. ¿Cómo arreglo los números de teléfono en una hoja de cálculo?
  8. Ejemplo práctico: depurar una lista de clientes
  9. ¿Cuáles son los errores más comunes?
  10. Cómo ayuda OmniChannels.ai

Puntos clave

  • Un número E.164 es un signo más, el prefijo del país y el número nacional: hasta 15 dígitos en total, sin espacios, guiones ni paréntesis.
  • Convertir significa quitar el prefijo troncal nacional, normalmente 0, pero no todos los países lo tienen: la tabla de procedimientos de marcación de la UIT no lista ninguno para Italia, España ni Catar.
  • Meta recomienda incluir el signo más y el prefijo telefónico del país en las solicitudes de envío de WhatsApp, porque a un número sin ellos se le añade el prefijo del país del remitente y puede llegar a otra persona.
  • Una regex comprueba la forma de un número; una biblioteca como libphonenumber comprueba que sea válido para su país.
  • Excel puede eliminar ceros iniciales y mostrar números largos en notación científica, así que mantenga las columnas de teléfono con formato Texto.

Esta guía está pensada para profesionales de marketing, analistas y desarrolladores que manejan números de teléfono para SMS o WhatsApp y los necesitan en la forma que acepta una API. Explica qué es E.164, muestra cómo convertir números de distintos países y trata la validación en código y los problemas de las hojas de cálculo que corrompen los números antes de enviarlos.

¿Qué es el formato E.164?

E.164 es el plan de numeración internacional de telecomunicaciones públicas, publicado por la UIT-T como Recomendación E.164. En el día a día, el término designa una forma de escribir un número: un signo más, el prefijo del país y el número nacional, solo con dígitos.

Un número E.164 tiene estas partes:

  • + representa el prefijo de llamada internacional, que varía según el país (00 en muchos sitios, 011 en EE. UU.).
  • El prefijo del país, de uno a tres dígitos, como 971 para EAU o 1 para EE. UU. y Canadá.
  • El número nacional, el resto del número sin el prefijo troncal nacional.

La recomendación fija la longitud máxima en 15 dígitos, sin contar el prefijo internacional. Así, +971501234567 es un E.164 válido (12 dígitos), mientras que un valor de 17 dígitos no puede serlo. Nuestra entrada del glosario sobre E.164 ofrece una definición breve.

¿Cómo convierto un número de teléfono local a E.164?

Quite el formato, elimine el prefijo troncal nacional si lo hay y añada el signo más y el prefijo del país.

  1. Quite espacios, guiones, puntos y paréntesis. 050 123 4567 pasa a 0501234567.
  2. Quite el prefijo de llamada internacional si el número lo tiene: 00971... o 011... pasa a 971....
  3. Elimine el prefijo troncal nacional si el país lo usa. En muchos países es 0; en EE. UU. y Canadá es 1.
  4. Añada el prefijo del país si no lo tiene ya.
  5. Añada el signo más.

Para esto necesita conocer el país. 0501234567 solo tiene sentido con un país asociado, por eso las hojas de cálculo deben llevar una columna de país.

¿Qué aspecto tienen los números E.164 en distintos países?

La tabla muestra ejemplos. Los números son ejemplos ilustrativos, no abonados reales. Los prefijos de marcación proceden de nuestros datos normativos; los prefijos troncales, de la tabla de procedimientos de marcación de la UIT.

País Prefijo de marcación Prefijo troncal (tabla UIT) Forma local (ejemplo) E.164
EAU +971 0 050 123 4567 +971501234567
Arabia Saudí +966 0 051 234 5678 +966512345678
Catar +974 ninguno indicado 5512 3456 +97455123456
Kenia +254 0 0712 345 678 +254712345678
Reino Unido +44 0 07700 900123 +447700900123
Alemania +49 0 0151 12345678 +4915112345678
India +91 0 098765 43210 +919876543210
España +34 ninguno indicado 612 345 678 +34612345678
Italia (móvil) +39 ninguno indicado 312 345 6789 +393123456789
Italia (fijo) +39 ninguno indicado 06 1234 5678 +390612345678
Estados Unidos +1 1 (202) 555-0123 +12025550123

La tabla de la UIT es una posición publicada en diciembre de 2011, así que trátela como una guía del patrón y confirme un país concreto con la biblioteca o el regulador.

¿Por qué Italia conserva el 0 inicial?

Porque en Italia el 0 forma parte del número, no es un prefijo troncal. La tabla de procedimientos de marcación de la UIT muestra a Italia (prefijo 39) sin prefijo nacional, así que no hay nada que quitar. Los números geográficos italianos empiezan por 0, como en el ejemplo de estilo romano 06 1234 5678, y lo conservan en la forma internacional: +390612345678. Los números móviles italianos empiezan por 3 y no tienen cero que conservar, así que 312 345 6789 pasa a +393123456789.

No aplique «quite siempre el cero» como regla general. La misma tabla no lista prefijo troncal para España ni para Catar, y los datos cambian, lo cual es un buen motivo para usar una biblioteca con todo lo que no pueda comprobar a mano.

¿Por qué las API de SMS y WhatsApp necesitan E.164?

Porque el enrutamiento depende de un número sin ambigüedad. Un número sin prefijo de país puede pertenecer a muchos países, así que la plataforma podría enviar al mercado equivocado, aplicar las reglas de sender ID equivocadas y facturar la tarifa equivocada. Las tarifas, el registro de sender ID y los horarios de envío promocional se aplican por país de destino, y el prefijo del país es lo que identifica el destino.

¿Qué dice Meta sobre los números de WhatsApp?

La documentación de Meta sobre los formatos de número de teléfono de los usuarios de WhatsApp dice que se admiten signos más, guiones, paréntesis y espacios en las solicitudes de envío de mensajes, y recomienda encarecidamente incluir el signo más y el prefijo telefónico del país. Si falta el signo más, se añade al número el prefijo del país del remitente, lo que puede hacer que un mensaje llegue a un número equivocado. El ejemplo de Meta: para un remitente en India (prefijo 91), (631) 555-1234 se entrega a +916315551234, mientras que +1 (631) 555-1234 se entrega correctamente. Meta señala también que, para Brasil y México, la API en la nube puede modificar el prefijo adicional que aparece en algunos números, y lo califica de comportamiento estándar.

El enfoque seguro: almacene E.164 limpio y envíe exactamente eso.

¿Y para SMS?

Las API de SMS también esperan el número internacional completo. Algunas exigen los dígitos sin el signo más; el formato difiere entre API y protocolos, así que consulte la documentación de la API que use y pruebe con su propio número. Vea enviar SMS por API y enviar un mensaje de WhatsApp por API para ejemplos prácticos.

¿Cómo valido y normalizo números en código?

Use una regex para una comprobación rápida de la forma y una biblioteca para una validación real.

Una comprobación habitual de la forma E.164:

// 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 solo comprueba la longitud y los caracteres. Acepta +99999999999 aunque no exista tal número. Para una validación real, use libphonenumber, la biblioteca de código abierto de Google para analizar, formatear y validar números de teléfono internacionales, disponible para Java, C++ y JavaScript, con adaptaciones de la comunidad a otros lenguajes. Su README describe isValidNumber como la validación completa para una región mediante información de longitud y prefijo, y muestra cómo formatear un número analizado como 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"))

Las adaptaciones las escriben desarrolladores externos, así que compruebe la calidad de la que elija. Analice con una región predeterminada tomada del país de su cliente y almacene después el resultado E.164. Guarde también la entrada original, para poder volver a analizarla si cambian las reglas.

Normalice en el punto de entrada, en el formulario de alta, la importación del CRM o la API, no en el momento del envío. Un número escrito de dos formas se convierte en dos contactos que reciben cada uno la misma campaña.

¿Cómo arreglo los números de teléfono en una hoja de cálculo?

Dé formato Texto a la columna de teléfono antes de escribir o pegar los números. Los problemas habituales son:

Problema Qué ocurre Solución
Cero inicial eliminado 0501234567 pasa a 501234567 Dé primero formato Texto a las celdas; o empiece la entrada con un apóstrofo
Notación científica Un número largo se muestra como 9.71501E+11 Formato Texto; Excel conserva 15 dígitos de precisión numérica
Signo más perdido Una celda numérica puede no conservar el + Formato Texto y revise los primeros caracteres de la columna
Espacios y guiones 971 50 123 4567 Quítelos con Buscar y reemplazar o con SUSTITUIR
Falta el prefijo del país Solo números locales Añada una columna de país; construya el número con una fórmula

Microsoft documenta que Excel elimina los ceros iniciales y convierte los números grandes a notación científica, y que los números introducidos antes de aplicar el formato Texto deben volver a escribirse. Cuando abre un CSV directamente, Excel aplica sus formatos predeterminados a cada columna, así que use el Asistente para importar texto o Desde texto/CSV para marcar la columna de teléfono como texto.

Para una lista de móviles de EAU guardada como 050 123 4567 en la columna A, esta fórmula construye el E.164 como texto:

="+971"&RIGHT(SUBSTITUTE(A2," ",""),9)

Conserva los últimos nueve dígitos tras quitar los espacios, por lo que solo sirve para números de esa forma. Copie el resultado y péguelo como valores antes de guardar como CSV. El formateador de números convierte un número sin fórmula, y nuestra guía para enviar SMS masivos desde Excel o CSV muestra el flujo completo de carga.

Ejemplo práctico: depurar una lista de clientes

«Souq Rafiq» (ficticio), un minorista de Dubái, exporta 8000 contactos de tres sistemas con números como 0501234567, 971 50 123 4567, +971-50-123-4567 y 00971501234567.

  1. El analista añade una columna de país a partir del país de facturación de cada cliente.
  2. Un script analiza cada fila con el país como región predeterminada, de modo que los cuatro formatos pasan a ser +971501234567.
  3. Las filas que no superan la validación van a una hoja de revisión en lugar de enviarse.
  4. Los duplicados se eliminan tras la normalización, lo que reúne los cuatro formatos en un solo contacto.
  5. Una consulta HLR señala los números inactivos antes de la campaña. Vea la consulta HLR explicada.
  6. La columna limpia se almacena como Texto y se sube.

Normalizar primero es lo que hace que funcione la detección de duplicados; antes, el mismo cliente parecía cuatro personas.

¿Cuáles son los errores más comunes?

  • Quitar siempre el cero inicial. Algunos países, como Italia, no tienen prefijo troncal.
  • Conservar el cero y añadir el prefijo del país, lo que da +9710501234567.
  • Enviar sin el signo más a WhatsApp, de modo que se añade el prefijo del país del remitente.
  • Usar una regex como validación. Comprueba la forma, no la validez.
  • Dejar que Excel trate los teléfonos como números, con pérdida de ceros o paso a notación científica.
  • Normalizar en el momento del envío en lugar de en la entrada.
  • Suponer que un formato válido equivale a un número alcanzable. Los números portados o desconectados siguen fallando.
  • Fiarse de una tabla estática. Los planes de numeración cambian; use una biblioteca mantenida.

Cómo ayuda OmniChannels.ai

OmniChannels.ai acepta números internacionales para SMS y WhatsApp mediante una sola API REST, y sus campañas admiten cargas de Excel y CSV con vista previa y filtrado de duplicados. BroadNet ofrece consultas HLR y de numeración, para comprobar que un número bien formado está activo. Lea la documentación de la API de SMS y la de la API de WhatsApp para los campos exactos de las solicitudes, o hable con nuestro equipo sobre el onboarding.

Preguntas frecuentes

¿Qué es el formato E.164?

E.164 es el plan de numeración telefónica internacional definido por la Recomendación UIT-T E.164. En el uso cotidiano, un número E.164 es un signo más, el prefijo del país y el número nacional escritos solo con dígitos, con un máximo de 15 dígitos en total. Identifica un número de forma única en todo el mundo, por eso lo piden las plataformas de mensajería y las API.

¿Cómo convierto un número de teléfono a E.164?

Quite espacios, guiones y paréntesis. Elimine el prefijo troncal nacional si el país lo usa, normalmente un 0 inicial. Añada el signo más y el prefijo del país. Así, el número de EAU 050 123 4567 pasa a ser +971501234567. Países como Italia conservan el 0 inicial de los números fijos, así que compruebe la regla del país o use una biblioteca.

¿Cuántos dígitos puede tener un número E.164?

Como máximo 15 dígitos, contando el prefijo del país y el número nacional, y sin contar el prefijo de llamada internacional. El signo más no es un dígito. Muchos números nacionales son mucho más cortos. Un valor de más de 15 dígitos no puede ser un número E.164 válido y suele indicar un error al pegar o una celda dañada de la hoja de cálculo.

¿La API de WhatsApp necesita el signo más?

La documentación de Meta indica que se admiten signos más, guiones, paréntesis y espacios en las solicitudes de envío de mensajes, y recomienda encarecidamente incluir el signo más y el prefijo telefónico del país. Sin el signo más, se añade al número el prefijo del país del remitente, lo que puede enviar el mensaje a otro número equivocado. Envíe E.164 completo para estar seguro.

¿Por qué Excel elimina el cero o cambia mis números de teléfono?

Excel trata como valor numérico un número de teléfono escrito como número. Microsoft documenta que esto elimina los ceros iniciales y muestra los números largos en notación científica, porque Excel conserva 15 dígitos de precisión. Dé formato Texto a la columna antes de escribir o pegar los números, o empiece las entradas con un apóstrofo, y vuelva a introducir los números escritos antes.

¿Un número E.164 válido es también un número alcanzable?

No. Un número puede estar bien formateado pero sin asignar, desconectado o portado. La validación del formato comprueba la forma y la longitud para un país. Para saber si un número está activo y en qué red, use una consulta HLR o de numeración antes de un envío grande.

Fuentes

  1. Recommendation ITU-T E.164: The international public telecommunication numbering plan
  2. Dialling procedures (international prefix, national (trunk) prefix and national (significant) number), ITU Operational Bulletin No. 994, 15.XII.2011
  3. WhatsApp user phone number formats — WhatsApp Business Platform, Meta for Developers
  4. Keeping leading zeros and large numbers — Microsoft Support
  5. libphonenumber — Google, open-source library on GitHub