Un número.La app y la API, al mismo tiempo.
Coexistence es el modo oficial de Meta para ejecutar la app WhatsApp Business y la Cloud API en un mismo número a la vez. El equipo sigue atendiendo desde el teléfono, con los mismos chats y el mismo historial, mientras el software envía y recibe en esa misma línea.
La elección que existía, y ya no
Coexistence no es una API nueva. Es la eliminación de una bifurcación que impedía a casi cualquier negocio pequeño automatizar nada.
El equipo atiende desde el teléfono. Nada se puede automatizar, integrar ni medir.
Sin APIEl software alcanza el número. La app Business deja de funcionar en él y el equipo cambia de herramienta.
Sin appMeta conecta la Cloud API a un número que la app WhatsApp Business sigue usando. Ambas superficies quedan activas en la misma línea, y cada una ve lo que la otra envía.
Quién opera un número así
Dos grupos, que quieren cosas opuestas del mismo recurso, y por eso la conexión importa más que cualquier panel encima de ella.
Un equipo pequeño, un número impreso en una furgoneta o un escaparate, y noches respondiendo las mismas cuatro preguntas. No están reemplazando a nadie. Quieren que las confirmaciones, los recordatorios y la primera respuesta fuera de horario ocurran sin una persona, mientras el teléfono sigue sirviendo para todo lo demás.
Muchos clientes, cada uno con un número que nadie puede migrar ni tocar. Necesitan que esos números sean alcanzables por los sistemas que construyen, y añadir el siguiente sin una llamada comercial. Coexistence es la única vía oficial hacia un número que el personal del cliente sigue atendiendo a mano.
How a number ends up on both, and where the message events go
Four steps. The only one that touches the phone is a scan, and the one that decides your architecture is the first.
Have the endpoint ready before onboarding starts
Meta verifies a destination before it will deliver to it. It calls your URL with a GET carrying hub.mode=subscribe, your hub.verify_token and a hub.challenge, and your endpoint has to echo the raw challenge back.
The destination must be HTTPS, and a verify token is mandatory. We validate both before the call is made, so a malformed URL fails at our door rather than looking connected and delivering nothing.
Nothing is connected yet. This decides where messages will land. Provider in the pathStored on their serversTheir platformReceives and stores messagesYouA copy, on their scheduleEasyCoexistenceConfig onlyYour endpointNot yet verifiedUsWe set the route, we are not on itRun Meta's Embedded Signup and scan in the app
Meta's own popup opens. You pick the Business Portfolio, the WhatsApp Business Account and the number already registered in the WhatsApp Business app, then approve the connection on the phone by scanning a code.
This is also where you choose whether to share existing chat history. It is a one time onboarding decision and cannot be changed later. The Business app keeps working the moment the scan completes.
The second surface appears. The first one is not removed. After a migrationOne surfaceCloud API onlyBusiness app dead on this numberAfter CoexistenceTwo surfacesWhatsApp Business appSame chats and historyCloud APIOn the same linePoint the message events at your own system
Meta lets an app override where a given WhatsApp Business Account's webhooks are delivered. We set that override to your URL, which moves the two message path fields, messages and smb_message_echoes, straight from Meta to you.
We keep the operational fields, because those are what monitoring is made of: account_update, phone_number_quality_update, account_alerts, account_review_update, business_capability_update and phone_number_name_update. So the dashboard stays useful while conversation content never touches us.
Which events go where once the override is active. Operational eventsDelivered to usMessage pathDelivered to youmessagesEverything a customer sendssmb_message_echoesWhat the team sends from the appYour serverDirectly, never through usKeep it alive, and survive a reconnection
Meta disconnects a Coexistence number after roughly fourteen days without activity on the primary device. That disconnection is reconnectable, and we record it as its own state rather than treating it as a customer leaving.
The part that catches people is what a disconnection does to the route. Meta stores the destination as an override on our app's subscription to the account, so a PARTNER_REMOVED uninstalls the app and takes the override with it. Reconnecting restores sending and monitoring, but not your destination. We put it back automatically, because the first number that hit this rule reconnected fine and silently stopped delivering to the customer's server.
What a reconnection restores by itself, and what has to be put back. Restored by MetaAutomaticSendingThe Cloud API works againOperational eventsMonitoring resumesLost with the appHas to be reappliedYour webhook overrideUninstalled with the appMessage delivery to youSilently stopsWe reapply itOn every reconnection
Por qué se opera un número así
- Conservar el número que ya está impreso en furgonetas, recibos y la web, y el flujo de trabajo móvil a su alrededor.
- Añadir envío por API, procesamiento de webhooks y plantillas sin mover a nadie a una herramienta nueva.
- Mantener el tráfico de mensajes fuera de la bandeja compartida de un proveedor, para que las conversaciones no vivan en la plataforma de otra empresa.
- Dar a una agencia una forma de tener muchos números de clientes en una cuenta, cada uno conectado en el Business Portfolio del propio cliente.
Elegibilidad y límites prácticos
- El número debe estar ya activo en la app WhatsApp Business. Un número en WhatsApp normal hay que moverlo allí primero.
- Compartir el historial de chats es una decisión única del onboarding y no se puede cambiar después.
- Los chats de grupo quedan fuera de la API en números Coexistence, en cualquier proveedor.
- El dispositivo principal necesita actividad periódica. Meta desconecta tras unos catorce días sin ella.
- Las rutas de verificación y distintivo de Meta difieren para números Coexistence, y la disponibilidad regional cambia con su política.
Qué enrutamos hacia ti, y qué nos quedamos
Meta permite que una app sobrescriba dónde entrega sus webhooks una cuenta de WhatsApp Business. Apuntamos ese override a tu URL, lo que divide los eventos en dos.
messagesTodo lo que un cliente envía al númerosmb_message_echoesLo que tu equipo envía desde la app WhatsApp Business
account_updateEstado de la conexión: removida, offboarded, reconectada, restringidaphone_number_quality_updateCambios de calidad y throughputaccount_alertsAlertas que Meta levanta contra la cuentaaccount_review_updateResultados de una revisión de Metabusiness_capability_updateCambios de límite de mensajes y capacidadesphone_number_name_updateAprobaciones y rechazos del nombre visible
Si un número no tiene override configurado, sus eventos de mensaje caen en nuestro callback por defecto, donde el handler los descarta sin persistirlos. Eso está garantizado en código y no prometido en una política: no existe una ruta de almacenamiento que el contenido de las conversaciones pueda tomar.
La regla de los catorce días, y lo que rompe que nadie menciona
Meta desconecta una conexión Coexistence tras unos catorce días sin actividad en el dispositivo principal. Es reconectable, así que lo guardamos como estado propio en lugar de contarlo como un cliente que se fue.
La consecuencia cara viene después. El destino de tus mensajes no es un ajuste del número, es un override en la suscripción de nuestra app a la cuenta de WhatsApp Business. Una desconexión desinstala la app, y el override se va con ella. Reconectas, el envío vuelve, el monitoreo vuelve, y los mensajes dejan de llegar a tu servidor sin que nada reporte un error.
Nosotros reaplicamos el override en cada reconexión. Ese comportamiento existe porque ocurrió: un número topó con esta regla, reconectó limpio y dejó de entregar en silencio.
Un handshake que falla en ese momento, porque tu servidor estaba caído o el token cambió, queda registrado en la línea de tiempo de la conexión y el destino se conserva en vez de descartarse, así que guardarlo otra vez lo arregla.
Qué se rompe en silencio, y cómo lo detectamos
La app WhatsApp Business sigue funcionando en casi todos los fallos de abajo, y por eso nadie se entera. Estos son los que vigilamos, y cómo.
Detectado desde el webhook account_update de Meta, en concreto PARTNER_REMOVED, en lugar de inferirlo de un campo que pasa a falso. Deliberadamente no leemos is_on_biz_app para esto, porque es legítimamente falso en números que no son Coexistence y provocaba desconexiones falsas.
La regla de inactividad del dispositivo principal de Meta. Es reconectable, así que se registra como estado propio y no como un cliente que se fue, y reconectar restaura envío y monitoreo.
El destino vive como override en la suscripción de nuestra app a la cuenta, así que una desconexión lo desinstala. El envío vuelve al reconectar y la entrega a tu servidor no. Lo reaplicamos cada vez, porque a un número le pasó exactamente esto: reconectó limpio y dejó de entregar en silencio.
Guardamos el token del cliente y nuestro System User token contra la misma cuenta. Cuando uno es rechazado, el otro lee la cuenta y resuelve cuál de los dos se rompió, así que un token revocado deja de parecer un número perdido.
Consultada a Meta periódicamente. Una calificación RED marca la conexión como degradada, y calidad, tier de mensajería y nivel de throughput se guardan en cada comprobación, así que un declive es visible antes de costar un envío.
Conectar un número y vigilar un número son productos distintos. El segundo es la razón de que este exista.
Typical time to connect a number, scanning a code from the WhatsApp Business app.
How long a customer reply keeps the session open for free text replies.
Sending throughput for a Coexistence number, fixed by Meta and not raisable.
How much chat history Meta syncs to the API when a number first connects.
Preguntas frecuentes
Does my team have to stop using the phone?
No. That is the entire point of Coexistence. The WhatsApp Business app keeps working on the same number, with the same conversations, and the API runs alongside it.
Will I lose my existing conversations?
No. They stay in the app, and Meta syncs around six months of history to the API when the number connects, so software has context rather than starting empty.
Can I undo it?
Yes. A number can be disconnected, and the app carries on as it always did. Nothing about the number itself is permanently altered by connecting it.
Is this the same as the unofficial WhatsApp APIs?
No, and the difference decides whether the number survives. Coexistence is Meta's official feature on the Cloud API. Unofficial gateways drive WhatsApp Web as a linked device, which breaks the terms and gets numbers banned.
¿Listo para empezar?
Configura WhatsApp Coexistence en minutos, no en meses. La app sigue funcionando en el teléfono.
Empezar prueba gratis7 días gratis. No se cobra nada hasta que termine la prueba.