← Blog

·

WhatsApp o SMS para códigos y avisos: entrega, costo y conversión

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

CriterioWhatsApp (API oficial)SMS
AlcanceSolo quien tiene cuenta de WhatsAppCualquier celular con línea activa
Requiere internetSíNo
Estado de entregasent, delivered, read, failed por webhookReporte de entrega del operador, cuando existe
Confirmación de lecturaSí, cuando está disponibleNo
FormatoTexto, multimedia, botones, listasTexto corto, dividido en segmentos
Identificación del remitenteNombre visible aprobado por MetaCódigo corto o número largo, según el operador
PrecioTabla oficial de Meta por categoría y paísVaría por proveedor y operador
Iniciar contactoPlantilla aprobadaTexto libre (sujeto a las reglas del proveedor)
Fraude típicoAbuso 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

WhatsApp

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íaUso típicoTarifa de Meta
AutenticaciónCódigo de verificación, inicio de sesiónR$ 0,0350
UtilidadPedido, envío, recordatorio de cita, facturaR$ 0,0350
MarketingOferta, novedadR$ 0,3217

Algunos puntos prácticos:

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:

  1. El usuario ingresa su número.
  2. Tu sistema envía la plantilla de autenticación por WhatsApp y guarda el ID del mensaje (wamid).
  3. Si el webhook trae delivered en pocos segundos, espera el código.
  4. Si trae failed (por ejemplo, 131026) o no llega nada a tiempo, envía el mismo código por SMS.
  5. 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.