Klaviyo コネクター
Klaviyo を Tajo 経由で Brevo に接続して、プラットフォーム間でマーケティングデータを移行または同期します。プロファイル、イベント、リスト、セグメント、フロー、キャンペーンデータを同期し、マルチチャネルマーケティング戦略を統一できます。
概要
| 項目 | 値 |
|---|---|
| プラットフォーム | Klaviyo |
| カテゴリー | マーケティング |
| セットアップ難易度 | 中 |
| 公式統合 | なし |
| 同期データ | プロファイル、イベント、リスト、セグメント、キャンペーン |
| 利用可能なスキル | 10 |
| API 標準 | JSON:API |
機能
- プロファイル同期 - Klaviyo と Brevo 間で顧客プロファイルを双方向同期
- イベント転送 - Klaviyo の追跡イベントを Brevo へ転送して自動化トリガーに利用
- リスト移行 - Klaviyo のリストを Brevo コンタクトリストに同期
- セグメント同期 - Klaviyo セグメントを Brevo のリストまたはセグメントとしてエクスポート
- フローデータエクスポート - プラットフォーム横断分析のためにフローパフォーマンスデータを取得
- キャンペーン同期 - Klaviyo と Brevo の両チャネルでキャンペーンを協調
- カタログ同期 - プラットフォーム間で商品カタログをミラーリング
- クーポン管理 - クーポンコードと利用データを同期
前提条件
開始する前に、以下をご用意ください。
- API アクセス付きの Klaviyo アカウント
- 適切なスコープを持つプライベート API キー
- Klaviyo パブリック API キー (6 文字の会社 ID)
- API アクセス付きの Brevo アカウント
- API 認証情報を持つ Tajo アカウント
認証
プライベート API キー
Klaviyo はサーバーサイド認証にスコープ付きアクセスのプライベート API キーを使用します。Authorization ヘッダーにキーを設定します。
curl https://a.klaviyo.com/api/profiles/ \ -H "Authorization: Klaviyo-API-Key your-private-api-key" \ -H "revision: 2026-01-15"API キースコープ
プライベートキー作成時にスコープを設定します。
| スコープ | アクセス | 説明 |
|---|---|---|
profiles | Read/Full | コンタクトプロファイルへのアクセス |
events | Read/Full | 追跡済みイベントへのアクセス |
lists | Read/Full | コンタクトリストへのアクセス |
segments | Read | セグメントへのアクセス |
campaigns | Read | キャンペーンデータへのアクセス |
metrics | Read | メトリクス定義へのアクセス |
flows | Read | フロー設定へのアクセス |
catalogs | Read | 商品カタログへのアクセス |
パブリック API キー
クライアントサイドのトラッキングには 6 文字の会社 ID を使用します。
curl -X POST "https://a.klaviyo.com/client/events/?company_id=COMPANY_ID" \ -H "Content-Type: application/json" \ -d '{"data": {...}}'OAuth (パートナー統合)
Klaviyo はテックパートナー向けに OAuth をサポートしており、セキュリティとレート制限が向上します。
curl https://a.klaviyo.com/api/profiles/ \ -H "Authorization: Bearer YOUR_OAUTH_TOKEN" \ -H "revision: 2026-01-15"設定
基本セットアップ
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プロファイルマッピング
Klaviyo プロファイルプロパティを 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_PREFイベントマッピング
Klaviyo のメトリクスを 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"API エンドポイント
| メソッド | エンドポイント | 説明 |
|---|---|---|
GET | /api/profiles/ | プロファイル一覧 |
POST | /api/profiles/ | プロファイルを作成 |
PATCH | /api/profiles/{id}/ | プロファイルを更新 |
POST | /api/profile-merge/ | 重複プロファイルをマージ |
GET | /api/events/ | イベント一覧 |
POST | /api/events/ | イベントを作成 |
GET | /api/lists/ | 全リスト一覧 |
POST | /api/lists/{id}/relationships/profiles/ | リストにプロファイルを追加 |
GET | /api/segments/ | セグメント一覧 |
GET | /api/campaigns/ | キャンペーン一覧 |
GET | /api/flows/ | フロー一覧 |
GET | /api/metrics/ | メトリクス一覧 |
POST | /api/metric-aggregates/ | メトリクス集計をクエリ |
GET | /api/catalog-items/ | カタログアイテム一覧 |
コード例
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});プロファイルを 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 }// }// }イベントの作成
// 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 } } })});メトリクス集計のクエリ
// 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)'] } } })});レート制限
| 認証方式 | バースト制限 | 安定時制限 |
|---|---|---|
| プライベート API キー | 75 リクエスト/秒 | 700 リクエスト/分 |
| OAuth | 150 リクエスト/秒 | 1,500 リクエスト/分 |
| Client API | 100 リクエスト/秒 | 該当なし |
| バルク操作 | 10 リクエスト/秒 | 100 リクエスト/分 |
API リビジョン必須
すべての Klaviyo API リクエストには有効な API バージョン日付 (例: 2026-01-15) を設定した revision ヘッダーが必要です。このヘッダーがないリクエストは拒否されます。
トラブルシューティング
| 問題 | 原因 | 解決策 |
|---|---|---|
400 Bad Request | API キー無効または欠落 | プライベート API キーを確認 |
403 Forbidden | スコープ不足 | API キーのスコープと必要権限を確認 |
revision ヘッダー欠落 | ヘッダー未設定 | 全リクエストに revision: 2026-01-15 を追加 |
| プロファイルが見つからない | 識別子が誤り | 検索にはメールではなく Klaviyo プロファイル ID を使用 |
| イベントが同期されない | メトリクス名の不一致 | Klaviyo で定義された正確なメトリクス名と一致させる |
429 Too Many Requests | レート制限超過 | 指数バックオフを実装、より高い上限には OAuth を検討 |
| JSON:API フォーマットエラー | Content-Type が誤り | Content-Type と Accept に application/vnd.api+json を使用 |
ベストプラクティス
- JSON:API フォーマットを使用 - すべてのリクエスト・レスポンスで JSON:API 仕様に従う
- revision ヘッダーを設定 - 常に最新 API バージョン日付の
revisionヘッダーを含める - スパースフィールドセットを使用 -
?fields[profile]=email,first_nameで必要なフィールドのみ要求し、ペイロードサイズを削減 - リレーションシップを活用 - JSON:API の
includeパラメータで関連リソースを 1 リクエストで取得 - カーソルページネーションを使用 -
page[cursor]パラメータで大規模結果を走査 - バルク操作を実装 - プロファイル一括インポートとイベント作成にバルクエンドポイントを使用
- より高い制限には OAuth を利用 - OAuth 認証はプライベートキーの 2 倍のレート制限を提供
セキュリティ
- プライベート API キースコープ - リソース種別ごとに Read/Full のきめ細かいアクセス制御
- OAuth 対応 - パートナー統合向け安全なトークンベース認証
- パブリックキー分離 - クライアントサイドキーは作成専用操作に限定
- TLS 1.2+ - すべての API 通信は転送時に暗号化
- SOC 2 Type II - Klaviyo は SOC 2 Type II 認証取得済み
- GDPR 準拠 - プロファイル削除リクエスト用 Data Privacy API