Meta Tech Provider

El webhook account_update, y cada motivo de desconexión

account_update es como Meta informa que una conexión cambió de estado. Su campo event nombra lo que pasó y, en una remoción, disconnection_info.reason nombra el porqué. Ese motivo es la diferencia entre un número que va a volver y uno que se fue.

PARTNER_REMOVED

El evento que Meta envía cuando la app se desinstala de una cuenta.

6

Motivos de desconexión con nombre que puede llevar una remoción.

~14 days

La ventana de inactividad del dispositivo principal, que llega como PRIMARY_INACTIVITY.

¿Qué eventos lleva account_update?

PARTNER_REMOVED, cuando la app se desinstala de la cuenta de WhatsApp Business. Esta es la señal definitiva de desconexión y sobre la que vale construir, en lugar de deducir una desconexión de un campo que pasó a false.

ACCOUNT_OFFBOARDED, cuando el número sale por completo. ACCOUNT_RECONNECTED, cuando una conexión antes removida vuelve. Y los eventos de aplicación de normas: ACCOUNT_RESTRICTION y ACCOUNT_VIOLATION, junto a eventos cuyos nombres incluyen DISABLED o BAN.

Los resultados de verificación y de aprobación también llegan aquí, con nombres de evento que contienen VERIFIED o APPROVED. Un handler debe decidir por el nombre del evento y tratar cualquier cosa no reconocida como informativa en vez de fallar, porque Meta agrega eventos sin avisar.

¿Cuáles son los motivos de desconexión?

Son seis, y significan cosas muy distintas.

PRIMARY_INACTIVITY es la regla de los aproximadamente catorce días: la app de WhatsApp Business no se abrió en el dispositivo principal. Recuperable, y de lejos el más común.

COMPANION_INACTIVITY es la misma idea en un dispositivo vinculado, con una ventana mayor, de unos treinta días.

BUSINESS_DOWNGRADE significa que el número volvió a la app de WhatsApp de consumidor, lo que termina la Coexistencia, porque la Coexistencia exige la app Business.

CHANGE_NUMBER significa que el propio número de teléfono cambió. USER_RE_REGISTERED significa que se registró de nuevo en otro dispositivo. Y ACCOUNT_DISCONNECTED significa que el cliente lo desconectó a propósito, o que lo hizo la aplicación de normas.

El motivo también llega junto a disconnection_info.initiated_by, que dice si lo hizo una persona o el sistema.

¿Por qué el motivo importa más que el evento?

Porque PARTNER_REMOVED por sí solo no te dice si hay que actuar.

Un número removido por PRIMARY_INACTIVITY va a volver: la empresa abre la app, reconecta, y todo se reanuda. Tratar eso como un cliente que se fue produce un correo de cancelación para alguien que sigue siendo cliente.

Un número removido por BUSINESS_DOWNGRADE o ACCOUNT_DISCONNECTED es otra situación, y tratarlo como temporal deja una conexión en el limbo para siempre.

Cuando una remoción llega sin motivo alguno, initiated_by es el recurso alternativo: una remoción hecha por una persona se lee como deliberada, y una del sistema sin explicación no. Esa distinción vale hacerla en el código, y no en una conversación de soporte más tarde.

Errores comunes

  • Tratar todo PARTNER_REMOVED igual. El motivo separa dos semanas de silencio de un cliente que se fue.
  • Deducir la desconexión de un campo que pasó a false en vez de usar este evento. Eso es lo que produce falsas alarmas.
  • Fallar ante un nombre de evento no reconocido. Meta agrega eventos y un handler debe saltar lo que no conoce.
Hacerlo con EasyCoexistence

EasyCoexistence maneja cada uno de estos casos por su nombre, registra el motivo en la línea de tiempo de la conexión y separa una remoción recuperable por inactividad de un número que realmente se fue.

Preguntas frecuentes

¿PARTNER_REMOVED es permanente?

Por lo general no. La mayoría llega con PRIMARY_INACTIVITY, que significa que la app quedó sin abrirse y reconectar lo restaura todo.

¿Reconectar restaura el destino de mi webhook?

No, y esa es la trampa. El destino es un override en la suscripción de la app y se desinstala con ella. Hay que volver a aplicarlo.

¿Qué es COMPANION_INACTIVITY?

La misma idea de inactividad en un dispositivo vinculado en vez del principal, con una ventana mayor, de unos treinta días.

¿Puedo recibir este evento sin motivo?

Sí. Cuando pasa, disconnection_info.initiated_by es la única señal de si fue deliberado.

Sigue leyendo

¿Listo para empezar?

Configura WhatsApp Coexistence en minutos, no en meses. La app sigue funcionando en el teléfono.

Empezar prueba gratis

Verificado el

Webhook account_update