Klaviyo-connector
Verbind Klaviyo met Brevo via Tajo om marketingdata tussen platforms te migreren of synchroniseren. Synchroniseer profielen, events, lijsten, segmenten, flows en campagnedata voor een uniforme multi-channel-marketingstrategie.
Overzicht
| Eigenschap | Waarde |
|---|---|
| Platform | Klaviyo |
| Categorie | Marketing |
| Setupcomplexiteit | Gemiddeld |
| Officiële integratie | Nee |
| Gesynchroniseerde data | Profielen, Events, Lijsten, Segmenten, Campagnes |
| Beschikbare skills | 10 |
| API-standaard | JSON:API |
Functies
- Profielsync - Bidirectionele sync van klantprofielen tussen Klaviyo en Brevo
- Event-forwarding - Stuur in Klaviyo gevolgde events door naar Brevo als automation-triggers
- Lijstmigratie - Synchroniseer Klaviyo-lijsten naar Brevo-contactlijsten
- Segmentsync - Exporteer Klaviyo-segmenten als Brevo-lijsten of -segmenten
- Flow-data-export - Haal flowprestatiedata op voor cross-platform-analytics
- Campagnesync - Coördineer campagnes over Klaviyo- en Brevo-kanalen heen
- Catalogussync - Spiegel productcatalogi tussen platforms
- Couponbeheer - Synchroniseer couponcodes en gebruiksdata
Vereisten
Voordat je begint, zorg dat je beschikt over:
- Een Klaviyo-account met API-toegang
- Een Private API Key met de juiste scopes
- Je Klaviyo Public API Key (6-character company ID)
- Een Brevo-account met API-toegang
- Een Tajo-account met API-inloggegevens
Authenticatie
Private API key
Klaviyo gebruikt private API-sleutels met gescopete toegang voor server-side-authenticatie. Zet de sleutel in de Authorization-header:
curl https://a.klaviyo.com/api/profiles/ \ -H "Authorization: Klaviyo-API-Key your-private-api-key" \ -H "revision: 2026-01-15"Scopes van API-sleutels
Configureer scopes bij het aanmaken van je private key:
| Scope | Toegang | Beschrijving |
|---|---|---|
profiles | Read/Full | Toegang tot contactprofielen |
events | Read/Full | Toegang tot getrackte events |
lists | Read/Full | Toegang tot contactlijsten |
segments | Read | Toegang tot segmenten |
campaigns | Read | Toegang tot campagnedata |
metrics | Read | Toegang tot metric-definities |
flows | Read | Toegang tot flowconfiguraties |
catalogs | Read | Toegang tot productcatalogi |
Public API key
Gebruik voor client-side-tracking de 6-character company ID:
curl -X POST "https://a.klaviyo.com/client/events/?company_id=COMPANY_ID" \ -H "Content-Type: application/json" \ -d '{"data": {...}}'OAuth (partnerintegraties)
Klaviyo ondersteunt OAuth voor tech-partners, met betere beveiliging en hogere ratelimits:
curl https://a.klaviyo.com/api/profiles/ \ -H "Authorization: Bearer YOUR_OAUTH_TOKEN" \ -H "revision: 2026-01-15"Configuratie
Basisopzet
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: 22Profielmapping
Koppel Klaviyo-profieleigenschappen aan Brevo-contactattributen:
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_PREFEvent-mapping
Koppel Klaviyo-metrics aan Brevo-events:
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 | Beschrijving |
|---|---|---|
GET | /api/profiles/ | Profielen opvragen |
POST | /api/profiles/ | Profiel aanmaken |
PATCH | /api/profiles/{id}/ | Profiel bijwerken |
POST | /api/profile-merge/ | Duplicaatprofielen samenvoegen |
GET | /api/events/ | Events opvragen |
POST | /api/events/ | Event aanmaken |
GET | /api/lists/ | Alle lijsten opvragen |
POST | /api/lists/{id}/relationships/profiles/ | Profielen aan lijst toevoegen |
GET | /api/segments/ | Segmenten opvragen |
GET | /api/campaigns/ | Campagnes opvragen |
GET | /api/flows/ | Flows opvragen |
GET | /api/metrics/ | Metrics opvragen |
POST | /api/metric-aggregates/ | Metric-aggregates opvragen |
GET | /api/catalog-items/ | Catalogusitems opvragen |
Codevoorbeelden
Klaviyo-connector initialiseren
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Klaviyo accountawait tajo.connectors.connect('klaviyo', { privateApiKey: process.env.KLAVIYO_PRIVATE_KEY, publicApiKey: process.env.KLAVIYO_PUBLIC_KEY});Profielen naar Brevo synchroniseren
// Fetch Klaviyo profiles and sync to Brevoconst 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 }// }// }Event aanmaken
// 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: { }, properties: { OrderId: 'ORD-1234', Value: 89.99, Items: [ { ProductName: 'Widget Pro', Price: 89.99, Quantity: 1 } ] }, value: 89.99 } } })});Metric-aggregates opvragen
// Get aggregate metric data for reportingawait 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)'] } } })});Ratelimits
| Authenticatie | Burst-limiet | Continue limiet |
|---|---|---|
| Private API key | 75 requests/sec | 700 requests/min |
| OAuth | 150 requests/sec | 1.500 requests/min |
| Client API | 100 requests/sec | N.v.t. |
| Bulk-operaties | 10 requests/sec | 100 requests/min |
API-revision vereist
Alle Klaviyo API-requests vereisen de revision-header met een geldige API-versiedatum (bijv. 2026-01-15). Requests zonder deze header worden geweigerd.
Probleemoplossing
| Probleem | Oorzaak | Oplossing |
|---|---|---|
400 Bad Request | Ongeldige of ontbrekende API-sleutel | Verifieer dat de private API-sleutel correct is |
403 Forbidden | Onvoldoende scope | Controleer of API-sleutel-scopes overeenkomen met de vereiste rechten |
Ontbrekende revision-header | Header niet ingesteld | Voeg revision: 2026-01-15 toe aan alle requests |
| Profiel niet gevonden | Verkeerde identifier | Gebruik Klaviyo-profiel-ID, geen e-mail, voor opzoeken |
| Events synchroniseren niet | Verkeerde metricnaam | Match exacte metricnamen zoals gedefinieerd in Klaviyo |
429 Too Many Requests | Ratelimit overschreden | Implementeer exponentiële backoff, overweeg OAuth voor hogere limieten |
| JSON:API-formaatfouten | Verkeerd content-type | Gebruik application/vnd.api+json voor Content-Type- en Accept-headers |
Best practices
- Gebruik JSON:API-formaat - Volg de JSON:API-specificatie voor alle request- en response-payloads
- Stel de revision-header in - Neem altijd de
revision-header op met de nieuwste API-versiedatum - Gebruik sparse fieldsets - Vraag alleen benodigde velden op met
?fields[profile]=email,first_nameom payloads te verkleinen - Benut relaties - Gebruik de JSON:API-
include-parameter om gerelateerde resources in één request op te halen - Gebruik cursor-paginatie - Navigeer grote resultsets met de
page[cursor]-parameter - Implementeer bulk-operaties - Gebruik bulk-endpoints voor batchimport van profielen en eventcreatie
- Gebruik OAuth voor hogere limieten - OAuth-authenticatie biedt 2x hogere ratelimits dan private keys
Beveiliging
- Scopes voor private API-sleutels - Granulaire Read/Full-toegang per resource-type
- OAuth-ondersteuning - Veilige tokengebaseerde authenticatie voor partnerintegraties
- Isolatie van public key - Client-side-sleutels beperkt tot create-only-operaties
- TLS 1.2+ - Alle API-communicatie versleuteld in transit
- SOC 2 Type II - Klaviyo is SOC 2 Type II-gecertificeerd
- AVG-compliance - Data Privacy API voor profielverwijderingsverzoeken