Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/erickoz/hype-wa-widget/archive/refs/heads/main.zipWidget de WhatsApp para WordPress con atribución real a Google Ads.
La diferencia con cualquier widget de la tienda de plugins: los demás miden clicks en el botón. Este mide mensajes que efectivamente llegaron, y sabe cuáles vinieron de un anuncio de Google Ads.
El problema
El gclid vive en el navegador. El mensaje llega a WhatsApp. Nada los une —
WhatsApp no le pasa identidad del navegador a nadie.
La solución
Anuncio → landing (?gclid=…) → click en widget → WhatsApp → webhook
│ │ │
└── cookie 1st party └── ref invisible └── recupera el ref
(90 días) en el mensaje y sube la conversión
El ref viaja dentro del mensaje como caracteres de ancho cero: 16 de ellos
codifican un entero de 32 bits. El usuario ve Hola, quiero más información y
nada más. No hay códigos, paréntesis ni texto raro.
Si el usuario borra el texto antes de enviar, el colector cae a coincidencia por ventana temporal (el click más cercano en los últimos minutos). No se pierde el lead, solo baja la certeza.
Qué captura
| Dato | Para qué |
|---|---|
gclid |
Atribución estándar de Google Ads |
gbraid / wbraid |
iOS y app→web, donde muchas veces no hay gclid |
utm_* |
Reporte por campaña sin depender de Google |
_ga client_id |
Unir con GA4 |
| landing + referrer | Contexto de la sesión |
clicked_at |
Respaldo de coincidencia temporal |
gbraid/wbraid no son un detalle: el tráfico de widget es casi todo móvil.
Instalación
- Copia la carpeta a
wp-content/plugins/y actívala. - Ajustes → Hype WhatsApp: número, mensaje, endpoint del colector, site key.
- En Google Ads, confirma que el auto-etiquetado está activo. Sin eso no hay
gclid.
Arquitectura multi-tenant
El plugin no habla con Google Ads ni guarda nada. Solo reporta al colector
central de Hype Digital (Cloud Run), que atiende a todos los clientes y
enruta por site_key. Un servicio, N clientes.
El site_key viaja en el HTML: no es un secreto. Sirve para enrutar y para
validar el origen, no para autenticar.
Estado
v0.1.0 — captura y widget funcionando. Pendiente: el endpoint del colector y
la subida a Google Ads (ver ESTRATEGIA.md).
Sin verificar todavía: que WhatsApp preserve los caracteres de ancho cero. Es la única suposición de la que depende el método principal, y hay que probarla en un dispositivo real antes de construir encima.