---
title: "Klaviyo Connector"
description: "Vollständiger Leitfaden zur Klaviyo-Integration für die Synchronisation von Profilen, Events, Listen, Segmenten und Kampagnendaten mit Brevo über Tajo."
url: https://tajo.io/de/docs/connectors/marketing/klaviyo/
markdown: https://tajo.io/de/docs/connectors/marketing/klaviyo.md
lang: de-DE
robots: noindex
---

Beantrage frühzeitigen Zugang

Gib deinen Vornamen und deine geschäftliche E-Mail-Adresse ein. Wir senden dir einen Link, mit dem du deine Anfrage für den Tajo-Zugang bestätigst.

# Klaviyo Connector

Connector-Status: In Arbeit Im Aufbau. Noch nicht verifiziert.

| Quellfeld | Zielfeld | Beispielwert |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Verbinde Klaviyo über Tajo mit Brevo, um Marketingdaten zwischen beiden Plattformen zu migrieren oder zu synchronisieren. Synchronisiere Profile, Events, Listen, Segmente, Flows und Kampagnendaten für eine einheitliche Multi-Channel-Marketingstrategie.

## Überblick

| Eigenschaft | Wert |
| --- | --- |
| **Plattform** | Klaviyo |
| **Kategorie** | Marketing |
| **Einrichtungsaufwand** | Mittel |
| **Offizielle Integration** | Nein |
| **Synchronisierte Daten** | Profile, Events, Listen, Segmente, Kampagnen |
| **Verfügbare Skills** | 10 |
| **API-Standard** | JSON:API |

## Funktionen

- **Profil-Synchronisation** - Bidirektionale Synchronisation von Kundenprofilen zwischen Klaviyo und Brevo
- **Event-Weiterleitung** - Leite in Klaviyo getrackte Events an Brevo weiter, um Automationen auszulösen
- **Listen-Migration** - Synchronisiere Klaviyo-Listen in Brevo-Kontaktlisten
- **Segment-Sync** - Exportiere Klaviyo-Segmente als Brevo-Listen oder -Segmente
- **Flow-Datenexport** - Hole dir Flow-Performance-Daten für plattformübergreifende Analytics
- **Kampagnen-Sync** - Koordiniere Kampagnen über Klaviyo- und Brevo-Kanäle hinweg
- **Catalog-Sync** - Spiegele Produktkataloge zwischen den Plattformen
- **Coupon-Management** - Synchronisiere Coupon-Codes und Nutzungsdaten

## Voraussetzungen

Bevor du beginnst, stelle sicher, dass du Folgendes hast:

1. Ein Klaviyo-Konto mit API-Zugriff
2. Einen Private API Key mit den passenden Scopes
3. Deinen Klaviyo Public API Key (6-stellige Company-ID)
4. Ein Brevo-Konto mit API-Zugriff
5. Ein Tajo-Konto mit API-Anmeldedaten

## Authentifizierung

### Private API Key

Klaviyo verwendet Private API Keys mit gescoptem Zugriff für die serverseitige Authentifizierung. Setze den Schlüssel im `Authorization`-Header:

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

### Scopes für API-Schlüssel

Konfiguriere Scopes beim Anlegen deines Private Keys:

| Scope | Zugriff | Beschreibung |
| --- | --- | --- |
| `profiles` | Read/Full | Zugriff auf Kontaktprofile |
| `events` | Read/Full | Zugriff auf getrackte Events |
| `lists` | Read/Full | Zugriff auf Kontaktlisten |
| `segments` | Read | Zugriff auf Segmente |
| `campaigns` | Read | Zugriff auf Kampagnendaten |
| `metrics` | Read | Zugriff auf Metrik-Definitionen |
| `flows` | Read | Zugriff auf Flow-Konfigurationen |
| `catalogs` | Read | Zugriff auf Produktkataloge |

### Public API Key

Für das clientseitige Tracking verwendest du die 6-stellige Company-ID:

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

### OAuth (Partner-Integrationen)

Klaviyo unterstützt OAuth für Tech-Partner und bietet damit verbesserte Sicherheit und höhere Rate Limits:

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

## Konfiguration

### Grundeinrichtung

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

### Profil-Zuordnung

Ordne Klaviyo-Profileigenschaften den Brevo-Kontaktattributen zu:

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

### Event-Mapping

Ordne Klaviyo-Metriken Brevo-Events zu:

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

## API-Endpoints

