Meta Ads Connector
เชื่อมต่อ Meta Ads (Facebook & Instagram) กับ Brevo ผ่าน Tajo เพื่อซิงค์ Custom Audiences นำเข้าเหตุการณ์ conversion ผ่าน Conversions API และเชื่อม paid social advertising กับ lifecycle marketing automation
ภาพรวม
| คุณสมบัติ | ค่า |
|---|---|
| แพลตฟอร์ม | Meta Ads (Facebook, Instagram, Messenger, WhatsApp) |
| หมวดหมู่ | การตลาด |
| ความซับซ้อนในการตั้งค่า | สูง |
| การผสานรวมอย่างเป็นทางการ | ไม่ |
| ข้อมูลที่ซิงค์ | Audiences Conversions แคมเปญ Leads |
| Skills ที่มี | 8 |
| เวอร์ชัน API | v25.0 (Graph API) |
ฟีเจอร์
- การซิงค์ Custom Audience - อัปโหลดรายชื่อผู้ติดต่อ Brevo เป็น Meta Custom Audiences
- Conversions API (CAPI) - ส่งเหตุการณ์ conversion ฝั่ง server สำหรับการระบุแหล่งที่มาที่แม่นยำ
- การซิงค์ Lead form - นำเข้า Facebook Lead Ads submissions โดยตรงไปยัง Brevo contacts
- Campaign insights - ดึง metrics ประสิทธิภาพโฆษณาไปยัง Tajo dashboards
- Lookalike audiences - สร้าง Lookalike Audiences จาก Brevo segments ที่ซิงค์
- การซิงค์แคตาล็อก - ซิงค์แคตาล็อกสินค้าสำหรับ dynamic product ads
- หลายแพลตฟอร์ม - การผสานรวมเดียวครอบคลุมโฆษณา Facebook, Instagram, Messenger และ WhatsApp
ข้อกำหนดเบื้องต้น
ก่อนเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมี:
- บัญชี Meta Business Manager
- Facebook App ที่มีการเข้าถึง Marketing API
- System User ที่มีสิทธิ์ที่เหมาะสม
- Access Token พร้อมสิทธิ์
ads_managementและads_read - บัญชี Brevo ที่มีสิทธิ์เข้าถึง API
- บัญชี Tajo ที่มี API credentials
การยืนยันตัวตน
System User Access Token
Meta แนะนำให้ใช้ System User tokens สำหรับการผสานรวม server-to-server tokens เหล่านี้ไม่หมดอายุ
# Required permissions for System Userads_managementads_readbusiness_managementleads_retrievalpages_read_engagementcatalog_managementการยืนยันตัวตนระดับ App
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"การกำหนดค่า Custom Audience
ซิงค์รายการ Brevo ไปยัง Meta Custom Audiences:
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 Endpoints
| เมธอด | Endpoint | คำอธิบาย |
|---|---|---|
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 | ดึง campaign insights |
GET | /v25.0/{form_id}/leads | ดึงข้อมูลจาก lead form |
POST | /v25.0/act_{id}/adcreatives | สร้าง ad creatives |
GET | /v25.0/{catalog_id}/products | แสดงรายการสินค้าในแคตาล็อก |
ตัวอย่างโค้ด
เริ่มต้น Meta Ads Connector
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 }) });ซิงค์ Custom Audience จากรายการ 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'});ดึง Campaign Insights
// 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'});ขีดจำกัดอัตรา
| ทรัพยากร | ขีดจำกัด | รายละเอียด |
|---|---|---|
| Marketing API | ตามระดับ | ขึ้นอยู่กับระดับการเข้าถึง app และค่าใช้จ่าย |
| Custom Audience uploads | 700 คำขอ/ชั่วโมง | ต่อ ad account |
| Conversions API | 2,000 เหตุการณ์/วินาที | ต่อ pixel |
| Insights API | 200 calls/ชั่วโมง | ต่อ ad account |
| Lead retrieval | 200 calls/ชั่วโมง | ต่อ page |
| Batch requests | 50 คำขอ/batch | ต่อ batch call |
ต้องมีการยืนยัน Business
การเข้าถึง Marketing API แบบเต็มรูปแบบต้องการการยืนยัน business ใน Meta Business Manager Apps ที่ไม่ได้รับการยืนยันถูกจำกัดให้อยู่ใน development mode พร้อม rate limits ที่จำกัด
การแก้ไขปัญหา
| ปัญหา | สาเหตุ | วิธีแก้ |
|---|---|---|
OAuthException | Token หมดอายุหรือไม่ถูกต้อง | สร้าง System User access token ใหม่ |
| Custom Audience match rate ต่ำ | คุณภาพข้อมูลไม่ดี | Hash PII ทั้งหมดด้วย SHA-256 รวม match keys หลายตัว |
| Conversions ไม่ถูกระบุแหล่งที่มา | พารามิเตอร์ fbc/fbp หายไป | ส่ง Facebook Click ID และ Browser ID จาก cookies |
RATE_LIMIT_REACHED | การเรียก API มากเกินไป | ใช้ exponential backoff ตรวจสอบระดับการเข้าถึง API |
| Lead forms ไม่ซิงค์ | ไม่มีสิทธิ์ leads_retrieval | เพิ่มสิทธิ์ให้ System User |
| เหตุการณ์ในโหมดทดสอบ | ยังตั้งค่า test_event_code อยู่ | ลบ test event code สำหรับ production |
แนวทางปฏิบัติที่ดีที่สุด
- ใช้ System User tokens - System Users ให้ tokens ที่เสถียรและไม่หมดอายุสำหรับการผสานรวม server
- Hash PII ทั้งหมด - Hash SHA-256 ข้อมูลส่วนบุคคลทั้งหมดก่อนส่งไปยัง Meta
- ส่งทั้ง CAPI และ Pixel - ใช้ทั้ง Conversions API และ Meta Pixel สำหรับการติดตามซ้ำซ้อนพร้อม deduplication
- รวม event IDs - ตั้งค่า
event_idทั้งบน CAPI และ Pixel events เพื่อเปิดใช้งาน deduplication - ส่ง
fbcและfbp- รวม Facebook Click ID และ Browser ID เพื่อการระบุแหล่งที่มาของ conversion สูงสุด - ยืนยัน business ของคุณ - ทำการยืนยัน Business ให้สมบูรณ์เพื่อการเข้าถึง API แบบเต็มและ rate limits สูงกว่า
- ใช้
test_event_code- ทดสอบเหตุการณ์ Conversions API ใน Events Manager ก่อนเผยแพร่
ความปลอดภัย
- System User tokens - tokens การยืนยันตัวตนระดับ business ที่ไม่ใช่บุคคล
- SHA-256 hashing - PII ทั้งหมด hash ก่อนส่งไปยัง Meta servers
- App Secret Proof - ชั้นความปลอดภัยการยืนยันตัวตนเพิ่มเติมแบบเสริม
- Business scoping - สิทธิ์กำหนดขอบเขตตาม ad accounts และ pages เฉพาะ
- Meta compliance - อยู่ภายใต้ Meta Platform Terms และนโยบายโฆษณา
- Data Processing Terms - Meta Data Processing Terms ใช้สำหรับข้อมูล EU