顧客同期
顧客同期
eコマースプラットフォームからBrevoコンタクトへ顧客データを自動的に同期します。このスキルにより、Brevoコンタクトリストが常に現在の顧客ベースを反映します。
概要
| プロパティ | 値 |
|---|---|
| カテゴリ | データ同期 |
| ステータス | Stable |
| バージョン | 2.1 |
| トリガー | customer_created, customer_updated, customer_deleted |
| アクション | コンタクト作成、コンタクト更新、コンタクト削除 |
仕組み
graph LR A[E-commerce Platform] -->|Customer Event| B[Customer Sync Skill] B -->|Map Data| C[Field Mapping] C -->|API Call| D[Brevo Contacts API] D -->|Success| E[Contact Updated] D -->|Error| F[Retry Queue]- イベント検知: プラットフォームの顧客ライフサイクルイベントをリッスンします
- データマッピング: プラットフォームのフィールドをBrevoコンタクト属性にマッピングします
- API同期: Brevo API経由でコンタクトを作成、更新、削除します
- エラーハンドリング: 失敗した操作を指数バックオフで再試行します
設定
基本セットアップ
skills: customer-sync: enabled: true source: shopify # or woocommerce, magento, custom
# Map platform fields to Brevo attributes field_mapping: email: email firstName: FIRSTNAME lastName: LASTNAME phone: SMS
# Sync options options: sync_mode: realtime # or batch delete_behavior: soft # or hard list_id: 5 # Add to this listフィールドマッピング
プラットフォームの顧客フィールドをBrevoコンタクト属性にマッピングします。
デフォルトのフィールドマッピング
| Parameter | Type | Description |
|---|---|---|
email required | string | 顧客のメールアドレス。Brevo内で一意の識別子として使用されます。 |
firstName optional | string | 顧客の名(ファーストネーム)。FIRSTNAME属性にマッピングされます。 |
lastName optional | string | 顧客の姓(ラストネーム)。LASTNAME属性にマッピングされます。 |
phone optional | string | E.164形式の電話番号。WhatsApp/SMS用にSMS属性にマッピングされます。 |
acceptsMarketing optional | boolean | マーケティングのオプトイン状況。メール購読ステータスを制御します。 |
カスタム属性
eコマースデータ用のカスタム属性マッピングを追加します。
field_mapping: # Standard fields email: email firstName: FIRSTNAME
# Custom e-commerce attributes totalOrders: TOTAL_ORDERS totalSpent: TOTAL_SPENT lastOrderDate: LAST_ORDER_DATE customerTier: CUSTOMER_TIER tags: TAGSTip
最初に属性を作成: カスタム属性は同期する前にBrevoで作成しておく必要があります。BrevoのダッシュボードまたはAPIで作成してください。
トリガー
customer_created
プラットフォームに新しい顧客が作成されると発火します。
{ "event": "customer_created", "timestamp": "2024-01-15T10:30:00Z", "data": { "id": "cust_12345", "firstName": "Jane", "lastName": "Smith", "phone": "+1234567890", "acceptsMarketing": true, "createdAt": "2024-01-15T10:30:00Z" }}customer_updated
顧客情報が変更されたときに発火します。
{ "event": "customer_updated", "timestamp": "2024-01-15T14:45:00Z", "data": { "id": "cust_12345", "changes": { "phone": { "old": null, "new": "+1234567890" } } }}customer_deleted
プラットフォームから顧客が削除されたときに発火します。
{ "event": "customer_deleted", "timestamp": "2024-01-15T16:00:00Z", "data": { "id": "cust_12345", "deletedAt": "2024-01-15T16:00:00Z" }}アクション
コンタクト作成
顧客が作成されたときにBrevoで新しいコンタクトを作成します。
/v3/contacts Brevoアカウントに新しいコンタクトを作成します
Query Parameters
| Parameter | Description |
|---|---|
| email string required | コンタクトのメールアドレス |
| attributes object optional | コンタクトの属性 |
| listIds array optional | コンタクトを追加するリストID |
| updateEnabled boolean optional | コンタクトが既に存在する場合に更新する
Default: false |
Responses
コンタクト更新
顧客データが変更されたときに既存のコンタクトを更新します。
/v3/contacts/{identifier} 既存のコンタクトの属性を更新します
Path Parameters
| Parameter | Description |
|---|---|
| identifier string required | メールアドレスまたはコンタクトID |
Query Parameters
| Parameter | Description |
|---|---|
| attributes object optional | 更新する属性 |
| listIds array optional | コンタクトを追加するリスト |
| unlinkListIds array optional | コンタクトを削除するリスト |
Responses
コンタクト削除
顧客が削除されたときにコンタクトを削除します。
/v3/contacts/{identifier} Brevoからコンタクトを完全に削除します
Path Parameters
| Parameter | Description |
|---|---|
| identifier string required | メールアドレスまたはコンタクトID |
Responses
コード例
JavaScript (Node.js)
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Enable customer sync skillawait tajo.skills.enable('customer-sync', { source: 'shopify', fieldMapping: { email: 'email', firstName: 'FIRSTNAME', lastName: 'LASTNAME', totalOrders: 'TOTAL_ORDERS', totalSpent: 'TOTAL_SPENT' }, options: { syncMode: 'realtime', listId: 5 }});
// Manually trigger a syncawait tajo.skills.trigger('customer-sync', { event: 'customer_created', data: { firstName: 'Jane', lastName: 'Smith' }});Python
from tajo import TajoClient
tajo = TajoClient( api_key=os.environ['TAJO_API_KEY'], brevo_api_key=os.environ['BREVO_API_KEY'])
# Enable customer sync skilltajo.skills.enable('customer-sync', { 'source': 'woocommerce', 'field_mapping': { 'email': 'email', 'first_name': 'FIRSTNAME', 'last_name': 'LASTNAME', 'total_orders': 'TOTAL_ORDERS' }, 'options': { 'sync_mode': 'realtime', 'list_id': 5 }})
# Manually trigger a synctajo.skills.trigger('customer-sync', { 'event': 'customer_updated', 'data': { 'total_orders': 10, 'total_spent': 1250.00 }})モニタリング
同期ステータスダッシュボード
Tajoダッシュボードで同期パフォーマンスを監視します。
- 同期成功率: 同期が成功した割合
- 平均レイテンシ: イベントからBrevo更新までの時間
- エラー率: 同期の失敗回数
- キュー長: 保留中の同期オペレーション数
Webhook通知
同期イベントの通知を受け取ります。
notifications: webhook_url: https://your-app.com/webhooks/tajo events: - sync_completed - sync_failed - batch_completedトラブルシューティング
よくある問題
コンタクトが既に存在します (409)
設定でupdateEnabled: trueを有効にすると、既存コンタクトが失敗せずに更新されます。
| エラー | 原因 | 解決方法 |
|---|---|---|
Contact already exists | メールアドレスのコンタクトが存在する | updateEnabled: trueを有効にする |
Invalid attribute | 属性がBrevoに存在しない | 先にBrevoで属性を作成する |
Rate limit exceeded | APIリクエストが多すぎる | バッチ同期モードを使用する |
Invalid email format | メールアドレスが不正な形式 | 同期前にメールを検証する |
デバッグモード
トラブルシューティング用にデバッグログを有効にします。
skills: customer-sync: debug: true log_level: verbose関連スキル
次のステップ
- プラットフォーム向けにフィールドマッピングを設定します
- Brevoでカスタム属性をセットアップします
- 即時更新のためにリアルタイム同期を有効にします