Customer.io コネクター

Customer.io メッセージングプラットフォームを Brevo に接続し、統合された顧客データ、クロスプラットフォームキャンペーン連携、一元化されたエンゲージメントアナリティクスを実現します。

概要

項目
プラットフォームCustomer.io
カテゴリーマーケティング
セットアップ難易度中程度
公式統合なし
同期データピープル、イベント、キャンペーン、セグメント
利用 APITrack API、App API、Pipelines API
認証Site ID + API キー / App API キー
ベース URLtrack.customer.ioapi.customer.io

機能

  • ピープル同期 - Brevo コンタクトと顧客プロファイルを双方向同期
  • イベント転送 - 行動イベントを追跡し、Brevo のオートメーショントリガーへ転送
  • キャンペーン分析 - 統合レポートのためキャンペーンパフォーマンス指標を同期
  • ワークフローデータ - Customer.io のワークフロー状態を Brevo コンタクト属性にミラーリング
  • セグメント複製 - Customer.io のセグメントを Brevo リストとして複製
  • オブジェクトデータ同期 - 非ピープルオブジェクトとリレーションシップデータを同期

前提条件

開始する前に、以下をご用意ください。

  1. API アクセス付きの Customer.io アカウント
  2. Site ID と Track API キー (Settings > API Credentials で確認)
  3. キャンペーンとセグメントデータ読み取り用の App API キー
  4. API アクセス付きの Brevo アカウント
  5. 有効なサブスクリプションの Tajo アカウント

認証

Customer.io は認証方式の異なる 2 つの API を使用します。

Track API (行動データ)

ピープル、イベント、デバイスデータを送信するために使用します。Basic 認証で Site ID と API キーを使用します。

Terminal window
# Basic Auth: Site ID as username, API Key as password
curl -X POST https://track.customer.io/api/v1/customers/user123 \
-u "$SITE_ID:$API_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]"}'

App API (データ読み取り)

キャンペーン、セグメント、顧客データを取得するために使用します。Bearer トークンで認証します。

Terminal window
curl -X GET https://api.customer.io/v1/campaigns \
-H "Authorization: Bearer $APP_API_KEY"

API キーの分離

Track API キーと App API キーは異なる認証情報です。Track API キーはデータの書き込みに、App API キーはデータの読み取りに使用されます。完全な Tajo 統合には両方が必要です。

Tajo への接続

Terminal window
tajo connectors install customerio \
--site-id $CIO_SITE_ID \
--track-api-key $CIO_TRACK_API_KEY \
--app-api-key $CIO_APP_API_KEY

設定

基本セットアップ

connectors:
customerio:
enabled: true
region: "us" # or "eu" for EU data center
sync:
people: true
events: true
campaigns: true
segments: true
objects: false
lists:
all_contacts: 12
active_subscribers: 13
churned: 14

フィールドマッピング

Customer.io のピープル属性を Brevo コンタクト属性にマッピングします。

field_mapping:
# Standard fields
id: CIO_ID
email: email
first_name: FIRSTNAME
last_name: LASTNAME
phone: SMS
# Engagement metrics
created_at: SIGNUP_DATE
last_activity: LAST_ACTIVE
plan: PLAN_NAME
# Custom attributes
company: COMPANY
role: JOB_TITLE
mrr: MONTHLY_REVENUE
lifecycle_stage: LIFECYCLE_STAGE

イベントマッピング

event_mapping:
# Customer.io event -> Brevo event
purchase_completed: ORDER_PLACED
subscription_started: SUBSCRIPTION_START
feature_activated: FEATURE_USED
support_ticket_opened: SUPPORT_REQUEST

API エンドポイント

Tajo は以下の Customer.io API エンドポイントと連携します。

エンドポイントメソッドAPI用途
/api/v1/customers/{id}PUTTrackピープルを作成または更新
/api/v1/customers/{id}/eventsPOSTTrackピープルイベントを追跡
/api/v1/eventsPOSTTrack匿名イベントを追跡
/api/v2/entityPOSTTrackピープル/オブジェクトを作成または更新 (Pipelines)
/v1/campaignsGETAppキャンペーン一覧
/v1/campaigns/{id}/metricsGETAppキャンペーンパフォーマンス指標
/v1/segmentsGETAppセグメント一覧
/v1/segments/{id}/membershipGETAppセグメントメンバー取得
/v1/customers/{id}/attributesGETApp顧客属性取得
/v1/customers/{id}/activitiesGETApp顧客アクティビティログ取得

