Volver al blog

Tipos de Mensaje del WhatsApp Cloud API: Guía Técnica Completa 2026

12 min de lectura
Conversación de WhatsApp mostrando los distintos tipos de mensaje del Cloud API: video, ubicación, nota de voz, texto, imagen y documento PDF

Cuando integras WhatsApp Cloud API por primera vez, aparece una confusión que cuesta dinero y tiempo: se habla de “tipos de mensaje” para referirse a dos cosas completamente distintas.

Por un lado están los tipos técnicostext, image, interactive, template — que determinan qué ve el cliente en su teléfono. Por otro están las categorías de facturación — Marketing, Utilidad, Autenticación, Servicio — que determinan cuánto te cobra Meta.

Son ejes independientes. Un mensaje de tipo template puede pertenecer a cualquiera de las cuatro categorías. Un mensaje de tipo text no tiene categoría en absoluto, porque solo puede enviarse dentro de la ventana de 24 horas.

Esta guía cubre los dos ejes, con los límites reales de cada formato, los códigos de error que verás en producción y las trampas que no aparecen en la documentación oficial.

Eje 1: Los tipos técnicos de mensaje

El campo type del JSON define el formato. Estos son los tipos que puedes enviar a través del endpoint de mensajes.

Mensajes de texto

El más simple y el más usado. Admite hasta 4.096 caracteres.

Tiene un parámetro que mucha gente ignora: preview_url. Si lo activas y el texto contiene un enlace, WhatsApp renderiza la tarjeta de vista previa con el título e imagen del sitio. Si lo dejas apagado, el enlace aparece como texto plano. Para mensajes de venta con un link a tu catálogo, la diferencia en clics es notable.

Mensajes multimedia

Aquí es donde aparecen las primeras sorpresas. Cada formato tiene restricciones estrictas y Meta las rechaza sin ambigüedad:

TipoFormatos aceptadosLímite de tamaño
imageSolo JPEG y PNG5 MB
audioAAC, AMR, MP3, M4A, OGG (solo códec Opus)16 MB
videoMP4, 3GP (solo H.264 con audio AAC)16 MB
documentPDF, Office, texto plano y otros100 MB
stickerWebP: 100 KB estático, 500 KB animado

La restricción que más problemas causa es la primera: WebP no es un formato válido para image. Es contraintuitivo porque WebP sí es el formato obligatorio para sticker. Si tu sistema guarda imágenes optimizadas en WebP —como hace prácticamente cualquier stack moderno— y las envías directo al API, recibes el error 131053 y el mensaje nunca llega. La solución es transcodificar a JPEG o PNG antes de enviar.

Lo mismo pasa con el audio: un .ogg con códec Vorbis en lugar de Opus es rechazado, aunque la extensión del archivo sea correcta.

Tanto image, video como document admiten caption — un texto que aparece bajo el archivo. Los documentos además aceptan filename, que controla el nombre que ve el cliente al descargar. Sin él, WhatsApp muestra un identificador ilegible.

Ubicación y contactos

location envía coordenadas con nombre y dirección opcionales. Es lo correcto para compartir la dirección de tu tienda: el cliente toca el mensaje y se le abre su app de mapas.

contacts envía una vCard estructurada — nombre, teléfonos, correos, organización. Útil para pasarle al cliente el contacto directo de un vendedor sin que tenga que copiar números a mano.

Reacciones

El tipo reaction aplica un emoji sobre un mensaje existente, referenciado por su message_id. Enviar el mismo tipo con el emoji vacío elimina la reacción.

Es una herramienta de acuse de recibo sorprendentemente eficiente: confirmar con un 👍 que recibiste un pedido consume mucha menos atención del cliente que un mensaje de texto, y no ocupa espacio en la conversación.

Mensajes interactivos

El tipo interactive es el que convierte una conversación en una interfaz. Tiene varios subtipos:

button — Hasta 3 botones de respuesta rápida. El límite de tres es duro; no hay forma de ampliarlo. Ideal para confirmaciones y bifurcaciones simples (“Confirmar pedido” / “Modificar” / “Cancelar”).

list — Un menú desplegable con secciones y hasta 10 filas por sección. Cada fila tiene título y descripción opcional. Es la opción correcta cuando tienes más de tres alternativas: un catálogo de servicios, horarios disponibles, sucursales.

cta_url — Un botón que abre una URL. Su ventaja sobre poner el link en el texto es doble: se ve como un botón real y el enlace no queda expuesto como cadena larga en el cuerpo del mensaje.

flow — WhatsApp Flows: un formulario nativo que se abre dentro del chat. El cliente completa varios campos sin salir de WhatsApp y recibes la respuesta estructurada. Es lo más cercano a una mini-aplicación dentro de la conversación.