| Methode | Endpoint | Beschreibung |
| --- | --- | --- |
| `GET` | `/api/profiles/` | Profile auflisten |
| `POST` | `/api/profiles/` | Ein Profil anlegen |
| `PATCH` | `/api/profiles/{id}/` | Ein Profil aktualisieren |
| `POST` | `/api/profile-merge/` | Doppelte Profile zusammenführen |
| `GET` | `/api/events/` | Events auflisten |
| `POST` | `/api/events/` | Ein Event anlegen |
| `GET` | `/api/lists/` | Alle Listen auflisten |
| `POST` | `/api/lists/{id}/relationships/profiles/` | Profile zu einer Liste hinzufügen |
| `GET` | `/api/segments/` | Segmente auflisten |
| `GET` | `/api/campaigns/` | Kampagnen auflisten |
| `GET` | `/api/flows/` | Flows auflisten |
| `GET` | `/api/metrics/` | Metriken auflisten |
| `POST` | `/api/metric-aggregates/` | Aggregierte Metriken abfragen |
| `GET` | `/api/catalog-items/` | Katalog-Einträge auflisten |

## Code-Beispiele

### Klaviyo-Connector initialisieren

```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
});
```

### Profile zu Brevo synchronisieren

```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 }
//   }
// }
```

### Ein Event erstellen

```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
      }
    }
  })
});
```

### Metrik-Aggregate abfragen

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

## Rate Limits

| Authentifizierung | Burst-Limit | Steady-Limit |
| --- | --- | --- |
| **Private API Key** | 75 Anfragen/Sek. | 700 Anfragen/Min. |
| **OAuth** | 150 Anfragen/Sek. | 1.500 Anfragen/Min. |
| **Client API** | 100 Anfragen/Sek. | N/A |
| **Bulk-Operationen** | 10 Anfragen/Sek. | 100 Anfragen/Min. |

API-Revision erforderlich

Alle Klaviyo-API-Anfragen benötigen einen `revision`-Header mit einem gültigen API-Versions-Datum (z. B. `2026-01-15`). Anfragen ohne diesen Header werden abgelehnt.

## Fehlerbehebung

| Problem | Ursache | Lösung |
| --- | --- | --- |
| `400 Bad Request` | Ungültiger oder fehlender API-Schlüssel | Private API Key auf Korrektheit prüfen |
| `403 Forbidden` | Unzureichender Scope | Prüfen, ob die Scopes des API-Schlüssels zu den erforderlichen Berechtigungen passen |
| Fehlender `revision`-Header | Header nicht gesetzt | `revision: 2026-01-15` zu allen Anfragen hinzufügen |
| Profil nicht gefunden | Falscher Identifier | Für Lookups die Klaviyo-Profil-ID verwenden, nicht die E-Mail |
| Events werden nicht synchronisiert | Falscher Metrik-Name | Exakte Metrik-Namen so verwenden, wie sie in Klaviyo definiert sind |
| `429 Too Many Requests` | Rate Limit überschritten | Exponentielles Backoff umsetzen und für höhere Limits OAuth in Betracht ziehen |
| JSON:API-Formatfehler | Falscher Content-Type | `application/vnd.api+json` für Content-Type- und Accept-Header verwenden |

## Best Practices

1. **JSON:API-Format nutzen** - Folge der JSON:API-Spezifikation für alle Request- und Response-Payloads
2. **`revision`-Header setzen** - Füge den `revision`-Header mit dem aktuellsten API-Versions-Datum stets hinzu
3. **Sparse Fieldsets verwenden** - Fordere mit `?fields[profile]=email,first_name` nur die benötigten Felder an, um den Payload zu verkleinern
4. **Relationships nutzen** - Verwende den JSON:API-Parameter `include`, um zugehörige Ressourcen in einer einzigen Anfrage zu laden
5. **Cursor-Pagination nutzen** - Navigiere große Ergebnismengen mit dem Parameter `page[cursor]`
6. **Bulk-Operationen umsetzen** - Nutze Bulk-Endpoints für Batch-Profil-Importe und das Erstellen von Events
7. **Für höhere Limits OAuth nutzen** - Die OAuth-Authentifizierung bietet doppelt so hohe Rate Limits wie Private Keys

## Sicherheit

- **Scopes für Private API Keys** - Granulare Read/Full-Zugriffssteuerung pro Ressourcentyp
- **OAuth-Unterstützung** - Sichere token-basierte Authentifizierung für Partner-Integrationen
- **Isolation des Public Keys** - Clientseitige Schlüssel sind auf Create-Operationen beschränkt
- **TLS 1.2+** - Die gesamte API-Kommunikation wird bei der Übertragung verschlüsselt
- **SOC 2 Type II** - Klaviyo ist nach SOC 2 Type II zertifiziert
- **DSGVO-Konformität** - Data-Privacy-API für Anfragen zur Profil-Löschung

## Verwandte Ressourcen

- [Brevo Connector](https://tajo.io/de/docs/connectors/marketing/brevo)
- [Google Ads Connector](https://tajo.io/de/docs/connectors/marketing/google-ads)
- [Meta Ads Connector](https://tajo.io/de/docs/connectors/marketing/meta-ads)
- [Customer-Sync-Skill](https://tajo.io/de/docs/skills/data-sync/customer-sync)
