Meta Ads-connector
Verbind Meta Ads (Facebook & Instagram) met Brevo via Tajo om Custom Audiences te synchroniseren, conversie-events te importeren via de Conversions API en betaalde social advertising te koppelen aan lifecycle marketingautomatisering.
Overzicht
| Eigenschap | Waarde |
|---|---|
| Platform | Meta Ads (Facebook, Instagram, Messenger, WhatsApp) |
| Categorie | Marketing |
| Setupcomplexiteit | Geavanceerd |
| Officiële integratie | Nee |
| Gesynchroniseerde data | Audiences, Conversies, Campaigns, Leads |
| Beschikbare skills | 8 |
| API-versie | v25.0 (Graph API) |
Functies
- Custom Audience-synchronisatie - Upload Brevo-contactlijsten als Meta Custom Audiences
- Conversions API (CAPI) - Verstuur server-side conversie-events voor accurate attributie
- Lead form-synchronisatie - Importeer Facebook Lead Ads-inzendingen rechtstreeks in Brevo-contacten
- Campaign-insights - Haal advertentieprestatiemetrics op in Tajo-dashboards
- Lookalike audiences - Maak Lookalike Audiences vanuit gesynchroniseerde Brevo-segmenten
- Catalog-synchronisatie - Synchroniseer productcatalogi voor dynamic product ads
- Multi-platform - Eén integratie dekt Facebook-, Instagram-, Messenger- en WhatsApp-advertenties
Vereisten
Voordat je begint, zorg dat je beschikt over:
- Een Meta Business Manager-account
- Een Facebook App met Marketing API-toegang
- Een System User met passende rechten
- Een Access Token met
ads_management- enads_read-rechten - Een Brevo-account met API-toegang
- Een Tajo-account met API-credentials
Authenticatie
System User Access Token
Meta raadt aan om System User-tokens te gebruiken voor server-to-server-integraties. Deze tokens vervallen niet.
# Required permissions for System Userads_managementads_readbusiness_managementleads_retrievalpages_read_engagementcatalog_managementApp-niveau-authenticatie
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"Configuratie
Basisinstelling
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-configuratie
Synchroniseer Brevo-lijsten naar 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-configuratie
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
| Method | Endpoint | Beschrijving |
|---|---|---|
POST | /v25.0/act_{id}/customaudiences | Een Custom Audience aanmaken |
POST | /v25.0/{audience_id}/users | Gebruikers toevoegen aan Custom Audience |
DELETE | /v25.0/{audience_id}/users | Gebruikers verwijderen uit Custom Audience |
POST | /v25.0/{pixel_id}/events | Conversions API-events versturen |
GET | /v25.0/act_{id}/campaigns | Campaigns opvragen |
GET | /v25.0/act_{id}/insights | Campaign-insights ophalen |
GET | /v25.0/{form_id}/leads | Lead form-inzendingen ophalen |
POST | /v25.0/act_{id}/adcreatives | Ad creatives aanmaken |
GET | /v25.0/{catalog_id}/products | Catalogusproducten opvragen |
Codevoorbeelden
Meta Ads-connector initialiseren
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-events versturen
// 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 synchroniseren vanuit Brevo-lijst
// 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 ophalen
// 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'});Rate limits
| Resource | Limiet | Details |
|---|---|---|
| Marketing API | Tier-gebaseerd | Op basis van app-toegangsniveau en uitgaven |
| Custom Audience-uploads | 700 requests/uur | Per ad account |
| Conversions API | 2.000 events/sec | Per pixel |
| Insights API | 200 calls/uur | Per ad account |
| Lead-ophalen | 200 calls/uur | Per pagina |
| Batch requests | 50 requests/batch | Per batch-call |
Bedrijfsverificatie vereist
Volledige Marketing API-toegang vereist bedrijfsverificatie in Meta Business Manager. Niet-geverifieerde apps zijn beperkt tot development mode met beperkte rate limits.
Probleemoplossing
| Probleem | Oorzaak | Oplossing |
|---|---|---|
OAuthException | Token verlopen of ongeldig | Regenereer System User access token |
| Lage Custom Audience match rate | Slechte datakwaliteit | Hash alle PII met SHA-256, gebruik meerdere match keys |
| Conversies niet geattribueerd | Ontbrekende fbc/fbp-parameters | Geef Facebook Click ID en Browser ID door uit cookies |
RATE_LIMIT_REACHED | Te veel API-calls | Implementeer exponentiële backoff, controleer API-toegangstier |
| Lead forms niet gesynchroniseerd | Ontbrekend leads_retrieval-recht | Voeg recht toe aan System User |
| Events in test mode | test_event_code nog gezet | Verwijder test event code voor productie |
Best practices
- Gebruik System User-tokens - System Users bieden stabiele, niet-vervallende tokens voor server-integraties
- Hash alle PII - SHA-256 alle persoonlijk identificeerbare informatie hashen voordat je deze naar Meta stuurt
- Verstuur zowel CAPI als Pixel - Gebruik zowel Conversions API als Meta Pixel voor redundante tracking met deduplicatie
- Voeg event-ID’s toe - Stel
event_idin op zowel CAPI- als Pixel-events om deduplicatie mogelijk te maken - Geef
fbcenfbpdoor - Voeg Facebook Click ID en Browser ID toe voor maximale conversie-attributie - Verifieer je bedrijf - Voltooi Business Verification voor volledige API-toegang en hogere rate limits
- Gebruik
test_event_code- Test Conversions API-events in Events Manager voordat je live gaat
Beveiliging
- System User-tokens - Niet-persoonlijke, business-gescoopte authenticatietokens
- SHA-256-hashing - Alle PII gehasht voordat het naar Meta-servers wordt gestuurd
- App Secret Proof - Optionele extra laag van authenticatiebeveiliging
- Business-scoping - Rechten gescoped op specifieke ad accounts en pagina’s
- Meta-compliance - Onderworpen aan Meta Platform Terms en advertentiebeleid
- Data Processing Terms - Meta’s Data Processing Terms gelden voor EU-data