location_request_message — Muestra un botón que pide la ubicación del cliente. Imprescindible para delivery: en vez de pedirle que escriba su dirección, la comparte con un toque.

product y product_list — Envían artículos de tu catálogo de Meta Commerce.

address_message — Formulario de dirección estructurado, disponible únicamente en India y Singapur.

Plantillas

El tipo template merece su lugar aparte porque tiene una propiedad que ningún otro tipo tiene: es el único que puede enviarse fuera de la ventana de 24 horas.

Una plantilla se compone de encabezado (texto, imagen, video, documento o ubicación), cuerpo, pie de página y botones. Debe crearse y ser aprobada por Meta antes de usarse. Cubrimos el proceso completo de creación y aprobación en la guía de WhatsApp Templates.

Los tipos que solo puedes recibir

Estos nunca los envías. Llegan por webhook cuando el cliente actúa, y si tu integración no los contempla, pierdes información real.

button — El cliente tocó un botón de respuesta rápida de una plantilla. La etiqueta que pulsó viene en button.text. Si tu código solo lee text.body, este mensaje llega vacío.

interactive con subtipos de respuesta:

  • button_reply — respuesta a botones interactivos, con id y title
  • list_reply — fila seleccionada del menú, con id, title y description
  • nfm_reply — respuesta de un Flow, que llega como un JSON con todos los campos del formulario

order — El cliente envió un carrito desde tu catálogo. Incluye los productos, cantidades y precios.

system — Eventos de la plataforma, como que el contacto cambió de número de teléfono. El cuerpo viene en system.body.

unsupported y unknown — Y aquí está la trampa más importante de todo el webhook.

Cuando Meta clasifica un mensaje como no soportado —encuestas, ciertos códigos OTP generados por otras apps, formatos nuevos que el API todavía no expone— no envía el contenido. Solo llega un array errors con la razón. No hay campo de texto que rescatar.

Esto obliga a una decisión de diseño: puedes mostrar un genérico “[Mensaje no soportado]”, o puedes surfacear la razón concreta que da Meta. La segunda opción es la correcta, porque el agente que atiende sabe que ahí hubo algo y puede pedirle al cliente que lo reenvíe de otra forma. Fingir que el mensaje no existió es cómo se pierde una venta sin enterarse.

Los estados de entrega

Los estados no son mensajes: llegan en un array statuses separado dentro del mismo webhook. Son cuatro:

  • sent — Meta aceptó el mensaje
  • delivered — llegó al teléfono del cliente
  • read — el cliente lo abrió
  • failed — falló, con un código de error asociado

Hay una consecuencia operativa que se subestima constantemente: una respuesta 2xx al enviar no significa que el mensaje se entregó. Significa que Meta lo aceptó en su cola. El fallo real puede llegar segundos o minutos después, de forma asíncrona, por webhook.

Cualquier contador de “enviados” que se calcule en el momento del envío va a mentir. Si mandas una campaña de 174 mensajes y todos devuelven 2xx, tu panel dirá 174 enviados — y los webhooks de failed que llegan después pueden decir otra cosa completamente distinta. Los reportes de campañas masivas tienen que leer el estado final, no la respuesta del envío.

Eje 2: Las categorías de facturación

Este es el segundo eje, y solo aplica a las plantillas. La categoría se declara al crear la plantilla y Meta la audita — si mandas una promoción etiquetada como Utilidad, te la reclasifica.

CategoríaQué incluyeCosto
MarketingPromociones, ofertas, lanzamientos, newslettersEl más alto
UtilidadConfirmación de pedido, seguimiento de envío, recordatorio de cita, aviso de cuentaIntermedio
AutenticaciónCódigos OTP, verificación de cuentaBajo, con tarifa aparte para envíos internacionales
ServicioTus respuestas dentro de la ventana de 24 horasSin costo

Los precios exactos varían por país. Tienes el desglose por mercado en la guía completa de WhatsApp Business API.

La ventana de 24 horas

Aquí está la regla que gobierna todo el modelo:

La ventana de 24 horas la abre el cliente, no tú. Cuando un cliente te escribe, se abre una ventana de servicio de 24 horas. Mientras esté abierta, puedes responder con cualquier tipo de mensaje —texto, imágenes, botones, listas— sin costo por mensaje y sin necesidad de plantilla.

Cuando la ventana se cierra, solo puedes enviar plantillas aprobadas. Si intentas enviar un text fuera de ventana, recibes el error 131047 y el mensaje no sale.

