
Para medir ventas offline y por WhatsApp tenés que guardar en tu CRM un identificador de cada lead (ctwa_clid, fbc o gclid, más email y teléfono) y mandar la venta cerrada a cada plataforma: a Meta por la API de conversiones y a Google Ads por importación de conversiones offline o conversiones avanzadas para clientes potenciales.
Sin ese paso, las campañas solo ven lo que pasa en tu web. Si una parte grande de tus ventas se cierra en un chat, por teléfono o en el local, el algoritmo optimiza hacia quien escribe, no hacia quien compra. Esta guía cubre la medición; la conexión entre WhatsApp y el CRM está en cómo integrar WhatsApp con tu CRM.
Antes de empezar
- Un registro de ventas confiable: CRM o planilla con fecha, valor, moneda y número de pedido.
- Píxel y API de conversiones en Meta. Si todavía no los tenés, mirá cómo instalar la API de conversiones.
- Etiquetado automático activo en Google Ads, para que cada clic traiga su gclid.
- Formularios o chats que guarden email y teléfono, con el consentimiento correspondiente.
- Acceso de administrador al Administrador de eventos de Meta y a la sección de conversiones de Google Ads.
Paso 1: Definí qué es una venta y dónde queda registrada
Parece obvio, pero es donde se rompe casi todo. Necesitás un único lugar donde una venta pasa a "ganada", con fecha y hora, valor, moneda, número de pedido y datos del cliente. Si hoy están repartidas en varios lugares, unificá primero. Ese registro es tu first-party data y vale más que cualquier métrica de la plataforma.
Paso 2: Guardá los identificadores de cada lead
Para que una plataforma pueda atribuir una venta, tiene que reconocer a la persona o al clic. Estos son los identificadores que conviene guardar en cada registro, desde el primer contacto:
| Identificador | De dónde sale | Para qué sirve |
|---|---|---|
ctwa_clid | Objeto referral del webhook de WhatsApp | Atribuir ventas de anuncios de clic a WhatsApp en Meta |
fbc / fbclid | Cookie _fbc o parámetro fbclid de la URL | Atribuir ventas de leads que pasaron por tu web |
gclid | Parámetro de la URL con etiquetado automático | Importar conversiones offline en Google Ads |
| Email y teléfono | Formulario, chat o checkout | Coincidencia en Meta y conversiones avanzadas en Google |
| Número de pedido | Tu sistema de ventas | Deduplicar |
Un detalle sobre fbc: Meta pide un formato específico, fb.subdominio.fecha_de_creación.fbclid, con la fecha en milisegundos. Si guardás solo el fbclid, guardá también cuándo lo recibiste para armar el valor después. El email y el teléfono se envían normalizados y con hash SHA-256.
Paso 3: Mandá las ventas a Meta por la API de conversiones
Las ventas offline se envían a un conjunto de datos (dataset), que en Meta reúne en un mismo lugar los eventos del píxel, de la app, de mensajería y offline. La antigua Offline Conversions API figura en la documentación como legado: lo que corresponde hoy es la API de conversiones. El campo que define el canal es action_source, y la referencia de parámetros lista estos valores, entre otros:
business_messaging: conversión que viene de anuncios que hacen clic a Messenger, Instagram o WhatsApp.physical_store: conversión hecha en persona en tu local.system_generated: conversión que ocurre sola, por ejemplo la renovación de una suscripción con débito automático.chatyphone_call: conversiones hechas por una app de mensajería o por teléfono.
Para una venta que nació en un anuncio de WhatsApp, la guía de eventos de mensajería pide messaging_channel en whatsapp, el ID de la cuenta de WhatsApp Business y el ctwa_clid, contra un conjunto de datos creado con esa cuenta. Un ejemplo con valores ilustrativos:
POST https://graph.facebook.com/<VERSION>/<DATASET_ID>/events?access_token=<TOKEN>
{
"data": [{
"event_name": "Purchase",
"event_time": <UNIX_TIMESTAMP>,
"action_source": "business_messaging",
"messaging_channel": "whatsapp",
"user_data": {
"whatsapp_business_account_id": "<WABA_ID>",
"ctwa_clid": "<CTWA_CLID_GUARDADO>"
},
"custom_data": {
"currency": "ARS",
"value": 85000
}
}]
}Para una venta en el local, la guía de eventos offline indica usar physical_store y mandar los datos del cliente con hash:
{
"data": [{
"event_name": "Purchase",
"event_time": <UNIX_TIMESTAMP>,
"action_source": "physical_store",
"user_data": {
"em": ["<SHA256_DEL_EMAIL_NORMALIZADO>"],
"ph": ["<SHA256_DEL_TELEFONO_NORMALIZADO>"]
},
"custom_data": {
"currency": "ARS",
"value": 85000,
"order_id": "V-10482"
}
}]
}Paso 4: Importá las ventas en Google Ads
En Google Ads tenés dos caminos. La importación de conversiones offline con GCLID usa el identificador de clic que guardaste. Las conversiones avanzadas para clientes potenciales (enhanced conversions for leads) capturan con hash el email o el teléfono del formulario de tu web y, cuando cerrás la venta, la subís con esos mismos datos. Google recomienda empezar por esta opción si todavía no usás importación offline.
Para las conversiones avanzadas para clientes potenciales, Google pide aceptar las condiciones de datos del cliente, tener la medición con la etiqueta de Google o Google Tag Manager, el etiquetado automático activo y los datos con hash SHA-256; también recomienda incluir el GCLID cuando lo tengas.
Las formas de subir los datos son Google Ads Data Manager (que toma fuentes como Google Sheets, archivos por SFTP o HTTP y bases de datos), la API de Google Ads, Zapier y conexiones directas con Salesforce y HubSpot. Con GCLID, las columnas básicas son estas:
Google Click ID | Conversion Name | Conversion Time | Conversion Value | Conversion Currency
<GCLID> | Venta CRM | 2026-10-01 18:30:00-03:00 | 85000 | ARSSi el lead llega desde un anuncio de Google a tu web y después abre WhatsApp, el gclid solo existe en la web. Una práctica habitual es guardarlo en el formulario o pasarlo como referencia en el mensaje prellenado, para poder asociarlo al contacto en el CRM.
| Método | Qué guardás | Cómo subís | Ventana de importación |
|---|---|---|---|
| Meta: API de conversiones, mensajería | ctwa_clid | API, partner o CRM con integración | event_time de hasta 7 días |
| Meta: API de conversiones, offline | Email, teléfono, order_id | API o integración | Subir dentro de los 62 días |
| Google Ads: GCLID | gclid | Data Manager, Sheets, API, Zapier | 90 días desde el último clic |
| Google Ads: conversiones avanzadas para clientes potenciales | Email y teléfono con hash (y gclid si hay) | Data Manager, API, Zapier, Salesforce, HubSpot | 63 días desde el último clic |
Paso 5: Respetá las ventanas de importación
Cada plataforma pone un límite y si lo pasás, la venta se pierde:
- Meta: el
event_timepuede tener hasta 7 días al momento de enviarlo; si un evento del lote supera ese plazo, Meta rechaza toda la solicitud. Para ventas conphysical_store, la guía de eventos offline indica subirlas dentro de los 62 días de la conversión. - Google Ads: según las pautas de importación, las conversiones con GCLID subidas más de 90 días después del último clic no se importan; con conversiones avanzadas para clientes potenciales, el límite es de 63 días.
- Tiempos de proceso: Google indica esperar entre 4 y 6 horas después de crear una acción de conversión antes de subir datos, y que los datos pueden tardar entre 24 y 48 horas en verse en los informes.
La conclusión práctica: automatizá el envío diario. Las subidas manuales una vez por mes casi siempre dejan ventas afuera.
Paso 6: Deduplicá antes de mirar resultados
En Meta, los eventos offline se deduplican solo contra otros eventos offline. La guía describe dos métodos: por order_id (el predeterminado) o por datos del cliente si no mandás order_id, combinados con el conjunto de datos, la fecha, el nombre del evento y el número de ítem. Mandá siempre el número de pedido. Para los eventos que también dispara el píxel, la deduplicación se hace con event_id.
En Google Ads, una conversión con la misma combinación de identificador (GCLID o datos del formulario), nombre de conversión, fecha y hora se cuenta una sola vez, así que reenviar un lote no duplica. Si querés registrar varias ventas del mismo clic, necesitás horarios distintos y la configuración de recuento en "todas".
Paso 7: Recalculá el ROAS con las ventas offline
Un ejemplo hipotético para ver por qué importa. Una marca invierte $1.000.000 en un mes. Las ventas web atribuidas suman $3.000.000, así que el ROAS que ve la plataforma es 3. Pero por WhatsApp cerró otras ventas que vinieron de los mismos anuncios por $2.000.000. Al importarlas, las ventas atribuidas pasan a $5.000.000 y el ROAS a 5.
Con un ROAS de 3, esa campaña podía parecer floja y terminar recortada. Con 5, es la que más rinde. Lo mismo pasa con el CPL: dos campañas con el mismo costo por lead pueden tener tasas de cierre muy distintas, y solo lo ves si la venta vuelve a la plataforma. Con volumen suficiente, usá la venta importada como objetivo de optimización; en Google, campañas como Performance Max aprenden mejor de ventas que de formularios.
Errores comunes
- No guardar el identificador en el primer contacto: después no hay forma de recuperarlo.
- Subir tarde y quedar fuera de la ventana de 7, 62, 63 o 90 días según el caso.
- Elegir mal el action_source: una venta de un anuncio de WhatsApp mandada como physical_store pierde el vínculo con el clic.
- Hashear sin normalizar: un email con mayúsculas o un teléfono sin código de país no coincide.
- Mandar el mismo evento sin order_id y terminar con ventas duplicadas.
- Mezclar monedas: si vendés en pesos, mandá ARS en todos los eventos.
- Optimizar por la venta importada con muy poco volumen: primero acumulá datos.
Checklist de medición offline
- Registro único de ventas con fecha, valor, moneda y número de pedido.
- ctwa_clid, fbc, gclid, email y teléfono guardados en cada lead.
- Conjunto de datos de Meta recibiendo eventos con el action_source correcto.
- Acción de conversión de importación creada en Google Ads.
- Envío automático diario, dentro de las ventanas de cada plataforma.
- Deduplicación con order_id y verificación en el Administrador de eventos.
- ROAS recalculado con las ventas offline antes de decidir presupuestos.
Preguntas frecuentes
¿Qué action_source uso para una venta cerrada por WhatsApp?
Si la conversación empezó en un anuncio de clic a WhatsApp, Meta indica usar business_messaging con messaging_channel whatsapp y el ctwa_clid del lead. Para ventas en el local se usa physical_store, y para renovaciones automáticas, como una suscripción que se cobra sola, system_generated.
¿Cuánto tiempo tengo para importar una venta offline?
En Meta, el event_time de un evento de la API de conversiones puede tener hasta 7 días al momento de enviarlo, y las ventas en tienda física deberían subirse dentro de los 62 días. En Google Ads, una conversión con GCLID se importa si se sube dentro de los 90 días del último clic, y con conversiones avanzadas para clientes potenciales, dentro de los 63 días.
¿Qué son las conversiones avanzadas para clientes potenciales?
Es la versión mejorada de la importación de conversiones offline de Google Ads (enhanced conversions for leads). Captura con hash el email o el teléfono del formulario de tu web y, cuando la venta se cierra, la subís con esos mismos datos para que Google la asocie al clic. Google la recomienda si todavía no usás importación de conversiones offline.
¿Tengo que hashear el email y el teléfono?
Sí. Tanto Meta como Google piden los datos del cliente normalizados y con hash SHA-256. Muchas integraciones y herramientas lo hacen solas; si lo programás vos, normalizá antes de hashear.
¿Las ventas offline pueden contarse dos veces?
Pueden, si no deduplicás. En Meta, los eventos offline se deduplican contra otros eventos offline, por order_id o por datos del cliente. En Google Ads, una conversión con el mismo identificador, nombre, fecha y hora se cuenta una sola vez.
En Go For conectamos el CRM con Meta y Google para que las campañas optimicen por ventas reales y no por chats. Si querés saber cuántas de tus ventas hoy no ven las plataformas, pedí la auditoría gratuita con Berta o conocé nuestro trabajo como agencia de Google Ads.