---
title: "Conector de Klaviyo"
description: "Guía completa de integración con Klaviyo para sincronizar perfiles, eventos, listas, segmentos y datos de campaña con Brevo a través de Tajo."
url: https://tajo.io/es/docs/connectors/marketing/klaviyo/
markdown: https://tajo.io/es/docs/connectors/marketing/klaviyo.md
lang: es-ES
robots: noindex
---

Solicita acceso anticipado

Escribe tu nombre y dirección de correo de trabajo. Te enviaremos un enlace para confirmar tu solicitud de acceso a Tajo.

# Conector de Klaviyo

Estado del conector: En desarrollo En construcción. Aún no verificado.

| Campo de origen | Campo de destino | Valor de ejemplo |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

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

| Propiedad | Valor |
| --- | --- |
| **Plataforma** | Klaviyo |
| **Categoría** | Marketing |
| **Complejidad de configuración** | Media |
| **Integración oficial** | No |
| **Datos sincronizados** | Perfiles, Eventos, Listas, Segmentos, Campañas |
| **Skills disponibles** | 10 |
| **Estándar de API** | JSON: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`:

```bash
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:

| Scope | Acceso | Descripción |
| --- | --- | --- |
| `profiles` | Read/Full | Acceso a perfiles de contacto |
| `events` | Read/Full | Acceso a eventos registrados |
| `lists` | Read/Full | Acceso a listas de contactos |
| `segments` | Read | Acceso a segmentos |
| `campaigns` | Read | Acceso a datos de campañas |
| `metrics` | Read | Acceso a definiciones de métricas |
| `flows` | Read | Acceso a configuraciones de flows |
| `catalogs` | Read | Acceso a catálogos de productos |

### Public API Key

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

```bash
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:

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

## Configuración

### Configuración básica

```yaml
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:

```yaml
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:

```yaml
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étodo | Endpoint | Descripció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

```javascript
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

```javascript
// 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": "jane@example.com",
//     "first_name": "Jane",
//     "last_name": "Kim",
//     "phone_number": "+15551234567",
//     "properties": { "lifetime_value": 450.00 }
//   }
// }
```

### Crear un evento

```javascript
// 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: 'jane@example.com' } }
        },
        properties: {
          OrderId: 'ORD-1234',
          Value: 89.99,
          Items: [
            { ProductName: 'Widget Pro', Price: 89.99, Quantity: 1 }
          ]
        },
        value: 89.99
      }
    }
  })
});
```

### Consultar agregados de métricas

```javascript
// 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ón | Límite de ráfaga | Límite sostenido |
| --- | --- | --- |
| **Private API Key** | 75 peticiones/s | 700 peticiones/min |
| **OAuth** | 150 peticiones/s | 1.500 peticiones/min |
| **Client API** | 100 peticiones/s | N/A |
| **Operaciones bulk** | 10 peticiones/s | 100 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

| Problema | Causa | Solución |
| --- | --- | --- |
| `400 Bad Request` | Clave API no válida o ausente | Verifica que la clave privada sea correcta |
| `403 Forbidden` | Scope insuficiente | Comprueba que los scopes de la clave coincidan con los permisos necesarios |
| Falta la cabecera `revision` | Cabecera no establecida | Añade `revision: 2026-01-15` a todas las peticiones |
| Perfil no encontrado | Identificador incorrecto | Usa el profile ID de Klaviyo, no el email, para las búsquedas |
| Eventos no se sincronizan | Nombre de métrica incorrecto | Haz coincidir exactamente los nombres de métrica definidos en Klaviyo |
| `429 Too Many Requests` | Límite de velocidad superado | Implementa backoff exponencial; considera OAuth para límites más altos |
| Errores de formato JSON:API | Content type incorrecto | Usa `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

- [Conector de Brevo](https://tajo.io/es/docs/connectors/marketing/brevo)
- [Conector de Google Ads](https://tajo.io/es/docs/connectors/marketing/google-ads)
- [Conector de Meta Ads](https://tajo.io/es/docs/connectors/marketing/meta-ads)
- [Skill de sincronización de clientes](https://tajo.io/es/docs/skills/data-sync/customer-sync)