Tres matices que cambian los números:

  1. Una plantilla de Utilidad enviada dentro de una ventana ya abierta no genera cargo. Si el cliente te escribió hace dos horas y le mandas la confirmación de su pedido, esa plantilla no se cobra.
  2. Puntos de entrada gratuitos. Si el cliente llega desde un anuncio Click-to-WhatsApp o desde el botón de tu página de Facebook, la ventana es de 72 horas y la conversación no genera cargo.
  3. Cada mensaje de plantilla se factura de forma individual, no por conversación.

Por qué “antes funcionaba” y ahora no

Esta es la situación más común en soporte, y ahora tienes las dos piezas para entenderla.

Un negocio lleva meses respondiendo mensajes sin ningún problema. Un día lanza su primera campaña con plantilla y todos los envíos fallan con un error de facturación como el 131042.

Lo que pasó no es que algo se rompiera. Mientras solo respondían dentro de la ventana de 24 horas, estaban usando mensajes de categoría Servicio, que no tocan el sistema de cobro de Meta en absoluto. La cuenta podía llevar meses sin moneda ni método de pago configurados y nadie lo notaba.

La campaña con plantilla fue la primera operación facturable de esa cuenta. El tipo técnico de mensaje no cambió nada; el eje de facturación sí. Por eso el diagnóstico correcto ante un fallo masivo de campaña casi nunca está en el contenido del mensaje: está en la configuración de pago de la cuenta de WhatsApp Business.

Códigos de error que vas a ver

Los que aparecen con más frecuencia en producción:

CódigoSignificadoSolución
131047Fuera de la ventana de 24 hUsa una plantilla aprobada
131053Formato de medio no soportadoTranscodifica (típicamente WebP a JPEG)
131042Problema de facturación de la cuentaConfigura moneda y método de pago
131026Mensaje no entregableEl número no tiene WhatsApp o no acepta mensajes
131009Valor de parámetro inválidoFormato de número incorrecto
133010Número no registradoEjecuta el registro del número en el API
132000Número de parámetros no coincideLos valores no cuadran con las variables de la plantilla
132001La plantilla no existeNombre o idioma incorrectos

Cómo gestiona CRMWhata todos estos tipos

Trabajar con el API en crudo significa mantener el mapeo completo de tipos, las restricciones de formato, la lógica de la ventana de 24 horas y el manejo asíncrono de estados.

CRMWhata absorbe esa capa. Los mensajes entrantes se normalizan sin importar su tipo: la respuesta de un botón, la fila de una lista, un carrito del catálogo o el envío de un Flow llegan a la bandeja como contenido legible, no como JSON. Los tipos que Meta marca como no soportados se muestran con su razón concreta en vez de desaparecer.

En la salida, las imágenes se transcodifican al formato que Meta acepta antes de enviarse, y el estado de cada mensaje se actualiza en tiempo real conforme llegan los webhooks — incluyendo los fallos que aparecen después de un envío aparentemente exitoso.

Si todavía no has hecho la transición al API oficial, la guía de migración a Cloud API cubre las tres rutas posibles, y la opción de coexistencia te permite mantener la app de WhatsApp Business en el teléfono mientras usas el API.

Preguntas frecuentes

¿Puedo enviar un WebP como imagen? No. WebP solo es válido para stickers. Como imagen, Meta lo rechaza con el error 131053. Hay que convertirlo a JPEG o PNG.

¿Cuántos botones puede tener un mensaje interactivo? Tres como máximo para botones de respuesta rápida. Si necesitas más opciones, usa una lista, que admite hasta 10 filas por sección.

¿Los mensajes de audio del cliente llegan transcritos? El API entrega el archivo de audio, no texto. La transcripción la tiene que hacer tu plataforma.

¿Qué pasa si respondo justo después de que se cierra la ventana? El mensaje falla con 131047. Tienes que reabrir la conversación con una plantilla aprobada de la categoría que corresponda.

¿Un 2xx significa que el cliente recibió el mensaje? No. Significa que Meta aceptó el mensaje en su cola. La entrega real se confirma con el webhook de estado delivered.

¿Las plantillas de Utilidad siempre se cobran? No. Si se envían dentro de una ventana de servicio ya abierta por el cliente, no generan cargo.

Conclusión

Los dos ejes se resumen así: el tipo define qué ve el cliente, la categoría define qué pagas. Confundirlos es lo que produce campañas que fallan enteras sin causa aparente, imágenes que nunca llegan y contadores de envío que no cuadran con la realidad.

Con el mapa completo de tipos, sus límites reales de formato y la lógica de la ventana de 24 horas, la mayoría de los fallos del Cloud API dejan de ser misteriosos y pasan a ser diagnosticables en minutos.

¿Quieres usar todos estos tipos de mensaje sin escribir una línea de código? Prueba CRMWhata y conecta tu número de WhatsApp en minutos.