
Tener el teléfono de un cliente en Shopify no nos da permiso para mandarle promociones por WhatsApp. Antes de enviar, verificamos el permiso para ese canal y finalidad; si falta, hay una baja o los sistemas no coinciden, frenamos el mensaje.
Para coordinar Shopify, CRM y WhatsApp, seguimos estas reglas:
Nuestra regla es simple: <u>si no podemos confirmar que el envío está permitido, no lo despachamos</u>.
Shopify y WhatsApp: controles de consentimiento antes de enviar
Con los permisos definidos, fijá qué sistema manda sobre cada dato. Asigná un responsable por campo y separá la evidencia histórica de la elegibilidad actual: la elegibilidad se calcula, no se prueba.
No alcanza con guardar permisos. El sistema debe frenar o habilitar WhatsApp en el momento en que cambia el consentimiento.
Guardá un registro por persona, canal y finalidad. Los campos de WhatsApp deben estar en un registro central de consentimiento; los metafields de Shopify solo pueden contener copias.
| Campos | Qué guardar | Tipo y ubicación |
|---|---|---|
shopify_customer_id | ID del cliente; conservá el ID original si hay una fusión | Nativo de Shopify; referencia en el registro central |
phone_e164, country, whatsapp_id | Teléfono normalizado, país e identificador de WhatsApp | Normalizá en la integración; guardá whatsapp_id cuando exista |
channel, purpose | Canal y finalidad específica autorizada | Campos propios del registro central; copia opcional en metafields |
consent_status | unknown, opted_in u opted_out | Estado de WhatsApp en el registro central, separado de las suscripciones nativas de email/SMS |
effective_at, ingested_at | Cuándo ocurrió la acción y cuándo la recibió el sistema, con zona horaria | Auditoría del registro central |
source, notice_version | Origen de captura y texto o referencia del aviso aceptado | Evidencia del registro central |
event_id, actor | Identificador único y quién inició la acción | Auditoría del registro central |
sync_status, last_error, suppression_reason | Estado de sincronización, error y motivo de bloqueo | Campos operativos de la integración |
Normalizá los móviles argentinos con una regla documentada para +54, el 9 y los prefijos locales. Conservá también el valor original.
Ante una fusión, un cambio de titular o un número reasignado, mantené la evidencia vinculada a la persona original. Un número nuevo exige verificación y un nuevo opt-in: no hereda permisos.
Shopify controla sus suscripciones nativas de email/SMS. El registro central y el servicio de consentimiento controlan WhatsApp. La integración solo replica los cambios.
Con esas responsabilidades definidas, validá los cambios en tiempo real antes de cada envío. Esto asegura que los flujos de conversación en WhatsApp se mantengan actualizados y legales.
Si Shopify, CRM y WhatsApp no comparten el mismo estado, un contacto puede quedar habilitado por error o bloqueado sin motivo.
No decidas por la última escritura: resolvé por fecha efectiva, fuente y evidencia. Conservá el historial sin sobrescribir eventos anteriores, según las reglas de conservación y eliminación.
Los eventos de la tabla son eventos internos, no nombres nativos de webhooks de WhatsApp. Usá event_id para evitar que un reintento duplique cambios.
| Evento o condición | Dimensión y transición | Efecto sobre campañas de WhatsApp |
|---|---|---|
| Sin evidencia suficiente | Consentimiento → unknown | Bloquear |
consent_granted | Consentimiento → opted_in para el canal y la finalidad registrados | Evaluar las demás restricciones; no habilitar automáticamente |
consent_revoked o whatsapp_opt_out | Consentimiento → opted_out; registrar supresión según el alcance de la baja | Bloquear y propagar la revocación |
privacy_deletion_requested | Supresión → deletion_pending | Bloquear y derivar al proceso de eliminación |
| Número inválido, no asociado a WhatsApp o bloqueado/no confirmado | Posibilidad de contacto → invalid_number, not_on_whatsapp o blocked_or_unconfirmed | Bloquear sin tratarlo como revocación |
Actualización pendiente, sync_failed o conflicto | Sincronización → pending, sync_failed o conflict_pending | Bloquear hasta resolver |
template_rejected | Restricción de la plantilla; no modifica el consentimiento | Bloquear los envíos que dependan de esa plantilla |
WhatsApp no garantiza una notificación individual confiable de bloqueo. Una falla de entrega no prueba una baja; la ausencia de fallas tampoco prueba permiso.
La elegibilidad solo pasa a habilitado cuando coinciden todas estas condiciones: consentimiento vigente, identidad verificada, posibilidad de contacto, ausencia de supresión, sincronización confirmada y cumplimiento de las reglas de mensajería.
Registrá cada elección por finalidad y su evidencia en el registro central de consentimiento antes de pasar el cambio a los sistemas conectados. Autenticá los webhooks con su firma, validá el contenido y confirmá la recepción después de guardarlo. Luego, procesalo de forma asíncrona con event_id para evitar duplicados.
Actualizá las copias autorizadas, recalculá la elegibilidad y dejá constancia de qué sistemas están sincronizados, pendientes o con error. Shopify no garantiza el orden de entrega: tomá la secuencia o la fecha efectiva de la fuente, no el orden de llegada.
Las bajas tienen prioridad. Aplicá la supresión y, cuando sea posible, cancelá las promociones en cola. Un opt-in antiguo no debe revertir una baja posterior. Si la persona renueva su consentimiento, agregá un evento sin borrar la revocación.
Reintentá las fallas transitorias con retroceso exponencial. Enviá las persistentes a una cola de rechazo (DLQ) e incluí el error, la cantidad de intentos y el responsable. Coordiná los pedidos de eliminación con las reglas de conservación y supresión: guardá solo lo permitido y necesario. Almacená los tiempos en UTC y mostralos como DD/MM/AAAA HH:MM, con ART (UTC−3) explícito.
Ese historial permite validar cada envío en tiempo de ejecución.
Antes de cada envío, recalculá la elegibilidad: estar en una audiencia segmentada no autoriza el envío. Justo antes del despacho, verificá la identidad y el número, el canal WhatsApp, la finalidad, el permiso vigente, las supresiones y el estado de sincronización.
Revisá también la categoría del mensaje y las reglas de mensajería. Fuera de la ventana de 24 horas, necesitás una plantilla aprobada.
Si no conocés el estado del consentimiento, encontrás contradicciones o hay una falla de sincronización sin resolver, bloqueá las promociones y creá una tarea de revisión. Evaluá los mensajes de pedidos y soporte por separado, sin exenciones generales ni ofertas agregadas a una comunicación necesaria.
Guardá el resultado - por ejemplo, allowed, blocked_no_consent o blocked_sync_error - junto con la regla aplicada, la versión de los datos y la hora de evaluación. Si el envío requiere una plantilla, el control sigue en la sección siguiente.
Al conectar Burbuxa con Shopify, verificá cómo se mapean la identidad, el teléfono, la finalidad, las bajas, las supresiones y el ID de auditoría hacia la fuente central.
Configurá Burbuxa para consultar el registro central antes de ejecutar cada flujo y volver a verificarlo justo antes del despacho. También debe propagar las bajas a las promociones pendientes.
Derivá las dudas a una persona que pueda consultar el historial y mantené los envíos bloqueados hasta resolverlas. Estos controles sirven de base para validar las plantillas y los permisos de cada campaña.
Cuando el envío requiere una plantilla, sumá un segundo filtro: aprobación, categoría y vigencia.
El consentimiento habilita el envío; la aprobación de Meta valida la plantilla. Son controles independientes: una plantilla aprobada no otorga permiso de marketing, y un aviso transaccional no habilita promociones.
Guardá un registro central con control de versiones. Incluí el nombre y el ID de la plantilla de WhatsApp, idioma, categoría oficial, propósito, texto, variables, botones, texto de baja, estado de aprobación, versión interna, responsable y fechas de revisión.
Vinculá cada plantilla con su automatización, evento de Shopify, tipo de consentimiento permitido y condición de la ventana de 24 horas.
Registrá la categoría asignada por WhatsApp: Utility para comunicaciones no promocionales relacionadas con una operación, solicitud o actualización esencial; Marketing para promociones y reactivación; Authentication para códigos de verificación. Indicá qué ventana aplica a cada flujo y bloqueá cualquier envío que no cumpla esa regla.
Para cada variable, definí la fuente, el tipo de dato, la longitud máxima y si es obligatoria. Si falta un dato necesario, bloqueá el envío o usá únicamente un reemplazo revisado.
Cada automatización debe consultar este registro antes de poner un envío en cola.
Si el consentimiento cambia pero la plantilla sigue activa, revalidá el flujo antes de enviar. Así evitás diferencias entre lo que la integración de WhatsApp con Shopify registra como permitido y lo que Meta autoriza.
Si la plantilla deja de estar disponible, el flujo se detiene aunque el consentimiento siga vigente. Si queda rechazada, pausada, deshabilitada o no está disponible en el idioma requerido, frená los envíos afectados y avisá al responsable. No la reemplaces por otra categoría para esquivar el bloqueo.
Conservá en el registro de auditoría el ID y la versión de la plantilla, la decisión de consentimiento y el resultado del envío. El envío solo avanza si coinciden consentimiento vigente, plantilla válida y ventana de uso.
Con las fuentes de verdad y las plantillas definidas, completá el circuito con una auditoría diaria. Cruzá los registros por ID interno y teléfono normalizado para detectar diferencias que puedan habilitar mensajes indebidos. Compará permisos, finalidad, fuente, fechas, última sincronización y supresión. Buscá altas sin evidencia, segmentos desactualizados, fusiones incorrectas y eventos demorados o fallidos.
Los permisos distintos por canal no son, por sí solos, un conflicto. Si hay un conflicto real, asigná un responsable y un plazo, bloqueá las promociones afectadas y resolvelo según la autoridad definida para cada campo. No sobrescribas el historial.
Ante una solicitud de eliminación, revisá también las colas de envío, las exportaciones y las audiencias activas. Conservá solo la evidencia mínima de supresión, con acceso restringido y un plazo documentado.
Después de conciliar los datos, poné a prueba las fallas del sistema. Revisá la versión del aviso, la evidencia de captura, el origen, las marcas de tiempo, los logs y los reintentos. Probá bajas con campañas en cola, eventos duplicados, caídas de API, cambios de teléfono y altas posteriores a una baja.
Verificá que el envío se bloquee si una revocación o un cambio de teléfono no se propagan a tiempo. Los eventos duplicados no deben generar mensajes repetidos, y un estado desconocido debe impedir el despacho.
Distribuí las responsabilidades: CRM se ocupa de finalidades y audiencias; Ingeniería, de sincronización y reintentos; Soporte, de solicitudes; y Privacidad, de retención y eliminación. Cada incidente debe tener responsable, plazo y evidencia de cierre.
Medí la demora de sincronización, los conflictos abiertos y los envíos bloqueados. Si el flujo corre en Burbuxa, probá sus automatizaciones con las mismas reglas.
Si algo no cuadra, el flujo no se lanza.
Antes de habilitar el flujo, verificá que estén cubiertos estos controles:
En el checkout de Shopify, agregá una casilla opcional, sin marcar de antemano e independiente de otros canales para aceptar mensajes de WhatsApp. Separá los mensajes transaccionales de los de marketing y explicá quién los envía, para qué, con qué frecuencia y cómo darse de baja: enviando ALTO o BAJA.
Para acreditar el consentimiento según la Ley 25.326, guardá la fecha, la hora y el texto aceptado. El cliente debe poder finalizar la compra sin aceptar mensajes de WhatsApp.
No los uses para enviar marketing por WhatsApp sin obtener antes un opt-in explícito. El consentimiento debe surgir de una acción clara: responder “SÍ” para suscribirse, usar palabras clave o un código QR, o marcar una casilla en el checkout. Registrá la fecha, la hora y la respuesta como prueba del consentimiento.
Excluí a quienes no hayan dado su opt-in, aunque ya estén cargados. Respetá la revocación mediante “ALTO/STOP/BAJA” y procesá las bajas en tiempo real.
La sincronización en tiempo real de Burbuxa actualiza automáticamente las listas de exclusión. Si un cliente solicita la baja con palabras como ALTO o BAJA, el sistema lo marca como Opted-Out y lo elimina al instante de las listas de marketing.
Por ejemplo, si se da de baja a las 14:30, no recibirá mensajes de marketing programados para más tarde, como los de las 15:00.