Saltearse al contenido

Funciones

Las funciones son código JavaScript que se ejecuta sobre cada evento en tránsito, entre su aplicación y los destinos. Úselas para filtrar eventos no deseados, transformar estructuras de datos o enriquecer eventos con datos externos.

Qué pueden hacer las funciones

CapacidadEjemplo
FiltrarEliminar tráfico de bots, eventos de prueba o usuarios internos
TransformarRenombrar campos, cambiar la estructura de eventos, normalizar datos
EnriquecerAgregar geolocalización, datos de empresa o consultas a APIs de terceros
EnrutarEnviar distintos eventos a diferentes tablas del almacén de datos

Cómo escribir una función

Las funciones son código JavaScript que recibe un evento y devuelve un evento modificado (o "drop" para descartarlo).

Transformación básica

// Rename event properties to match your warehouse schema
function transform(event, ctx) {
if (event.type === 'track') {
event.properties.source = event.properties.utm_source;
delete event.properties.utm_source;
}
return event;
}

Filtrar eventos

// Drop events from internal users
function transform(event, ctx) {
const internalDomains = ['graph8.com', 'yourcompany.com'];
const email = event.traits?.email || event.properties?.email || '';
if (internalDomains.some(d => email.endsWith(`@${d}`))) {
return 'drop'; // magic string — event is discarded
}
return event;
}

Enriquecer con una API externa

// Add company data from a third-party API
async function transform(event, ctx) {
const email = event.traits?.email;
if (!email) return event;
const domain = email.split('@')[1];
const resp = await ctx.fetch(`https://api.example.com/company/${domain}`);
if (resp.ok) {
const company = await resp.json();
event.traits.company_name = company.name;
event.traits.company_size = company.employee_count;
event.traits.industry = company.industry;
}
return event;
}

Eliminar PII

// Remove sensitive fields before sending to warehouse
function transform(event, ctx) {
delete event.traits?.phone;
delete event.traits?.address;
delete event.properties?.credit_card;
// Hash email for analytics (keep original for CRM)
if (event.traits?.email) {
event.traits.email_hash = ctx.crypto.sha256(event.traits.email);
}
return event;
}

Enrutar a tablas personalizadas

// Send different events to different warehouse tables
function transform(event, ctx) {
if (event.event === 'purchase') {
event.JITSU_TABLE_NAME = 'purchases';
} else if (event.event === 'page') {
event.JITSU_TABLE_NAME = 'pageviews';
}
return event;
}

APIs disponibles

Las funciones se ejecutan en un entorno aislado con las siguientes APIs:

APIUsoDescripción
ctx.fetch(url, options)Solicitudes HTTPLlamar a APIs externas (enriquecimiento, validación, webhooks)
ctx.storeAlmacenamiento persistenteAlmacén clave-valor que persiste entre llamadas a funciones
ctx.logRegistroEscribir en el registro de Eventos en Vivo para depuración
ctx.geoGeolocalizaciónDatos de ubicación basados en IP (ciudad, país, región)
ctx.uaAgente de usuarioInformación procesada del navegador y del dispositivo
ctx.headersEncabezados HTTPEncabezados de la solicitud original
ctx.getWarehouseConsultas al almacénConsultar su almacén de datos desde dentro de una función
ctx.sourceMetadatos de origenInformación sobre el flujo de origen
ctx.destinationMetadatos de destinoDetalles del destino objetivo

Administración de funciones

  1. Vaya a Connections > Functions en su panel de graph8
  2. Haga clic en + Create Function
  3. Escriba su JavaScript en el editor de código
  4. Pruébela con eventos de muestra usando el depurador integrado
  5. Vincúlela a un enlace flujo-destino

Las funciones incluyen un editor con resaltado de sintaxis y un depurador integrado que permite probarlas con cargas útiles de eventos de muestra.

Valores de retorno

RetornoQué ocurre
event (modificado)El evento modificado se envía al destino
Nuevo objetoReemplaza por completo al evento original
"drop"El evento se descarta (no se envía a ningún destino)
Arreglo de objetosUn evento se convierte en varios eventos
NadaEl evento original se envía sin cambios