コード例

コネクターの初期化

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
await tajo.connectors.connect('customerio', {
siteId: process.env.CIO_SITE_ID,
trackApiKey: process.env.CIO_TRACK_API_KEY,
appApiKey: process.env.CIO_APP_API_KEY,
region: 'us'
});

ピープルを Brevo に同期

// Incremental sync of Customer.io people
await tajo.connectors.sync('customerio', {
type: 'incremental',
resources: ['people'],
since: '2024-01-01',
batchSize: 100
});
const status = await tajo.connectors.status('customerio');
console.log(status);
// {
// connected: true,
// lastSync: '2024-03-15T14:20:00Z',
// peopleCount: 32500,
// campaignsTracked: 18,
// eventsProcessed: 87000
// }

イベント転送

// Forward Customer.io reporting webhook events to Brevo
app.post('/webhooks/customerio', async (req, res) => {
const events = req.body;
for (const event of events) {
await tajo.connectors.handleEvent('customerio', {
type: event.metric,
payload: {
customerId: event.data.customer_id,
campaignId: event.data.campaign_id,
timestamp: event.timestamp
}
});
}
res.status(200).send('OK');
});

セグメントのエクスポート

const result = await tajo.connectors.exportSegment('customerio', {
segmentId: 42,
targetList: 13,
includeAttributes: ['email', 'first_name', 'last_name', 'plan']
});
console.log(`Exported ${result.count} people to Brevo list 13`);

レート制限

Customer.io は API ごとに異なるレート制限を適用します。

APIレート制限備考
Track API約 100 リクエスト/秒ワークスペース単位
App API10 リクエスト/秒API キー単位
Pipelines API100 リクエスト/秒大量データ向けに推奨
バッチエンドポイント1 リクエストあたり 1,000 ピープルペイロード最大 500KB

バッチエンドポイントの活用

大規模同期では、Tajo は Customer.io のバッチエンドポイントを使用して 1 リクエストあたり最大 1,000 ピープルを送信し、API コール数を大幅に削減します。

トラブルシューティング

よくある問題

問題原因解決策
401 UnauthorizedSite ID または API キーが無効Customer.io Settings > API で認証情報を確認
ピープルが同期されない識別子が不足各ピープルに id または email があることを確認
イベントが追跡されないAPI キーの種類が誤りイベントには App API キーではなく Track API キーを使用
EU データにアクセスできないリージョン設定が誤りEU ワークスペースではリージョンを eu に設定
レート制限エラーApp API コールが多すぎるキャンペーンデータのポーリング頻度を下げる

デバッグモード

connectors:
customerio:
debug: true
log_level: verbose
log_api_calls: true

接続テスト

Terminal window
tajo connectors test customerio
# ✓ Track API connection successful
# ✓ App API connection successful
# ✓ People accessible
# ✓ Campaigns readable
# ✓ Segments listable

ベストプラクティス

  1. 大量データには Pipelines API を使用 - 新しい Pipelines API は大量取り込みに最適化されています
  2. レポートウェブフックをセットアップ - Customer.io のメールイベントをリアルタイムで Tajo に転送
  3. ライフサイクルステージをマッピング - Customer.io のセグメントメンバーシップを Brevo 属性に同期
  4. 一貫した識別子を使用 - Customer.io と Brevo 間で id フィールドを一致させる
  5. 増分同期 - フルエクスポートは避け、last_activity タイムスタンプを活用
  6. ウェブフック配信を監視 - ウェブフック配信失敗時のアラートを設定

セキュリティ

  • Basic 認証 - Track API は Site ID と API キーで認証
  • Bearer トークン - App API は OAuth スタイルの bearer トークンを使用
  • HTTPS 限定 - すべての API 通信を TLS 1.2+ で暗号化
  • リージョナルデータセンター - GDPR 準拠のため EU データセンターオプションあり
  • 暗号化ストレージ - Tajo 内ですべての認証情報を保存時に暗号化
  • ウェブフック署名 - HMAC 署名でウェブフックペイロードを検証

関連リソース

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AIアシスタント

こんにちは!ドキュメントについて何でもお聞きください。