Meta Conversions API (CAPI) sends conversion events from your server to Meta — recovering data lost to ad blockers, iOS App Tracking Transparency, and browser cookie restrictions. This guide covers setup, deduplication with the Pixel, and Nepal-specific tracking workflows.

CAPI dictionary · Meta Ads benchmarks Nepal · Facebook Ads Nepal

Why CAPI matters in 2026

Problem CAPI solution
iOS 14.5+ limits Pixel Server-side events bypass ATT for matched users
Ad blockers Server requests not blocked by browser extensions
Cookie expiry Server can send hashed PII for matching
COD / offline sales Import confirmed orders via API

Without CAPI, Meta Ads Manager under-reports conversions → smart bidding optimizes toward wrong signals → ROAS looks worse than reality.

Meta Conversions API (CAPI) Setup Guide (2026): Pixel + Server-Side Tracking

Architecture: Pixel + CAPI together

User converts on site
    ├── Browser: Meta Pixel fires (event_id: abc123)
    └── Server: CAPI sends same event (event_id: abc123)
              → Meta deduplicates → counts once

Required: identical event_name and event_id on both paths.

Setup route 1: WooCommerce (fastest for Nepal e-commerce)

  1. Install Facebook for WooCommerce plugin (official Meta plugin)
  2. Connect Meta Business Manager + ad account
  3. Enable Conversions API in plugin settings (checkbox)
  4. Verify in Events Manager → Test Events
  5. Mark Purchase as conversion event in Ads Manager

Nepal tip: Map NPR currency correctly. Confirm Purchase fires on order status “Processing” or “Completed” — not on abandoned checkout.

Setup route 2: Google Tag Manager (flexible)

Client-side (web container)

  1. Meta Pixel template or custom HTML tag
  2. Fire on conversion pages with event_id generated in Data Layer:
    dataLayer.push({
      event: 'purchase',
      event_id: 'order_' + orderId,
      value: orderTotal,
      currency: 'NPR',
    });
    

Server-side (server container)

  1. Deploy GTM server container (Cloud Run, Stape, or similar)
  2. Configure Meta CAPI client in server container
  3. Pass hashed em (email), ph (phone), external_id from Data Layer
  4. Map event_id from client tag to server tag

Server-Side Tracking · GA4 + GTM recipes

Setup route 3: Direct API / n8n automation

For CRM-led businesses (consultancies, B2B):

  1. On form submit → webhook to n8n
  2. n8n HTTP node → Meta Graph API /events
  3. Send Purchase or Lead with hashed PII

n8n Meta API integration

Event Match Quality (EMQ)

Meta scores 0–10 how well events match user accounts. Improve EMQ by sending:

Parameter Format Source
em SHA-256 hashed email Checkout / form
ph SHA-256 hashed phone (E.164) Checkout / form
fn, ln SHA-256 hashed name Optional
external_id Your customer ID CRM / user ID
client_ip_address Plain (not hashed) Server
client_user_agent Plain Server

Target EMQ 6.0+ for reliable optimization.

Standard events to implement

Event When Priority
PageView Every page Auto (Pixel)
ViewContent Product page High
AddToCart Add to cart High
InitiateCheckout Checkout start High
Purchase Order confirmed Critical
Lead Form submit Critical (B2B)

Nepal COD workflow

  1. Fire InitiateCheckout on checkout start (Pixel + CAPI)
  2. Fire Purchase only on confirmed delivery or payment received — not on order placed
  3. Weekly batch: upload confirmed COD orders via Offline Conversions or CAPI bulk import
  4. Use unique event_id per order to prevent duplicates

Testing checklist

  • Events Manager → Test Events shows Pixel events
  • Events Manager shows Server events with same event_id
  • Deduplication working (not double-counting)
  • EMQ score ≥ 6.0 on Purchase/Lead
  • Ads Manager conversions match backend within 10–20%

Common mistakes

  1. CAPI without deduplication — inflated conversion counts break bidding
  2. Purchase on order placed, not confirmed — COD inflates ROAS
  3. No hashed email/phone — low EMQ, poor matching
  4. Only Pixel in 2026 — losing 20–40% of events on mobile