Conector de Klaviyo

Conecta Klaviyo con Brevo a través de Tajo para migrar o sincronizar datos de marketing entre ambas plataformas. Sincroniza perfiles, eventos, listas, segmentos, flows y datos de campañas para una estrategia de marketing multicanal unificada.

Resumen

PropiedadValor
PlataformaKlaviyo
CategoríaMarketing
Complejidad de configuraciónMedia
Integración oficialNo
Datos sincronizadosPerfiles, Eventos, Listas, Segmentos, Campañas
Skills disponibles10
Estándar de APIJSON:API

Funcionalidades

  • Sincronización de perfiles - Sincronización bidireccional de perfiles de cliente entre Klaviyo y Brevo
  • Reenvío de eventos - Reenvía los eventos registrados en Klaviyo a Brevo como triggers de automatización
  • Migración de listas - Sincroniza las listas de Klaviyo con listas de contactos de Brevo
  • Sincronización de segmentos - Exporta los segmentos de Klaviyo como listas o segmentos de Brevo
  • Exportación de datos de flows - Obtén los datos de rendimiento de flows para analítica multiplataforma
  • Sincronización de campañas - Coordina campañas entre canales de Klaviyo y Brevo
  • Sincronización de catálogos - Replica los catálogos de productos entre plataformas
  • Gestión de cupones - Sincroniza códigos de cupón y datos de uso

Requisitos previos

Antes de empezar, asegúrate de tener:

  1. Una cuenta de Klaviyo con acceso a la API
  2. Una Private API Key con los scopes adecuados
  3. Tu Klaviyo Public API Key (ID de empresa de 6 caracteres)
  4. Una cuenta de Brevo con acceso a la API
  5. Una cuenta de Tajo con credenciales de API

Autenticación

Private API Key

Klaviyo utiliza claves API privadas con acceso por scopes para la autenticación server-side. Incluye la clave en la cabecera Authorization:

Terminal window
curl https://a.klaviyo.com/api/profiles/ \
-H "Authorization: Klaviyo-API-Key your-private-api-key" \
-H "revision: 2026-01-15"

Scopes de la clave API

Configura los scopes al crear tu clave privada:

ScopeAccesoDescripción
profilesRead/FullAcceso a perfiles de contacto
eventsRead/FullAcceso a eventos registrados
listsRead/FullAcceso a listas de contactos
segmentsReadAcceso a segmentos
campaignsReadAcceso a datos de campañas
metricsReadAcceso a definiciones de métricas
flowsReadAcceso a configuraciones de flows
catalogsReadAcceso a catálogos de productos

Public API Key

Para el tracking client-side, usa el ID de empresa de 6 caracteres:

Terminal window
curl -X POST "https://a.klaviyo.com/client/events/?company_id=COMPANY_ID" \
-H "Content-Type: application/json" \
-d '{"data": {...}}'

OAuth (integraciones de partners)

Klaviyo admite OAuth para partners tecnológicos, lo que ofrece mayor seguridad y límites de velocidad más altos:

Terminal window
curl https://a.klaviyo.com/api/profiles/ \
-H "Authorization: Bearer YOUR_OAUTH_TOKEN" \
-H "revision: 2026-01-15"

Configuración

Configuración básica

connectors:
klaviyo:
enabled: true
private_api_key: "your-klaviyo-private-key"
public_api_key: "XXXXXX"
api_revision: "2026-01-15"
# Data sync options
sync:
profiles: true
events: true
lists: true
segments: true
catalogs: false
# Brevo list assignment
lists:
all_contacts: 20
subscribers: 21
high_value: 22

Asignación de perfiles

Asocia las propiedades de perfil de Klaviyo con los atributos de contacto de Brevo:

profile_mapping:
email: email
first_name: FIRSTNAME
last_name: LASTNAME
phone_number: SMS
city: CITY
region: REGION
country: COUNTRY
zip: ZIP
organization: COMPANY
title: JOB_TITLE
# Custom properties
lifetime_value: LTV
total_orders: ORDER_COUNT
last_order_date: LAST_ORDER_DATE
preferred_channel: CHANNEL_PREF

Asignación de eventos

Asocia las métricas de Klaviyo con eventos de Brevo:

event_mapping:
"Placed Order": "order_completed"
"Ordered Product": "product_purchased"
"Started Checkout": "checkout_started"
"Added to Cart": "cart_updated"
"Viewed Product": "product_viewed"
"Subscribed to List": "customer_subscribed"
"Received Email": "email_received"
"Opened Email": "email_opened"
"Clicked Email": "email_clicked"

Endpoints de la API

MétodoEndpointDescripción
GET/api/profiles/Listar perfiles
POST/api/profiles/Crear un perfil
PATCH/api/profiles/{id}/Actualizar un perfil
POST/api/profile-merge/Fusionar perfiles duplicados
GET/api/events/Listar eventos
POST/api/events/Crear un evento
GET/api/lists/Listar todas las listas
POST/api/lists/{id}/relationships/profiles/Añadir perfiles a una lista
GET/api/segments/Listar segmentos
GET/api/campaigns/Listar campañas
GET/api/flows/Listar flows
GET/api/metrics/Listar métricas
POST/api/metric-aggregates/Consultar agregados de métricas
GET/api/catalog-items/Listar elementos de catálogo

Ejemplos de código

