Meta Ads 커넥터
Tajo를 통해 Meta Ads(Facebook & Instagram)를 Brevo에 연결하여 Custom Audience를 동기화하고, Conversions API를 통해 전환 이벤트를 가져오며, 유료 소셜 광고와 라이프사이클 마케팅 자동화를 연결하십시오.
개요
| 속성 | 값 |
|---|---|
| 플랫폼 | Meta Ads (Facebook, Instagram, Messenger, WhatsApp) |
| 카테고리 | Marketing |
| 설정 복잡도 | 고급 |
| 공식 통합 | 아니오 |
| 동기화 데이터 | 오디언스, 전환, 캠페인, 리드 |
| 사용 가능한 스킬 | 8 |
| API 버전 | v25.0 (Graph API) |
기능
- Custom Audience 동기화 - Brevo 연락처 목록을 Meta Custom Audience로 업로드
- Conversions API (CAPI) - 정확한 귀속을 위해 서버 측 전환 이벤트 전송
- 리드 폼 동기화 - Facebook 리드 광고 제출을 Brevo 연락처로 직접 가져오기
- 캠페인 인사이트 - Tajo 대시보드로 광고 성능 지표 가져오기
- Lookalike 오디언스 - 동기화된 Brevo 세그먼트에서 Lookalike 오디언스 생성
- 카탈로그 동기화 - 동적 제품 광고용 제품 카탈로그 동기화
- 멀티 플랫폼 - 단일 통합으로 Facebook, Instagram, Messenger, WhatsApp 광고 커버
사전 요구 사항
시작하기 전에 다음이 준비되어 있는지 확인하십시오.
- Meta Business Manager 계정
- Marketing API 접근 권한이 있는 Facebook 앱
- 적절한 권한이 있는 System User
ads_management및ads_read권한이 있는 액세스 토큰- API 접근이 가능한 Brevo 계정
- API 자격 증명이 있는 Tajo 계정
인증
System User 액세스 토큰
Meta는 서버-서버 통합에 System User 토큰 사용을 권장합니다. 이러한 토큰은 만료되지 않습니다.
# System User에 필요한 권한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"Custom Audience 구성
Brevo 목록을 Meta Custom Audience로 동기화합니다.
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 # 이름 - LN # 성 - CT # 도시 - ST # 주 - 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 | Custom Audience 생성 |
POST | /v25.0/{audience_id}/users | Custom Audience에 사용자 추가 |
DELETE | /v25.0/{audience_id}/users | Custom Audience에서 사용자 제거 |
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', // 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 목록에서 Custom Audience 동기화
// Brevo 연락처 목록을 Meta Custom Audience로 업로드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 | 티어 기반 | 앱 접근 수준 및 지출 기반 |
| Custom Audience 업로드 | 시간당 700 요청 | 광고 계정당 |
| Conversions API | 2,000 이벤트/초 | Pixel당 |
| Insights API | 시간당 200 호출 | 광고 계정당 |
| 리드 가져오기 | 시간당 200 호출 | 페이지당 |
| 배치 요청 | 배치당 50 요청 | 배치 호출당 |
비즈니스 검증 필수
전체 Marketing API 접근에는 Meta Business Manager에서 비즈니스 검증이 필요합니다. 검증되지 않은 앱은 속도 제한이 제한된 개발 모드로 제한됩니다.
문제 해결
| 문제 | 원인 | 해결 방법 |
|---|---|---|
OAuthException | 토큰 만료되거나 잘못됨 | System User 액세스 토큰 재생성 |
| 낮은 Custom Audience 매칭률 | 낮은 데이터 품질 | 모든 PII를 SHA-256으로 해시, 여러 매칭 키 포함 |
| 전환이 귀속되지 않음 | fbc/fbp 매개변수 누락 | 쿠키에서 Facebook Click ID 및 Browser ID 전달 |
RATE_LIMIT_REACHED | API 호출이 너무 많음 | 지수 백오프 구현, API 접근 티어 확인 |
| 리드 폼이 동기화되지 않음 | leads_retrieval 권한 누락 | System User에 권한 추가 |
| 테스트 모드의 이벤트 | test_event_code가 여전히 설정됨 | 프로덕션에서 테스트 이벤트 코드 제거 |
모범 사례
- System User 토큰 사용 - System User는 서버 통합에 안정적이고 만료되지 않는 토큰 제공
- 모든 PII 해시 - Meta로 전송하기 전에 모든 개인 식별 정보를 SHA-256으로 해시
- CAPI와 Pixel 모두 전송 - 중복 제거를 포함한 중복 추적에 Conversions API와 Meta Pixel 모두 사용
- 이벤트 ID 포함 - 중복 제거를 활성화하려면 CAPI와 Pixel 이벤트 모두에
event_id설정 fbc및fbp전달 - 최대 전환 귀속을 위해 Facebook Click ID 및 Browser ID 포함- 비즈니스 검증 - 전체 API 접근 및 더 높은 속도 제한을 위해 비즈니스 검증 완료
test_event_code사용 - 라이브로 전환하기 전에 Events Manager에서 Conversions API 이벤트 테스트
보안
- System User 토큰 - 비개인적이며 비즈니스 범위의 인증 토큰
- SHA-256 해시 - Meta 서버로 전송하기 전에 모든 PII 해시
- App Secret Proof - 선택적 추가 인증 보안 계층
- 비즈니스 범위 지정 - 특정 광고 계정 및 페이지로 권한 범위 지정
- Meta 규정 준수 - Meta 플랫폼 약관 및 광고 정책 적용
- 데이터 처리 약관 - EU 데이터에 Meta의 데이터 처리 약관 적용