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 账户
- 具有营销 API 访问权限的 Facebook 应用
- 具有适当权限的系统用户
- 具有
ads_management和ads_read权限的访问令牌 - 具有 API 访问权限的 Brevo 账户
- 具有 API 凭据的 Tajo 账户
认证
系统用户访问令牌
Meta 建议对服务器到服务器集成使用系统用户令牌。这些令牌不会过期。
# Required permissions for System Userads_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"
# Data sync options sync: custom_audiences: true conversions_api: true lead_forms: true campaign_insights: true
# API version 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"
# Matching fields 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: "" # Set for testing, clear for production
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});
// Connect Meta Ads accountawait 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 发送事件
// Send a purchase event via Conversions APIconst 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', // Click ID fbp: 'fb.1.1234567890.987654321' // Browser ID }, custom_data: { value: 89.99, currency: 'USD', content_ids: ['SKU-001'], content_type: 'product' } }], access_token: process.env.META_ACCESS_TOKEN }) });从 Brevo 列表同步自定义受众群体
// Upload a Brevo contact list as a Meta Custom Audienceawait tajo.connectors.syncAudience('meta-ads', { brevoListId: 5, audienceName: 'High Value Customers', matchKeys: ['EMAIL', 'PHONE', 'FN', 'LN'], syncMode: 'mirror'});拉取广告系列洞察
// Get campaign performance metricsconst 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'});速率限制
| 资源 | 限制 | 详情 |
|---|---|---|
| 营销 API | 基于层级 | 根据应用访问级别和消费额 |
| 自定义受众群体上传 | 700 请求/小时 | 每个广告账户 |
| Conversions API | 2,000 事件/秒 | 每个像素 |
| 洞察 API | 200 次调用/小时 | 每个广告账户 |
| 潜在客户检索 | 200 次调用/小时 | 每个主页 |
| 批量请求 | 每批 50 个请求 | 每次批量调用 |
需要企业验证
完整的营销 API 访问权限需要在 Meta Business Manager 中进行企业验证。未验证的应用限于开发模式,速率限制较低。
故障排除
| 问题 | 原因 | 解决方案 |
|---|---|---|
OAuthException | 令牌已过期或无效 | 重新生成系统用户访问令牌 |
| 自定义受众群体匹配率低 | 数据质量差 | 使用 SHA-256 哈希所有个人身份信息,包含多个匹配键 |
| 转化未归因 | 缺少 fbc/fbp 参数 | 从 Cookie 传递 Facebook 点击 ID 和浏览器 ID |
RATE_LIMIT_REACHED | API 调用过多 | 实施指数退避,检查 API 访问层级 |
| 潜在客户表单未同步 | 缺少 leads_retrieval 权限 | 向系统用户添加权限 |
| 事件处于测试模式 | 仍设置了 test_event_code | 生产环境移除测试事件代码 |
最佳实践
- 使用系统用户令牌 - 系统用户为服务器集成提供稳定的、不过期的令牌
- 哈希所有个人身份信息 - 发送到 Meta 之前对所有个人身份信息进行 SHA-256 哈希
- 同时发送 CAPI 和 Pixel - 同时使用 Conversions API 和 Meta Pixel 进行冗余跟踪(含去重)
- 包含事件 ID - 在 CAPI 和 Pixel 事件上设置
event_id以启用去重 - 传递
fbc和fbp- 包含 Facebook 点击 ID 和浏览器 ID,最大化转化归因 - 验证您的企业 - 完成企业验证以获得完整 API 访问权限和更高速率限制
- 使用
test_event_code- 在 Events Manager 中测试 Conversions API 事件后再上线
安全
- 系统用户令牌 - 非个人、企业范围的认证令牌
- SHA-256 哈希 - 传输到 Meta 服务器前对所有个人身份信息进行哈希
- App Secret Proof - 可选的额外认证安全层
- 企业范围 - 权限限定在特定广告账户和主页范围内
- Meta 合规 - 遵守 Meta 平台条款和广告政策
- 数据处理条款 - 欧盟数据适用 Meta 数据处理条款