Ir al contenido

Limitaciones de WhatsApp

El motor se probó a mano con números reales, en iOS y en Android, entre el 17 y el 23 de octubre de 2026. Algunas cosas no salieron como se esperaba por cómo funciona WhatsApp con un dispositivo vinculado, no por el motor. Esta página las junta para que no prometas a tus usuarios algo que WhatsApp no entrega.

Limitación De quién Estado Qué hacer
Listas en iOS WhatsApp No se puede en el motor Respaldo de texto o botones
Ubicación en tiempo real WhatsApp Parcial Usa termina_en como fin previsto
Actualizaciones en vivo de canales WhatsApp Parcial Consulta los contadores
Info propia cambiada desde el teléfono Probablemente WhatsApp Abierta Consulta el perfil con actualizar
Pagos PIX WhatsApp No se puede fuera de Brasil No lo uses fuera de Brasil
Presencia WhatsApp Parcial Ponte «en línea» antes
Silencio de un canal desde el teléfono WhatsApp Parcial Vuelve a leer el canal
Etiquetas en números normales WhatsApp Parcial No dependas del color
Vincular un grupo a una comunidad WhatsApp Parcial Reintenta más tarde
Historial bajo pedido WhatsApp y motor Parcial Importa al vincular
Mensajes que el motor no reconoce Motor, por diseño Así funciona Muéstralos como no compatibles

Caso A77 (falla F25). La lista nativa llega a iOS pero no se dibuja: si la manda una cuenta normal, el contacto ve «versión no compatible»; si la manda una Business, no aparece nada, aunque el motor recibe el recibo entregado. En iOS sí se ven los botones, el carrusel y las encuestas. En Android la lista se ve y se abre con «Ver opciones», y la fila elegida llega correlacionada como interactive.response (caso A80, corregido en la ronda 7 y repetido el 21/10).

  • De quién: WhatsApp. Meta solo garantiza los interactivos por su API oficial.
  • Estado: no se puede resolver en el motor (cerrado como limitación el 20/10).
  • Qué hacer: enciende respaldo_texto en la lista. Después de la lista, el motor manda al mismo chat un texto con las opciones numeradas; si el contacto contesta solo con un número en las 24 horas siguientes, llega un interactive.response con via: texto y su fila. Con respaldo pasó en iOS el 21/10. Con tres opciones o menos, usa buttons con reply.

Casos A74 y A82. El mensaje de pago PIX sale (enviado, aceptado y con recibos) y llega a la sesión del destino, pero ningún teléfono lo dibuja, ni iOS ni Android. Si lo recibe otra instancia del motor, llega como no_soportado (interactiveMessage). El motor nunca infiere un pago ni un toque: el seguimiento queda en no_observable.

  • De quién: WhatsApp; se espera que solo se vea en Brasil.
  • Estado: no se puede probar fuera de Brasil. Las otras acciones del mismo mensaje (copiar, enlace y llamar) pasan (19/10).
  • Qué hacer: no lo uses fuera de Brasil.

Caso A23. De una ubicación en tiempo real, el dispositivo vinculado solo recibe el primer mensaje (ubicacion_en_vivo). No llegan las actualizaciones ni el fin: WhatsApp Web muestra «no disponible en este dispositivo».

  • De quién: WhatsApp.
  • Estado: parcial (21/10). El motor trae duracion_seg y termina_en, y si llegara una actualización con el mismo ID, saldría como message.updated con operacion: ubicacion_actualizada.
  • Qué hacer: toma termina_en como el fin previsto. El motor no inventa un evento de fin.

Caso A32. Llegan escribiendo, grabando y pausado, pero no el «en línea» real ni la última vez. Sin poner antes la instancia «en línea», no llega nada.

  • De quién: WhatsApp, para dispositivos vinculados.
  • Estado: parcial.
  • Qué hacer: llama a POST /v1/instances/{id}/presence (en línea) antes de suscribirte a la presencia de un contacto.

Caso A66. «Recibir en vivo» abre una ventana durante la que deberían llegar las reacciones y las vistas de las publicaciones. En las pruebas, no llegó ningún newsletter.updates en esa ventana, aunque hubo reacciones y vistas (probado durante 4 minutos, renovando la ventana). Los contadores solo se ven al consultarlos, y las vistas pueden salir en 0.

  • De quién: WhatsApp no los empuja a un dispositivo vinculado.
  • Estado: parcial (21/10, repetido después).
  • Qué hacer: consulta los contadores con POST /v1/instances/{id}/newsletters/{canal_ref}/updates (con despues_de) o al listar los mensajes del canal con actualizar=true. La consulta deja un newsletter.updates con desde: consulta en el ledger.