Inicializar el conector de Klaviyo

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
// Connect Klaviyo account
await tajo.connectors.connect('klaviyo', {
privateApiKey: process.env.KLAVIYO_PRIVATE_KEY,
publicApiKey: process.env.KLAVIYO_PUBLIC_KEY
});

Sincronizar perfiles con Brevo

// Fetch Klaviyo profiles and sync to Brevo
const response = await fetch('https://a.klaviyo.com/api/profiles/', {
headers: {
'Authorization': `Klaviyo-API-Key ${PRIVATE_KEY}`,
'revision': '2026-01-15',
'Accept': 'application/vnd.api+json'
}
});
const { data } = await response.json();
// Each profile follows JSON:API format
// {
// "type": "profile",
// "id": "01ABCDEF",
// "attributes": {
// "email": "[email protected]",
// "first_name": "Jane",
// "last_name": "Kim",
// "phone_number": "+15551234567",
// "properties": { "lifetime_value": 450.00 }
// }
// }

Crear un evento

// Track an event in Klaviyo (forwarded to Brevo via Tajo)
await fetch('https://a.klaviyo.com/api/events/', {
method: 'POST',
headers: {
'Authorization': `Klaviyo-API-Key ${PRIVATE_KEY}`,
'revision': '2026-01-15',
'Content-Type': 'application/vnd.api+json',
'Accept': 'application/vnd.api+json'
},
body: JSON.stringify({
data: {
type: 'event',
attributes: {
metric: {
data: { type: 'metric', attributes: { name: 'Placed Order' } }
},
profile: {
data: { type: 'profile', attributes: { email: '[email protected]' } }
},
properties: {
OrderId: 'ORD-1234',
Value: 89.99,
Items: [
{ ProductName: 'Widget Pro', Price: 89.99, Quantity: 1 }
]
},
value: 89.99
}
}
})
});

Consultar agregados de métricas

// Get aggregate metric data for reporting
await fetch('https://a.klaviyo.com/api/metric-aggregates/', {
method: 'POST',
headers: {
'Authorization': `Klaviyo-API-Key ${PRIVATE_KEY}`,
'revision': '2026-01-15',
'Content-Type': 'application/vnd.api+json'
},
body: JSON.stringify({
data: {
type: 'metric-aggregate',
attributes: {
metric_id: 'METRIC_ID',
measurements: ['count', 'sum_value'],
interval: 'day',
filter: ['greater-or-equal(datetime,2024-01-01)',
'less-than(datetime,2024-02-01)']
}
}
})
});

Límites de velocidad

AutenticaciónLímite de ráfagaLímite sostenido
Private API Key75 peticiones/s700 peticiones/min
OAuth150 peticiones/s1.500 peticiones/min
Client API100 peticiones/sN/A
Operaciones bulk10 peticiones/s100 peticiones/min

Cabecera de revisión obligatoria

Todas las peticiones a la API de Klaviyo requieren la cabecera revision con una fecha de versión de API válida (por ejemplo, 2026-01-15). Las peticiones sin esta cabecera serán rechazadas.

Resolución de problemas

ProblemaCausaSolución
400 Bad RequestClave API no válida o ausenteVerifica que la clave privada sea correcta
403 ForbiddenScope insuficienteComprueba que los scopes de la clave coincidan con los permisos necesarios
Falta la cabecera revisionCabecera no establecidaAñade revision: 2026-01-15 a todas las peticiones
Perfil no encontradoIdentificador incorrectoUsa el profile ID de Klaviyo, no el email, para las búsquedas
Eventos no se sincronizanNombre de métrica incorrectoHaz coincidir exactamente los nombres de métrica definidos en Klaviyo
429 Too Many RequestsLímite de velocidad superadoImplementa backoff exponencial; considera OAuth para límites más altos
Errores de formato JSON:APIContent type incorrectoUsa application/vnd.api+json en las cabeceras Content-Type y Accept

Buenas prácticas

  1. Usa el formato JSON:API - Sigue la especificación JSON:API en todos los payloads de petición y respuesta
  2. Establece la cabecera revision - Incluye siempre la cabecera revision con la fecha de versión más reciente
  3. Usa sparse fieldsets - Pide solo los campos necesarios con ?fields[profile]=email,first_name para reducir el tamaño del payload
  4. Aprovecha las relaciones - Usa el parámetro include de JSON:API para obtener recursos relacionados en una sola petición
  5. Usa paginación por cursor - Navega por grandes conjuntos de resultados con el parámetro page[cursor]
  6. Implementa operaciones bulk - Usa endpoints bulk para importaciones masivas de perfiles y creación de eventos
  7. Usa OAuth para límites más altos - La autenticación OAuth ofrece el doble de límites de velocidad que las claves privadas

Seguridad

  • Scopes de clave API privada - Control de acceso granular Read/Full por tipo de recurso
  • Soporte OAuth - Autenticación segura basada en tokens para integraciones de partners
  • Aislamiento de la clave pública - Las claves client-side se limitan a operaciones de solo creación
  • TLS 1.2+ - Toda la comunicación con la API se cifra en tránsito
  • SOC 2 Type II - Klaviyo está certificado SOC 2 Type II
  • Cumplimiento RGPD - Data Privacy API para solicitudes de eliminación de perfiles

Recursos relacionados

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
Asistente AI

¡Hola! Pregúntame lo que quieras sobre la documentación.