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.
Resumen
Sección titulada «Resumen»| Limitación | De quién | Estado | Qué hacer |
|---|---|---|---|
| Listas en iOS | No se puede en el motor | Respaldo de texto o botones | |
| Ubicación en tiempo real | Parcial | Usa termina_en como fin previsto |
|
| Actualizaciones en vivo de canales | Parcial | Consulta los contadores | |
| Info propia cambiada desde el teléfono | Probablemente WhatsApp | Abierta | Consulta el perfil con actualizar |
| Pagos PIX | No se puede fuera de Brasil | No lo uses fuera de Brasil | |
| Presencia | Parcial | Ponte «en línea» antes | |
| Silencio de un canal desde el teléfono | Parcial | Vuelve a leer el canal | |
| Etiquetas en números normales | Parcial | No dependas del color | |
| Vincular un grupo a una comunidad | 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 |
Interactivos
Sección titulada «Interactivos»Listas en iOS
Sección titulada «Listas en iOS»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_textoen 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 uninteractive.responseconvia: textoy su fila. Con respaldo pasó en iOS el 21/10. Con tres opciones o menos, usabuttonsconreply.
Pagos PIX
Sección titulada «Pagos PIX»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.
Ubicación y presencia
Sección titulada «Ubicación y presencia»Ubicación en tiempo real
Sección titulada «Ubicación en tiempo real»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_segytermina_en, y si llegara una actualización con el mismo ID, saldría comomessage.updatedconoperacion: ubicacion_actualizada. - Qué hacer: toma
termina_encomo el fin previsto. El motor no inventa un evento de fin.
Presencia
Sección titulada «Presencia»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.
Canales y comunidades
Sección titulada «Canales y comunidades»Actualizaciones en vivo de canales
Sección titulada «Actualizaciones en vivo de canales»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(condespues_de) o al listar los mensajes del canal conactualizar=true. La consulta deja unnewsletter.updatescondesde: consultaen el ledger.
Silencio de un canal desde el teléfono
Sección titulada «Silencio de un canal desde el teléfono»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.
Vincular un grupo a una comunidad
Sección titulada «Vincular un grupo a una comunidad»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.
Perfil y etiquetas
Sección titulada «Perfil y etiquetas»Info propia cambiada desde el teléfono
Sección titulada «Info propia cambiada desde el teléfono»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=truecuando necesites el valor vigente.
Etiquetas en números normales
Sección titulada «Etiquetas en números normales»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.
Historial
Sección titulada «Historial»Historial bajo pedido
Sección titulada «Historial bajo pedido»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 consin_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.
Mensajes que el motor no reconoce
Sección titulada «Mensajes que el motor no reconoce»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.
Otros límites observados
Sección titulada «Otros límites observados»- Confirmaciones de lectura: si el remitente las tiene apagadas, no recibe el
leidode 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.changedcontemporizador_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.
El balance de las pruebas
Sección titulada «El balance de las pruebas»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).