Meta Ads コネクタ
Tajo を介して Meta Ads(Facebook と Instagram)を Brevo に接続し、カスタムオーディエンスを同期し、Conversions API 経由でコンバージョンイベントをインポートし、有料ソーシャル広告とライフサイクルマーケティング自動化をつなぎます。
概要
| プロパティ | 値 |
|---|---|
| プラットフォーム | Meta Ads(Facebook、Instagram、Messenger、WhatsApp) |
| カテゴリ | マーケティング |
| セットアップの複雑さ | 上級 |
| 公式統合 | いいえ |
| 同期データ | オーディエンス、コンバージョン、キャンペーン、リード |
| 利用可能なスキル | 8 |
| API バージョン | v25.0(Graph API) |
機能
- カスタムオーディエンス同期 - Brevo 連絡先リストを Meta カスタムオーディエンスとしてアップロード
- Conversions API(CAPI) - 正確な属性のためサーバーサイドコンバージョンイベントを送信
- リードフォーム同期 - Facebook Lead Ads の送信を Brevo 連絡先に直接インポート
- キャンペーンインサイト - 広告パフォーマンスメトリクスを Tajo ダッシュボードに取得
- 類似オーディエンス - 同期された Brevo セグメントから類似オーディエンスを作成
- カタログ同期 - ダイナミック商品広告用に商品カタログを同期
- マルチプラットフォーム - 単一統合で Facebook、Instagram、Messenger、WhatsApp 広告をカバー
前提条件
開始する前に、以下を準備してください。
- Meta Business Manager アカウント
- Marketing API アクセス権を持つ Facebook アプリ
- 適切な権限を持つシステムユーザー
ads_managementとads_read権限を持つアクセストークン- API アクセス可能な Brevo アカウント
- API 認証情報を持つ Tajo アカウント
認証
システムユーザーアクセストークン
Meta はサーバー間統合にシステムユーザートークンの使用を推奨しています。これらのトークンは期限切れになりません。
# システムユーザーに必要な権限ads_managementads_readbusiness_managementleads_retrievalpages_read_engagementcatalog_managementアプリレベル認証
curl -G "https://graph.facebook.com/v25.0/act_AD_ACCOUNT_ID/campaigns" \ -d "access_token=SYSTEM_USER_ACCESS_TOKEN" \ -d "fields=name,status,objective"設定
基本セットアップ
connectors: meta_ads: enabled: true app_id: "your-facebook-app-id" app_secret: "your-facebook-app-secret" access_token: "your-system-user-access-token" ad_account_id: "act_123456789" business_id: "987654321" pixel_id: "111222333444"
# データ同期オプション sync: custom_audiences: true conversions_api: true lead_forms: true campaign_insights: true
# API バージョン api_version: "v25.0"カスタムオーディエンス設定
Brevo リストを Meta カスタムオーディエンスに同期します。
custom_audiences: enabled: true lists: - brevo_list_id: 5 audience_name: "All Customers" subtype: "CUSTOM" - brevo_list_id: 6 audience_name: "High LTV Customers" subtype: "CUSTOM" - brevo_list_id: 7 audience_name: "Recent Purchasers" subtype: "CUSTOM"
# マッチングフィールド match_keys: - EMAIL - PHONE - FN # First name - LN # Last name - CT # City - ST # State - ZIP - COUNTRY
schedule: "daily" sync_mode: "mirror"Conversions API 設定
conversions_api: enabled: true pixel_id: "111222333444" test_event_code: "" # テスト用に設定、本番ではクリア
events: - brevo_event: "order_completed" meta_event: "Purchase" value_field: "revenue" currency_field: "currency" - brevo_event: "cart_updated" meta_event: "AddToCart" - brevo_event: "customer_created" meta_event: "Lead" - brevo_event: "page_viewed" meta_event: "ViewContent"API エンドポイント
| メソッド | エンドポイント | 説明 |
|---|---|---|
POST | /v25.0/act_{id}/customaudiences | カスタムオーディエンスを作成 |
POST | /v25.0/{audience_id}/users | カスタムオーディエンスにユーザーを追加 |
DELETE | /v25.0/{audience_id}/users | カスタムオーディエンスからユーザーを削除 |
POST | /v25.0/{pixel_id}/events | Conversions API イベントを送信 |
GET | /v25.0/act_{id}/campaigns | キャンペーンを一覧取得 |
GET | /v25.0/act_{id}/insights | キャンペーンインサイトを取得 |
GET | /v25.0/{form_id}/leads | リードフォーム送信を取得 |
POST | /v25.0/act_{id}/adcreatives | 広告クリエイティブを作成 |
GET | /v25.0/{catalog_id}/products | カタログ商品を一覧取得 |
コード例
Meta Ads コネクタの初期化
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Meta Ads アカウントを接続await tajo.connectors.connect('meta-ads', { appId: process.env.META_APP_ID, appSecret: process.env.META_APP_SECRET, accessToken: process.env.META_ACCESS_TOKEN, adAccountId: 'act_123456789', pixelId: '111222333444'});Conversions API イベントを送信
// Conversions API 経由で購入イベントを送信const response = await fetch( `https://graph.facebook.com/v25.0/${PIXEL_ID}/events`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ data: [{ event_name: 'Purchase', event_time: Math.floor(Date.now() / 1000), action_source: 'website', user_data: { ph: [hashSHA256('+15551234567')], fn: [hashSHA256('jane')], ln: [hashSHA256('kim')], client_ip_address: '192.168.1.1', client_user_agent: 'Mozilla/5.0...', fbc: 'fb.1.1234567890.AbCdEfG', // クリック ID fbp: 'fb.1.1234567890.987654321' // ブラウザ ID }, custom_data: { value: 89.99, currency: 'USD', content_ids: ['SKU-001'], content_type: 'product' } }], access_token: process.env.META_ACCESS_TOKEN }) });Brevo リストからカスタムオーディエンスを同期
// Brevo 連絡先リストを Meta カスタムオーディエンスとしてアップロードawait tajo.connectors.syncAudience('meta-ads', { brevoListId: 5, audienceName: 'High Value Customers', matchKeys: ['EMAIL', 'PHONE', 'FN', 'LN'], syncMode: 'mirror'});キャンペーンインサイトを取得
// キャンペーンパフォーマンスメトリクスを取得const insights = await tajo.connectors.query('meta-ads', { resource: 'campaigns', fields: ['campaign_name', 'impressions', 'clicks', 'spend', 'actions', 'cost_per_action_type'], dateRange: { since: '2024-01-01', until: '2024-01-31' }, level: 'campaign'});レート制限
| リソース | 制限 | 詳細 |
|---|---|---|
| Marketing API | ティアベース | アプリアクセスレベルと支出に基づく |
| カスタムオーディエンスのアップロード | 700 リクエスト/時間 | 広告アカウント単位 |
| Conversions API | 2,000 イベント/秒 | Pixel 単位 |
| Insights API | 200 呼び出し/時間 | 広告アカウント単位 |
| リード取得 | 200 呼び出し/時間 | ページ単位 |
| バッチリクエスト | 50 リクエスト/バッチ | バッチ呼び出し単位 |
ビジネス検証が必要
完全な Marketing API アクセスには Meta Business Manager でのビジネス検証が必要です。未検証のアプリは開発モードに制限され、レート制限が厳しくなります。
トラブルシューティング
| 問題 | 原因 | 解決策 |
|---|---|---|
OAuthException | トークンが期限切れまたは無効 | システムユーザーアクセストークンを再生成 |
| カスタムオーディエンスのマッチ率が低い | データ品質の低さ | すべての PII を SHA-256 でハッシュ化し、複数のマッチキーを含める |
| コンバージョンが帰属されない | fbc/fbp パラメータの欠落 | Cookie から Facebook クリック ID とブラウザ ID を渡す |
RATE_LIMIT_REACHED | API 呼び出し過多 | 指数バックオフを実装、API アクセスティアを確認 |
| リードフォームが同期されない | leads_retrieval 権限の欠落 | システムユーザーに権限を追加 |
| イベントがテストモード | test_event_code が設定されたまま | 本番用にテストイベントコードを削除 |
ベストプラクティス
- システムユーザートークンを使用する - サーバー統合に安定した非期限切れトークンを提供
- すべての PII をハッシュ化する - Meta に送信する前にすべての個人識別情報を SHA-256 でハッシュ化
- CAPI と Pixel の両方を送信する - 重複排除を使用した冗長トラッキングのために両方を使用
- イベント ID を含める - 重複排除を有効にするため CAPI と Pixel イベントの両方に
event_idを設定 fbcとfbpを渡す - 最大のコンバージョン属性のため Facebook クリック ID とブラウザ ID を含める- ビジネスを検証する - 完全な API アクセスと高いレート制限のためビジネス検証を完了
test_event_codeを使用する - 本番前に Events Manager で Conversions API イベントをテスト
セキュリティ
- システムユーザートークン - 非個人的、ビジネススコープの認証トークン
- SHA-256 ハッシュ化 - Meta サーバーへの送信前にすべての PII をハッシュ化
- App Secret Proof - 認証セキュリティのオプション追加レイヤー
- ビジネススコープ - 権限は特定の広告アカウントとページにスコープ
- Meta コンプライアンス - Meta プラットフォーム利用規約および広告ポリシーに準拠
- データ処理規約 - EU データには Meta のデータ処理規約が適用