JavaScript API
track, conversion, identify, feature y setConsent.
El SDK expone un objeto global GrowthLab. Todos los métodos son seguros de llamar antes de que el SDK termine de cargar: las llamadas se encolan y se procesan cuando los módulos están listos.
track(nombre, propiedades?)
Registra un evento personalizado.
GrowthLab.track('newsletter_signup', {
placement: 'footer',
variant: 'compact',
});
nombre: hasta 64 caracteres,[a-zA-Z0-9_.:-].propiedades: objeto plano, hasta 32 claves. Los valores deben ser cadenas, números, booleanos onull.
Las propiedades son planas a propósito. Los objetos anidados hacen crecer el payload sin límite y no se agregan bien en analítica; los valores escalares se almacenan de forma predecible.
conversion(nombre, datos?)
Registra una conversión, con o sin revenue.
GrowthLab.conversion('purchase', {
value: 129900,
currency: 'MXN',
orderId: '1042',
});
value va en unidades mínimas
129900 significa $1,299.00 MXN, no $129,900. El importe viaja como entero en centavos porque los flotantes acumulan error al sumar millones de filas, y 1299 es ambiguo donde 129900 no lo es.
orderId evita contar dos veces
Si envías orderId, dos conversiones con el mismo valor se colapsan en una. Sin él, un visitante que recarga la página de agradecimiento cuenta la compra dos veces y tu revenue queda inflado.
Usa el identificador real del pedido.
identify(referencia, rasgos?)
Asocia el visitante anónimo con una referencia que ya tengas.
GrowthLab.identify('customer_88213', { segment: 'returning' });
La referencia se hashea en el servidor con una sal específica de tu sitio antes de almacenarse. El valor original nunca se guarda, y el mismo correo produce hashes distintos en sitios distintos, así que una filtración de un cliente no permite cruzar datos con otro.
No envíes datos sensibles aquí. Un id interno es preferible a un correo.
feature(clave)
Devuelve el valor asignado de un feature flag, o null si no aplica.
if (GrowthLab.feature('new-cart') === true) {
renderNewCart();
}
Ver Feature flags.
getVariant(claveExperimento)
Devuelve la variante asignada, o null si el visitante no entró al experimento.
const variant = GrowthLab.getVariant('hero-cta');
Útil para coordinar cambios que el editor visual no puede hacer, como una llamada a tu propio backend.
setConsent(consentimiento)
Declara el consentimiento del visitante.
GrowthLab.setConsent({ analytics: true, replay: false });
Los dos permisos son independientes. Aceptar analítica no es aceptar ser grabado. Ver Consentimiento.
Cómo se envían los eventos
- Se agrupan en lotes de hasta 20 y se envían cada 3 segundos.
- Al ocultarse la página se usa
sendBeacon, que sobrevive a la navegación. - Un fallo de red reintenta con backoff exponencial y jitter, hasta 6 intentos.
- Un
4xxno se reintenta: reenviar un payload inválido no lo vuelve válido. - Los eventos se deduplican por id en el cliente y otra vez en el servidor.
Nada de esto bloquea la navegación.
Orden de carga
Si necesitas llamar al SDK antes de que cargue, incluye este stub antes del snippet:
<script>
window.GrowthLab = window.GrowthLab || { q: [] };
['track', 'conversion', 'identify', 'setConsent'].forEach(function (m) {
window.GrowthLab[m] = function () {
window.GrowthLab.q.push([m, [].slice.call(arguments)]);
};
});
</script>
El SDK vacía esa cola al inicializarse.