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',
});

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

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.