Caso A64. Silenciar o quitar el silencio de un canal desde el teléfono no produce ningún evento. Dejar el canal y volver a seguirlo sí (newsletter.left y newsletter.joined), y al volver el silencio aparece reflejado. Desde el motor todo funciona.

  • De quién: WhatsApp.
  • Estado: parcial (22/10).
  • Qué hacer: vuelve a leer el estado del canal cuando lo necesites.

Caso A63. Vincular un grupo a una comunidad respondió que WhatsApp lo estaba limitando, y el teléfono tampoco lo dejaba («vuelve en un par de horas»). La mudanza completa no se pudo probar.

  • De quién: WhatsApp.
  • Estado: parcial (17/10).
  • Qué hacer: reintenta más tarde.

Falla F34 (caso A45). Si la Info (el recado) de la cuenta vinculada se cambia desde el teléfono, la instancia no recibe profile.updated. Las otras instancias que tienen ese número como contacto sí reciben contact.about, y un cambio de nombre sí produce profile.updated.

  • De quién: probablemente WhatsApp (provisional, sin confirmar en el SDK). Solo se observó en iOS.
  • Estado: abierta, de gravedad baja (22/10).
  • Qué hacer: consulta el perfil con GET /v1/instances/{id}/profile?actualizar=true cuando necesites el valor vigente.

Caso A39. En un número normal, las etiquetas son las «Listas» del teléfono: no muestran el color ni los mensajes etiquetados, así que eso no se puede verificar. El cliente Business probado (2.26) solo deja etiquetar chats, no mensajes.

  • De quién: WhatsApp.
  • Estado: parcial.
  • Qué hacer: no dependas del color ni de etiquetas en mensajes en números normales.

Caso A54 (fallas F11 y ronda R12). Al pedir mensajes anteriores de un chat:

  • WhatsApp no contesta (solo calla) el pedido de un chat que nació después de vincular. Con la frontera del historial inicial completa, el motor ya no espera: termina al instante con fuera_del_historial (un chat de fuera del historial) o con sin_mas_historial (WhatsApp marcó que no queda más). Las dos salidas pasaron el 23/10.
  • solo_en_el_telefono (chats que WhatsApp marca como «quedan mensajes en el teléfono») todavía no se vio en real.
  • Algunos chats antiguos tampoco obtuvieron respuesta del teléfono (sin_respuesta); puede influir que el teléfono esté en reposo.

En resumen:

  • De quién: WhatsApp, con una parte del motor por validar.
  • Estado: parcial (23/10).
  • Qué hacer: si necesitas el historial, vincula con la importación encendida y con el teléfono desbloqueado y en línea.

La importación inicial tiene un tope configurable (historial_mensajes, 5000 mensajes de fábrica, con un límite de días): en una prueba se vieron más de 30 000 mensajes y se importaron 5000; el resto quedó fuera por la cuota. Si necesitas más, sube el tope en Ajustes o en la instancia antes de vincular. Los pedidos bajo demanda son de hasta 50 mensajes por tanda.

Lo que el motor no reconoce no se pierde ni se inventa: llega como message.received con contenido.tipo: "no_soportado" y el tipo del proveedor en contenido.no_soportado. Se vio con el pago PIX (interactiveMessage). Dos tipos que llegaban así se corrigieron durante las pruebas: la edición hecha desde un iPhone y el estado publicado en un grupo.

Muéstralos como «mensaje no compatible» y guarda el tipo: sirve para pedir que el motor lo soporte.

  • Confirmaciones de lectura: si el remitente las tiene apagadas, no recibe el leido de los demás (20/10).
  • Mensajes temporales: el temporizador por defecto cambiado en el teléfono sí llega desde la ronda 10 del 21/10, como privacy.changed con temporizador_por_defecto_seg (caso A47). Antes de esa corrección no llegaba.
  • Estados: borrar un estado propio no es posible por la API.
  • Chats fijados: el tope es de 3; el cuarto da 409.
  • Foto de perfil: el motor la normaliza a 640 × 640, la única medida que acepta WhatsApp.

Al cierre de las pruebas manuales (23/10/2026), de 109 casos: 80 pasan, 20 son parciales, 5 no se ejecutaron y 4 no se pueden hacer. De los 20 parciales, 9 son por un límite de WhatsApp (los de esta página), 9 necesitan algo que no había en el entorno de prueba (una cuenta de AWS, un broker gestionado, cuentas Business con productos, un proxy) y 2 son del motor y siguen abiertos (el historial bajo pedido y la conciliación de un estado ambiguo con la red cortada). De las 34 fallas registradas, 30 están resueltas, 3 son parciales y 1 sigue abierta (la Info propia).