Actualizado el 29/10/2026
Para códigos de verificación y avisos en mercados donde WhatsApp es dominante, como Brasil y gran parte de América Latina, WhatsApp suele ser la primera opción y el SMS, el plan B. WhatsApp entrega mensajes con botones, informa cuándo el mensaje fue entregado y leído, y tiene tarifas oficiales publicadas por Meta. El SMS llega a cualquier celular, incluso a quien no tiene WhatsApp. La estrategia que mejor funciona es combinada: intenta por WhatsApp y, si no se entrega en unos segundos, envía un SMS.
Este artículo compara los dos canales en alcance, funciones, costo y seguridad, y muestra cómo armar el respaldo con código.
Comparación rápida
| Criterio | WhatsApp (API oficial) | SMS |
|---|---|---|
| Alcance | Solo quien tiene cuenta de WhatsApp | Cualquier celular con línea activa |
| Requiere internet | Sí | No |
| Estado de entrega | sent, delivered, read, failed por webhook | Reporte de entrega del operador, cuando existe |
| Confirmación de lectura | Sí, cuando está disponible | No |
| Formato | Texto, multimedia, botones, listas | Texto corto, dividido en segmentos |
| Identificación del remitente | Nombre visible aprobado por Meta | Código corto o número largo, según el operador |
| Precio | Tabla oficial de Meta por categoría y país | Varía por proveedor y operador |
| Iniciar contacto | Plantilla aprobada | Texto libre (sujeto a las reglas del proveedor) |
| Fraude típico | Abuso del formulario (solicitudes masivas) | SMS pumping |
Alcance: quién recibe cada canal
El SMS llega a cualquier celular con línea activa y señal, sin depender de una app ni de datos móviles. Esa ventaja no la supera ninguna app.
WhatsApp solo entrega a números con cuenta activa de WhatsApp. Si el número no tiene WhatsApp, la API acepta la llamada, pero el webhook de estado devuelve failed, normalmente con el código 131026, que Meta describe como «Unable to deliver message». La explicación completa está en error 131026 en la API de WhatsApp.
Por eso, para el OTP de registro, que debe funcionar para el 100% de los usuarios, el SMS sigue siendo importante como respaldo.
¿Quieres probar mientras lees? Crea tu cuenta en Vectalk y envía el primer mensaje por la API oficial. Crear cuenta gratis →
Funciones: lo que WhatsApp hace y el SMS no
Plantillas de autenticación
Meta tiene una categoría de plantilla propia para códigos de verificación. Según la documentación, esta plantilla tiene un texto fijo definido por Meta y un único botón, que puede ser:
- copiar código: el usuario toca y el código pasa al portapapeles;
- autocompletar con un toque (one-tap): en Android, el botón abre tu app y le entrega el código;
- zero-tap: solo en Android, sin botón; tu app recibe el código automáticamente.
La plantilla puede incluir un aviso de seguridad («no compartas este código») y un aviso de vencimiento de 1 a 90 minutos. Meta además envía los códigos de autenticación solo al dispositivo principal del usuario, no a los dispositivos vinculados. El paso a paso está en código de verificación (OTP) por WhatsApp con plantilla de autenticación.
Envío de un código con botón de copiar:
{
"messaging_product": "whatsapp",
"to": "5215512345678",
"type": "template",
"template": {
"name": "codigo_verificacion",
"language": { "code": "es_MX" },
"components": [
{
"type": "body",
"parameters": [{ "type": "text", "text": "482913" }]
},
{
"type": "button",
"sub_type": "url",
"index": "0",
"parameters": [{ "type": "text", "text": "482913" }]
}
]
}
}
Avisos con acción
Para notificaciones (pedido enviado, cita mañana, factura disponible), WhatsApp admite imagen o documento en el encabezado y botones de respuesta o de enlace. El cliente confirma la cita con un toque y la respuesta llega a tu webhook. Con SMS, la misma acción depende de que el cliente abra un enlace o responda con texto.
Estado de entrega y lectura
Cada mensaje enviado por la API genera eventos en el webhook. Así puedes medir entrega y lectura por plantilla, y activar el respaldo cuando no hay entrega. Consulta estados de mensaje por webhook.
Costo
Meta cobra por mensaje entregado, con tarifa según la categoría y el país. Como ejemplo, para destinatarios en Brasil desde el 1/10/2026, en reales brasileños (R$):
| Categoría | Uso típico | Tarifa de Meta |
|---|---|---|
| Autenticación | Código de verificación, inicio de sesión | R$ 0,0350 |
| Utilidad | Pedido, envío, recordatorio de cita, factura | R$ 0,0350 |
| Marketing | Oferta, novedad | R$ 0,3217 |
Algunos puntos prácticos:
- el mensaje que no se entrega no se cobra, lo que incluye números sin WhatsApp;
- desde el 1/10/2026, las plantillas de utilidad enviadas dentro de la ventana de atención también se cobran;
- en algunos países, Meta aplica una tarifa de autenticación internacional, más alta que la local;
- utilidad y autenticación tienen descuentos por volumen; mira cómo funcionan los tramos.
Los detalles de cobro en Brasil están en precio de la API de WhatsApp en Brasil.
SMS
El precio del SMS depende del proveedor, el volumen, el tipo de ruta y el operador de destino. No existe una tabla pública única como la de Meta. Para comparar, pide a cada proveedor el precio por segmento entregado en tus países de destino y pregunta si cobra por envío o por entrega.
Recuerda que un SMS largo se divide en segmentos: la codificación GSM-7 admite 160 caracteres por mensaje simple; con caracteres acentuados que no están en ese alfabeto o con emojis, el texto pasa a Unicode y el límite baja a 70 caracteres. Un aviso en español con tildes puede convertirse en dos o tres segmentos cobrados.
Fraude: SMS pumping
El SMS pumping (también llamado tráfico artificialmente inflado) es un fraude en el que bots usan tu formulario de registro o inicio de sesión para pedir códigos a rangos de números controlados por quien gana con la terminación de los mensajes. Pagas cada SMS y ninguna persona real lo recibe. Twilio, por ejemplo, documenta este ataque y ofrece herramientas propias para bloquearlo.
En WhatsApp, el mensaje no pasa por el cobro de terminación de los operadores y solo se cobra cuando se entrega a una cuenta de WhatsApp, lo que quita el incentivo económico de este tipo de fraude. Eso no elimina el abuso: los bots aún pueden pedir códigos en masa para números válidos. Las defensas valen para ambos canales:
- límite de solicitudes por número, por IP y por dispositivo;
- CAPTCHA o verificación invisible antes de enviar el código;
- bloqueo de prefijos de países donde no operas;
- alerta cuando la tasa de conversión del código (solicitudes vs. validaciones) cae de golpe.
Estrategia combinada: WhatsApp primero, SMS de respaldo
El flujo más común para OTP:
- El usuario ingresa su número.
- Tu sistema envía la plantilla de autenticación por WhatsApp y guarda el ID del mensaje (
wamid). - Si el webhook trae
delivereden pocos segundos, espera el código. - Si trae
failed(por ejemplo,131026) o no llega nada a tiempo, envía el mismo código por SMS. - Muestra en pantalla por qué canal se envió y ofrece «reenviar por SMS».
Ejemplo en Node.js:
const VECTALK = 'https://apis.vectalk.com.br/api/messages';
const PLAZO_MS = 8000;
async function enviarOtp(numero, codigo, { esperarEstado, enviarSms }) {
const r = await fetch(VECTALK, {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.VECTALK_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
messaging_product: 'whatsapp',
to: numero,
type: 'template',
template: {
name: 'codigo_verificacion',
language: { code: 'es_MX' },
components: [
{ type: 'body', parameters: [{ type: 'text', text: codigo }] },
{ type: 'button', sub_type: 'url', index: '0', parameters: [{ type: 'text', text: codigo }] },
],
},
}),
});
if (r.ok) {
const { messages } = await r.json();
// esperarEstado se resuelve cuando el webhook trae delivered/failed para ese wamid
const estado = await esperarEstado(messages[0].id, PLAZO_MS);
if (estado === 'delivered' || estado === 'read') return 'whatsapp';
}
await enviarSms(numero, `Tu código: ${codigo}`);
return 'sms';
}
La función esperarEstado lee los eventos que guarda tu webhook (por ejemplo, en una cola o en Redis) y devuelve el primer estado del wamid dentro del plazo. Ajusta el plazo midiendo el tiempo real hasta delivered en tus usuarios.
Para avisos que no son urgentes, como el recordatorio de una cita de mañana, el plazo puede ser de minutos, y el SMS sale solo para quien no recibió el WhatsApp.
¿Y el RCS?
El RCS es la evolución del SMS, con funciones parecidas a las de WhatsApp dentro de la app de mensajes del celular. Tiene disponibilidad y reglas propias. La comparación está en RCS vs. WhatsApp.
Cómo hacerlo con Vectalk
Vectalk es un proxy de la WhatsApp Cloud API oficial. Creas la plantilla de autenticación o de utilidad en el panel (hay una Biblioteca de Modelos para partir de ejemplos), la envías por POST https://apis.vectalk.com.br/api/messages con el payload de Meta y recibes los estados en tu webhook, en el formato de la documentación de Meta. El cobro es con saldo prepago: cada mensaje entregado se descuenta del saldo y no registras tarjeta en Meta.
Vectalk no envía SMS. El respaldo por SMS queda con el proveedor de SMS que ya usas, activado por tu sistema cuando no llega el estado de WhatsApp. Consulta la guía de la API oficial de WhatsApp, la documentación o crea tu cuenta.
Preguntas frecuentes
WhatsApp o SMS: ¿cuál es más barato?
Depende del proveedor de SMS y del largo del mensaje. En WhatsApp, la tarifa de Meta para autenticación y utilidad en Brasil es de R$ 0,0350 por mensaje entregado desde el 1/10/2026; para otros países rige la tabla de Meta. Compárala con el precio por segmento entregado de tu proveedor de SMS.
¿WhatsApp cobra cuando el número no tiene WhatsApp?
No. Meta solo cobra mensajes entregados. Si el número no tiene WhatsApp, el estado vuelve como failed, sin cobro de Meta.
¿Puedo enviar un código de verificación en una plantilla de utilidad?
No. Los códigos de verificación tienen su propia categoría, autenticación, con texto fijo definido por Meta. Usar otra categoría para OTP lleva al rechazo o a la reclasificación de la plantilla.
¿Cuánto esperar antes de enviar el SMS?
No hay un número oficial. Mide el tiempo hasta delivered en tus usuarios y elige un plazo que cubra a la mayoría, ofreciendo siempre el botón «reenviar por SMS».
¿WhatsApp acaba con el SMS pumping?
Quita el incentivo económico de ese fraude, porque el mensaje no genera ingresos de terminación para los operadores. Pero los bots aún pueden abusar de tu formulario, así que mantén límites por número y por IP.
Fuentes oficiales consultadas el 29/10/2026: plantillas de autenticación, códigos de error de la Cloud API, precios de la Cloud API, Twilio: protección contra SMS pumping, documentación de Vectalk.
Pon a funcionar el WhatsApp oficial de tu empresa
Crea tu cuenta, conecta tu número a la API oficial (puedes mantener la app con coexistencia) y empieza a atender y enviar mensajes.
