Install
openclaw skills install meta-ads-capi-setup[Didoo AI] Step-by-step guide for setting up Meta Conversions API (CAPI) — server-side event tracking that improves conversion measurement accuracy and reduces CPA discrepancy vs pixel-only tracking. Use when setting up tracking for a new account or when CPA shown in Meta Ads Manager is significantly higher than actual leads/sales.
openclaw skills install meta-ads-capi-setup| Credential | Where to Get | Used For |
|---|---|---|
| META_ACCESS_TOKEN | Meta Developer Console → Graph API Explorer → Generate Token | All Meta Marketing API calls |
| META_PIXEL_ID | Meta Events Manager → select your Pixel → copy Pixel ID | Identifying which pixel to configure |
Token note: The System User access token (generated in Business Settings) is the primary credential for CAPI API calls. You still need a registered Meta App (App ID) to set up the CAPI integration in Events Manager — the App ID is required when creating the System User and configuring token permissions. Make sure the token includes these scopes:
ads_management,business_management,pages_read_engagement.
When setting up tracking for a new account, or when CPA shown in Meta Ads Manager is significantly higher than actual leads/sales (indicating a tracking gap). CAPI is especially critical for lead generation campaigns where offline conversions are the true business outcome.
Together: Pixel + CAPI gives Meta the most complete picture → better optimization → lower CPA over time.
If you're not using CAPI, you're likely overpaying for every lead. The gap can be 20–50% depending on industry and browser mix.
Before setting up CAPI, you need:
Use your e-commerce platform's built-in Meta integration. This is the easiest path:
| Platform | How to Connect |
|---|---|
| Shopify | Shopify Admin → Sales Channels → Meta |
| WooCommerce | Plugins → Meta for WooCommerce |
| Other platforms | Check Meta's partner directory at meta.com/partners |
Steps (native integration):
Only use these if you are a developer or using a platform without native Meta integration.
| Method | Best For | Complexity |
|---|---|---|
| Google Tag Manager Server-Side | Teams already using GTM | Medium |
| Zapier / Make.com | No-code teams, non-standard tech stacks | Medium |
| Meta Conversions API via Meta Business Manager | Simple server events without developer resources | Low |
| Direct API Integration | Developers building custom infrastructure | High |
For Direct API: use your META_ACCESS_TOKEN to send events to https://graph.facebook.com/v21.0/{pixel_id}/events.
ads_management, business_management, pages_read_engagement| Event | Recommended For |
|---|---|
| PageView | All campaigns — helps Meta build audience |
| ViewContent | E-commerce product pages |
| AddToCart | E-commerce |
| Purchase | E-commerce (critical — this is your conversion event) |
| Lead | Lead generation (critical — matches your optimization goal) |
| CompleteRegistration | Webinar, courses, freemium signups |
| Contact | Local service businesses |
In Meta Events Manager:
What to verify:
Event parameters that improve CAPI quality:
In Meta Events Manager, check:
Matching Quality benchmarks:
Meta's predefined event names: Lead, Purchase, PageView, ViewContent, AddToCart, InitiateCheckout, CompleteRegistration. Better optimization because Meta knows exactly what the event means.
Use only when no standard event fits. Define custom name and parameters yourself. Required for: offline sales, phone calls, specific business workflows.
| Issue | Likely Cause | Fix |
|---|---|---|
| CAPI events not appearing in Meta | Token expired or permissions wrong | Regenerate access token with correct permissions |
| Huge gap between pixel and CAPI volumes | CAPI not connected properly | Check Events Manager → CAPI status |
| CPA artificially high in Meta | CAPI not sending offline conversions (lead gen) | Verify Lead event is firing server-side |
| Events marked as "Unmatched" | User data not being passed correctly | Ensure email/phone is hashed before sending |
| Duplicate events (double counting) | Both pixel and CAPI firing without deduplication | Pass event_id in both pixel and CAPI calls |
For lead gen campaigns, the conversion happens offline — someone fills out a form, you call them, they sign up. Meta pixel can't see this.
What CAPI must send for lead gen:
CRM Integrations that support CAPI for leads: HubSpot, Salesforce, Zapier, Make.com.
If you're not sending offline lead data back to Meta: Meta is optimizing for form submissions only. You're paying for leads that never convert.
When both Pixel and CAPI send the same event (same event_id), Meta deduplicates automatically. Requirements: