Klaviyo konektor
Poveži Klaviyo sa Brevo putem Tajo da migruješ ili sinhronizuješ marketing podatke između platforma. Sinhronizuj profile, događaje, liste, segmente, tokove i podatke kampanja za unifikovanu multi-kanalnu marketing strategiju.
Pregled
| Svojstvo | Vrednost |
|---|---|
| Platforma | Klaviyo |
| Kategorija | Marketing |
| Složenost podešavanja | Srednje |
| Zvanična integracija | Ne |
| Sinhronizovani podaci | Profili, Događaji, Liste, Segmenti, Kampanje |
| Dostupne veštine | 10 |
| API standard | JSON:API |
Karakteristike
- Sinhronizacija profila - Dvosmerna sinhronizacija profila kupaca između Klaviyo i Brevo
- Prosleđivanje događaja - Prosleđivanje Klaviyo praćenih događaja u Brevo za okidače automatizacije
- Migracija lista - Sinhronizacija Klaviyo lista na Brevo liste kontakata
- Sinhronizacija segmenata - Izvoz Klaviyo segmenata kao Brevo lista ili segmenata
- Izvoz podataka tokova - Povlačenje podataka o performansama toka za cross-platform analitiku
- Sinhronizacija kampanja - Koordinacija kampanja između Klaviyo i Brevo kanala
- Sinhronizacija kataloga - Ogledanje kataloga proizvoda između platforma
- Upravljanje kuponima - Sinhronizacija kodova kupona i podataka o upotrebi
Preduslovi
Pre nego što započneš, proveri da imaš:
- Klaviyo nalog sa API pristupom
- Privatni API ključ sa odgovarajućim skopovima
- Klaviyo javni API ključ (6-karaterski ID kompanije)
- Brevo nalog sa API pristupom
- Tajo nalog sa API akreditivima
Autentifikacija
Privatni API ključ
Klaviyo koristi privatne API ključeve sa skopovanim pristupom za server-side autentifikaciju. Postavi ključ u Authorization header:
curl https://a.klaviyo.com/api/profiles/ \ -H "Authorization: Klaviyo-API-Key your-private-api-key" \ -H "revision: 2026-01-15"Skopovi API ključa
Konfiguriši skopove pri kreiranju privatnog ključa:
| Skop | Pristup | Opis |
|---|---|---|
profiles | Čitanje/Puno | Pristup profilima kontakata |
events | Čitanje/Puno | Pristup praćenim događajima |
lists | Čitanje/Puno | Pristup listama kontakata |
segments | Čitanje | Pristup segmentima |
campaigns | Čitanje | Pristup podacima kampanja |
metrics | Čitanje | Pristup definicijama metrika |
flows | Čitanje | Pristup konfiguracijama tokova |
catalogs | Čitanje | Pristup katalozima proizvoda |
Javni API ključ
Za praćenje na strani klijenta, koristi 6-karakterni ID kompanije:
curl -X POST "https://a.klaviyo.com/client/events/?company_id=COMPANY_ID" \ -H "Content-Type: application/json" \ -d '{"data": {...}}'OAuth (Partnerske integracije)
Klaviyo podržava OAuth za tehničke partnere, nudeći poboljšanu bezbednost i limite brzine:
curl https://a.klaviyo.com/api/profiles/ \ -H "Authorization: Bearer YOUR_OAUTH_TOKEN" \ -H "revision: 2026-01-15"Konfiguracija
Osnovno podešavanje
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: 22Mapiranje profila
Mapiranje Klaviyo svojstava profila na Brevo atribute kontakta:
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_PREFMapiranje događaja
Mapiranje Klaviyo metrika na Brevo događaje:
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 endpointi
| Metoda | Endpoint | Opis |
|---|---|---|
GET | /api/profiles/ | Listanje profila |
POST | /api/profiles/ | Kreiranje profila |
PATCH | /api/profiles/{id}/ | Ažuriranje profila |
POST | /api/profile-merge/ | Spajanje duplikatnih profila |
GET | /api/events/ | Listanje događaja |
POST | /api/events/ | Kreiranje događaja |
GET | /api/lists/ | Listanje svih lista |
POST | /api/lists/{id}/relationships/profiles/ | Dodavanje profila na listu |
GET | /api/segments/ | Listanje segmenata |
GET | /api/campaigns/ | Listanje kampanja |
GET | /api/flows/ | Listanje tokova |
GET | /api/metrics/ | Listanje metrika |
POST | /api/metric-aggregates/ | Upit agregata metrika |
GET | /api/catalog-items/ | Listanje stavki kataloga |
Primeri koda
Inicijalizacija Klaviyo konektora
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});Sinhronizacija profila sa Brevo
// 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 }// }// }Kreiranje događaja
// 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 } } })});Upit agregata metrika
// 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)'] } } })});Ograničenja brzine
| Autentifikacija | Burst limit | Stabilni limit |
|---|---|---|
| Privatni API ključ | 75 zahteva/sek | 700 zahteva/min |
| OAuth | 150 zahteva/sek | 1.500 zahteva/min |
| Client API | 100 zahteva/sek | N/A |
| Bulk operacije | 10 zahteva/sek | 100 zahteva/min |
Obavezan revision header
Svi Klaviyo API zahtevi zahtevaju header revision postavljen na važeći datum verzije API-ja (npr. 2026-01-15). Zahtevi bez ovog headera biće odbijeni.
Rešavanje problema
| Problem | Uzrok | Rešenje |
|---|---|---|
400 Bad Request | Nevažeći ili nedostaje API ključ | Verifikuj da je privatni API ključ ispravan |
403 Forbidden | Nedovoljni skop | Proveri da li skopovi API ključa odgovaraju potrebnim dozvolama |
Nedostaje revision header | Header nije postavljen | Dodaj revision: 2026-01-15 svim zahtevima |
| Profil nije pronađen | Pogrešan identifikator | Koristi Klaviyo ID profila, ne email, za pretraživanja |
| Događaji se ne sinhronizuju | Pogrešan naziv metrike | Podudaraj tačne nazive metrika kao što su definisani u Klaviyo |
429 Too Many Requests | Prekoračen limit brzine | Implementiraj eksponencijalno usporavanje, razmotri OAuth za više limite |
| JSON:API greške formata | Pogrešan Content-Type | Koristi application/vnd.api+json za Content-Type i Accept header |
Najbolje prakse
- Koristi JSON:API format - Prati JSON:API specifikaciju za sve payloade zahteva i odgovora
- Postavi revision header - Uvek uključi
revisionheader sa najnovijim datumom verzije API-ja - Koristi sparse fieldset-ove - Zahtevaj samo potrebna polja sa
?fields[profile]=email,first_nameda smanjiš veličinu payloada - Iskoristi relacije - Koristi JSON:API
includeparametar za dohvatanje srodnih resursa u jednom zahtevu - Koristi cursor paginaciju - Navigiraj kroz velike skupove rezultata sa
page[cursor]parametrom - Implementiraj bulk operacije - Koristi bulk endpointe za batch uvoz profila i kreiranje događaja
- Koristi OAuth za više limite - OAuth autentifikacija pruža 2x više limite brzine od privatnih ključeva
Bezbednost
- Skopovi privatnog API ključa - Granularna kontrola pristupa Čitanje/Puno po tipu resursa
- OAuth podrška - Bezbedna autentifikacija zasnovana na tokenima za partnerske integracije
- Izolacija javnog ključa - Ključevi na strani klijenta ograničeni na operacije samo kreiranja
- TLS 1.2+ - Sva API komunikacija enkriptovana u prenosu
- SOC 2 Type II - Klaviyo je SOC 2 Type II sertifikovan
- GDPR usklađenost - Data Privacy API za zahteve brisanja profila