Foundations 5 min read

What Is Meta Conversions API (CAPI)? Server-Side Tracking for Facebook and Instagram Ads

Last verified: 2026-11-07

Meta Conversions API (CAPI) is a server-side event tracking interface that lets you send conversion data directly from your server to Meta’s ad platform. Unlike the Meta Pixel (which runs in the user’s browser), CAPI operates independently of cookies, ad blockers, and browser restrictions.

For The Upload Offline Conversions App (TUOCA), the Conversions API is the primary method for uploading offline conversions — booked jobs, completed services, and closed deals — to Facebook and Instagram Ads.

Why CAPI Exists

The Meta Pixel has fundamental limitations in today’s privacy landscape:

LimitationImpact
Ad blockersGWI’s April 2025 research found that about 1 in 3 internet users worldwide use an ad blocker at least sometimes (15% in North America). A blocker can stop the Pixel, so the browser never sends the event.
iOS ATTApple’s prompt asks the person to allow or refuse tracking across apps. Many people refuse.
Browser cookie restrictionsSafari ITP, Firefox ETP limit cookie lifetimes
Offline conversionsThe Pixel can’t fire for phone calls, in-person visits, or CRM events
Server-side eventsBackend processes (payment confirmations, lead qualification) can’t trigger browser JavaScript

CAPI solves all of these by moving the event transmission from the browser to the server. Your server sends events directly to Meta’s /events endpoint — no browser involvement needed.

How CAPI Works

Architecture

Traditional Pixel Flow:
  User Browser → Meta Pixel (JavaScript) → Meta Servers

CAPI Flow:
  Your Server → HTTPS POST → Meta Conversions API → Meta Servers

Combined (Recommended):
  User Browser → Meta Pixel → Meta Servers ←── Your Server → CAPI
                                    ↓
                            Deduplication via event_id

The CAPI Request

Events are sent as HTTP POST requests to Meta’s Graph API:

POST https://graph.facebook.com/v26.0/{PIXEL_ID}/events

Event Structure

{
  "data": [{
    "event_name": "Purchase",
    "event_time": 1714502400,
    "action_source": "system_generated",
    "event_id": "order_12345",
    "user_data": {
      "em": ["a8b14f04b2be6c5f..."],
      "ph": ["d4f5c3b1e72a9f8d..."],
      "fbc": "fb.1.1714000000.IwAR3x7..."
    },
    "custom_data": {
      "value": 4500.00,
      "currency": "USD"
    }
  }],
  "access_token": "YOUR_ACCESS_TOKEN"
}

Key Fields Explained

FieldRequiredPurpose
event_nameYesWhat happened (Purchase, Lead, etc.)
event_timeYesUnix timestamp of the event
action_sourceYesHow the event was generated (system_generated for offline)
event_idRecommendedUnique ID for deduplication with Pixel
user_data.emRecommendedSHA-256 hashed email(s)
user_data.phRecommendedSHA-256 hashed phone(s)
user_data.fbcOptionalFacebook click parameter (from FBCLID)
user_data.fbpOptionalFacebook browser ID (from _fbp cookie)
custom_data.valueRecommendedConversion value (revenue)
custom_data.currencyRecommendedISO 4217 currency code

Action Sources

The action_source field tells Meta how the conversion was generated:

ValueWhen to Use
websiteOnline conversion (use with Pixel deduplication)
appMobile app event
phone_callCustomer called after seeing ad
chatCustomer converted via messaging
physical_storeIn-person conversion
system_generatedServer-side processing (CRM, automated)
otherCatch-all

For TUOCA’s offline conversion uploads, system_generated is the standard action source, since conversions are detected and uploaded by TUOCA’s relay pipeline.

User Data Matching

CAPI’s effectiveness depends on the quality of user data you send. Meta matches events to ad clicks using these hashed identifiers:

