Conector Klaviyo
Conecte o Klaviyo ao Brevo através do Tajo para migrar ou sincronizar dados de marketing entre plataformas. Sincronize perfis, eventos, listas, segmentos, flows e dados de campanha para uma estratégia de marketing multicanal unificada.
Visão geral
| Propriedade | Valor |
|---|---|
| Plataforma | Klaviyo |
| Categoria | Marketing |
| Complexidade de configuração | Média |
| Integração oficial | Não |
| Dados sincronizados | Perfis, Eventos, Listas, Segmentos, Campanhas |
| Skills disponíveis | 10 |
| Padrão de API | JSON:API |
Recursos
- Sincronização de perfis - Sincronização bidirecional de perfis de clientes entre Klaviyo e Brevo
- Encaminhamento de eventos - Encaminhe eventos rastreados do Klaviyo para o Brevo como gatilhos de automação
- Migração de listas - Sincronize listas do Klaviyo para listas de contatos do Brevo
- Sincronização de segmentos - Exporte segmentos do Klaviyo como listas ou segmentos do Brevo
- Exportação de dados de flow - Extraia dados de desempenho de flow para analytics multiplataforma
- Sincronização de campanhas - Coordene campanhas entre canais do Klaviyo e do Brevo
- Sincronização de catálogo - Espelhe catálogos de produtos entre plataformas
- Gestão de cupons - Sincronize códigos de cupom e dados de uso
Pré-requisitos
Antes de começar, certifique-se de ter:
- Uma conta Klaviyo com acesso à API
- Uma Private API Key com os escopos apropriados
- Sua Public API Key do Klaviyo (company ID de 6 caracteres)
- Uma conta Brevo com acesso à API
- Uma conta Tajo com credenciais de API
Autenticação
Private API Key
O Klaviyo usa chaves API privadas com acesso por escopo para autenticação server-side. Defina a chave no cabeçalho Authorization:
curl https://a.klaviyo.com/api/profiles/ \ -H "Authorization: Klaviyo-API-Key your-private-api-key" \ -H "revision: 2026-01-15"Escopos de chave API
Configure os escopos ao criar sua chave privada:
| Escopo | Acesso | Descrição |
|---|---|---|
profiles | Read/Full | Acessar perfis de contato |
events | Read/Full | Acessar eventos rastreados |
lists | Read/Full | Acessar listas de contato |
segments | Read | Acessar segmentos |
campaigns | Read | Acessar dados de campanha |
metrics | Read | Acessar definições de métrica |
flows | Read | Acessar configurações de flow |
catalogs | Read | Acessar catálogos de produtos |
Public API Key
Para rastreamento client-side, use o company ID de 6 caracteres:
curl -X POST "https://a.klaviyo.com/client/events/?company_id=COMPANY_ID" \ -H "Content-Type: application/json" \ -d '{"data": {...}}'OAuth (Integrações de parceiros)
O Klaviyo suporta OAuth para parceiros de tecnologia, oferecendo segurança aprimorada e limites de taxa maiores:
curl https://a.klaviyo.com/api/profiles/ \ -H "Authorization: Bearer YOUR_OAUTH_TOKEN" \ -H "revision: 2026-01-15"Configuração
Configuração 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: 22Mapeamento de perfis
Mapeie propriedades de perfil do Klaviyo para atributos de contato do 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_PREFMapeamento de eventos
Mapeie métricas do Klaviyo para eventos do 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 da API
| Método | Endpoint | Descrição |
|---|---|---|
GET | /api/profiles/ | Listar perfis |
POST | /api/profiles/ | Criar um perfil |
PATCH | /api/profiles/{id}/ | Atualizar um perfil |
POST | /api/profile-merge/ | Mesclar perfis duplicados |
GET | /api/events/ | Listar eventos |
POST | /api/events/ | Criar um evento |
GET | /api/lists/ | Listar todas as listas |
POST | /api/lists/{id}/relationships/profiles/ | Adicionar perfis a uma lista |
GET | /api/segments/ | Listar segmentos |
GET | /api/campaigns/ | Listar campanhas |
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 itens de catálogo |
Exemplos de código
Inicializar o conector Klaviyo
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});Sincronizar perfis para o 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 }// }// }Criar um 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: { }, properties: { OrderId: 'ORD-1234', Value: 89.99, Items: [ { ProductName: 'Widget Pro', Price: 89.99, Quantity: 1 } ] }, value: 89.99 } } })});Consultar agregados de métrica
// 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)'] } } })});Limites de taxa
| Autenticação | Limite de burst | Limite estável |
|---|---|---|
| Private API Key | 75 requisições/seg | 700 requisições/min |
| OAuth | 150 requisições/seg | 1.500 requisições/min |
| Client API | 100 requisições/seg | N/A |
| Operações em lote | 10 requisições/seg | 100 requisições/min |
Cabeçalho de revisão da API obrigatório
Todas as requisições da Klaviyo API exigem o cabeçalho revision definido com uma data de versão de API válida (por exemplo, 2026-01-15). Requisições sem esse cabeçalho serão rejeitadas.
Solução de problemas
| Problema | Causa | Solução |
|---|---|---|
400 Bad Request | Chave API inválida ou ausente | Verifique se a private API key está correta |
403 Forbidden | Escopo insuficiente | Verifique se os escopos da chave API correspondem às permissões necessárias |
Cabeçalho revision ausente | Cabeçalho não definido | Adicione revision: 2026-01-15 a todas as requisições |
| Perfil não encontrado | Identificador incorreto | Use o ID de perfil do Klaviyo, não o e-mail, para consultas |
| Eventos não sincronizando | Nome de métrica incorreto | Combine os nomes exatos das métricas conforme definidos no Klaviyo |
429 Too Many Requests | Limite de taxa excedido | Implemente backoff exponencial, considere OAuth para limites maiores |
| Erros de formato JSON:API | Content type incorreto | Use application/vnd.api+json para os cabeçalhos Content-Type e Accept |
Melhores práticas
- Use o formato JSON:API - Siga a especificação JSON:API para todos os payloads de requisição e resposta
- Defina o cabeçalho revision - Sempre inclua o cabeçalho
revisioncom a data da versão mais recente da API - Use sparse fieldsets - Solicite apenas campos necessários com
?fields[profile]=email,first_namepara reduzir o tamanho do payload - Aproveite relacionamentos - Use o parâmetro
includedo JSON:API para buscar recursos relacionados em uma única requisição - Use paginação por cursor - Navegue por grandes conjuntos de resultados com o parâmetro
page[cursor] - Implemente operações em lote - Use endpoints em lote para importações de perfil em lote e criação de eventos
- Use OAuth para limites maiores - A autenticação OAuth fornece limites de taxa 2x maiores do que chaves privadas
Segurança
- Escopos de chave API privada - Controle de acesso Read/Full granular por tipo de recurso
- Suporte a OAuth - Autenticação segura baseada em token para integrações de parceiros
- Isolamento de chave pública - Chaves client-side limitadas a operações apenas de criação
- TLS 1.2+ - Toda comunicação com a API é criptografada em trânsito
- SOC 2 Type II - O Klaviyo é certificado SOC 2 Type II
- Conformidade GDPR - Data Privacy API para solicitações de exclusão de perfil