IdentifierFieldMatch QualityNotes
Emailem★★★★★Highest match rates; lowercase and trim before hashing
Phoneph★★★★E.164 format before hashing
Facebook click (fbc)fbc★★★★★Best when available; 7-day window
Facebook browser (fbp)fbp★★★From _fbp cookie
First namefn★★★Lowercase before hashing
Last nameln★★★Lowercase before hashing
Cityct★★Lowercase, no special characters
Statest★★2-letter code, lowercase
Zip codezp★★First 5 digits (US)
Countrycountry★★ISO 2-letter, lowercase
External IDexternal_id★★★Your CRM’s customer ID (hashed)

All PII fields must be SHA-256 hashed before sending. Use the SHA-256 Hasher tool to verify your hashing.

Deduplication

When using both Pixel and CAPI (recommended), the same event may be reported twice. Meta deduplicates using the event_id field:

  1. Pixel fires with event_id: "order_12345"
  2. CAPI sends the same event with event_id: "order_12345"
  3. Meta recognizes the duplicate and counts it once

For offline-only conversions (TUOCA’s primary use case), deduplication isn’t an issue — there’s no Pixel event to duplicate against. However, it’s still best practice to include an event_id for idempotent retries.

CAPI Event Quality Score

Meta assigns an Event Match Quality (EMQ) score to each event, ranging from 1 (poor) to 10 (excellent). Higher scores mean better matching:

Score RangeMeaningTypical Cause
8-10Excellentfbc + email + phone + name
6-7GoodEmail + phone
4-5FairEmail only
1-3PoorNo identifiers matched

To check your EMQ: Meta Events Manager → Data Sources → Your Pixel → Event Match Quality.

How TUOCA Uses CAPI

TUOCA integrates directly with Meta’s Conversions API:

  1. OAuth authentication — Secure connection to your Meta Business account
  2. Data extraction — Pulls conversion data from your connected sources (CallRail, CRM, webhooks)
  3. PII processing — Normalizes email (lowercase, trim), phone (E.164), and name (lowercase) per Meta’s rules
  4. SHA-256 hashing — Hashes all PII fields before transmission
  5. fbc construction — Converts raw FBCLIDs to fbc format
  6. Event transmission — Sends batched events to the Conversions API
  7. Deduplication — Generates consistent event_ids to prevent duplicate reporting
  8. Error handling — Catches and logs CAPI-specific errors (invalid hash format, expired events, rate limits)

Getting Started with CAPI

  1. Create a Meta Business account and set up a Pixel
  2. Generate an access token in Events Manager → Settings → Generate Access Token
  3. Enable CAPI in Events Manager → Settings → Conversions API
  4. Configure TUOCA — Connect Meta as a destination, provide your Pixel ID and access token
  5. Send test events — Use the Events Manager Test Events tool to verify
  6. Monitor EMQ — Check your Event Match Quality score and optimize

For a complete walkthrough, see the Meta/Facebook Offline Conversions Guide.

Frequently Asked Questions

The Meta Pixel is a JavaScript snippet that runs in the user's browser and tracks online events (page views, form submissions, purchases). The Conversions API is a server-side endpoint that receives events from your server without depending on browser execution. CAPI works even when browsers block JavaScript, cookies are restricted, or the conversion happens offline. For best results, Meta recommends using both together (redundant tracking with deduplication).

Meta recommends using both together for maximum data quality. The Pixel captures real-time browser events, while CAPI captures server-side and offline events. When both fire for the same event, Meta deduplicates using the event_id parameter. For offline conversions (which TUOCA handles), CAPI is required since there's no browser event to trigger the Pixel.

At minimum: event_name, event_time, action_source, and user_data (at least one hashed identifier — email, phone, or fbc/fbp). For offline conversions, set action_source to 'system_generated'. Include custom_data with value and currency for revenue tracking. More user data fields improve match rates.

CAPI is designed to be privacy-compliant because all PII must be SHA-256 hashed before sending. Meta never receives raw email addresses or phone numbers. However, you still need appropriate consent (depending on jurisdiction) and must honor opt-out requests. CAPI data sharing is covered under Meta's Business Tools Terms.

Stop Guessing. Start Proving ROI.

TUOCA connects your CRM and call tracking data directly to your ad platforms. Set up in minutes.