Troubleshooting Guide

Meta CAPI Offline Events Setup: Step-by-Step Guide

Meta's pixel fires when someone visits your website. It misses everything that happens offline: calls, bookings, payments, and closed deals. Meta CAPI lets you send those events server-side. Here's how to set it up.

4 causes explainedExact fixes for eachAutomated solution included
30-40%
Events pixel can miss
9
Standard event types
10 min
Setup with ConversionLoop
0
Developer needed

Key Takeaways

1

Meta pixel fires client-side — it's blocked by ad blockers, iOS privacy settings, and can't track offline events.

2

Meta CAPI sends events server-side, bypassing browser restrictions and covering offline revenue events.

3

You need a Pixel ID and a CAPI access token from Meta Events Manager to get started.

4

Events need at minimum: event name, event time, and at least one customer identifier (email, phone, fbclid).

5

Deduplicate against pixel events using an event ID to avoid double-counting.

1

Setup step 1: Get your Pixel ID and CAPI token

You need two things from Meta Business Suite: your Pixel ID (found in Events Manager > Data Sources > your pixel > Settings) and a CAPI access token (Events Manager > your pixel > Settings > Generate access token).

Fix: In Meta Events Manager, open your pixel, go to Settings, and copy your Pixel ID. Scroll down to Conversions API, click Generate Access Token, and copy it. Keep the token private — treat it like a password.
2

Setup step 2: Identify your offline event sources

Offline events come from your CRM, booking software, or payment processor — not from your website. You need to identify where the event lives and what data is available (email, phone, fbclid) when it fires.

Fix: Map out your conversion points: form submission, call booked, invoice paid, deal closed. For each, identify what data your CRM/booking platform has and where it fires a webhook or API event.
3

Setup step 3: Send events with correct formatting

Meta CAPI has specific requirements: SHA-256 hashed email/phone (lowercase, no spaces before hashing), event_time as Unix timestamp, event_source_url, and action_source. Missing or incorrectly formatted fields lower your Event Match Quality score.

Fix: Use a tool that handles hashing and formatting automatically. ConversionLoop normalizes and hashes all contact data before sending to CAPI, so your match quality stays high without manual formatting.
4

Setup step 4: Deduplicate against pixel events

If you run both a Meta pixel and CAPI, the same event (like a form submission) might be tracked twice — once by the pixel client-side and once by your server-side CAPI call. Meta counts both and inflates your conversion totals.

Fix: Include an event_id in every CAPI event. Use the same event_id in your pixel's fbq() call for the same event. Meta deduplicates using this ID. ConversionLoop handles deduplication automatically.

Manual upload vs. ConversionLoop

Why the manual process breaks at scale — and what changes with automation

Feature
Manual CSV
ConversionLoop
iOS 14+ coverage
Pixel blocked on ~30% of iOS
Server-side — unblockable
Offline event support
Pixel can't track offline
Any webhook source
Email/phone hashing
Manual SHA-256 required
Automatic before send
Event deduplication
Manual event_id required
Automatic
Setup complexity
Developer + API work
10 minutes — no code

The manual CAPI setup approach

Manually setting up CAPI requires making POST requests to graph.facebook.com/v19.0/{pixel_id}/events with a correctly formatted JSON payload. The hashing, the event structure, the deduplication logic, and the token management all have to be handled in custom code.

Setting up Meta CAPI without code

ConversionLoop accepts webhooks from your CRM or booking software and forwards correctly formatted events to Meta CAPI automatically. You supply your Pixel ID and token — ConversionLoop handles everything else: hashing, event structure, dedup, and error handling.

Stop diagnosing. Start tracking.

ConversionLoop handles GCLID capture, upload formatting, and delivery automatically. Set it up once.

Start free trial

Verifying CAPI events are reaching Meta

In Meta Events Manager, go to your pixel and open the Test Events tab. Send a test event through ConversionLoop and watch it appear within seconds. Production events appear in the Activity view within a few minutes of firing.

Frequently asked questions

Do I need to remove the Meta pixel if I use CAPI?

No. The recommended setup is to run both the pixel and CAPI together. The pixel fires client-side for faster attribution. CAPI fills in the events the pixel misses. Deduplication keeps counts accurate.

What event names should I use for offline events?

Use Meta's standard event names where possible: Lead for a qualified lead, Schedule for an appointment booked, Purchase for a paid invoice or closed deal. Custom event names work but don't benefit from Meta's built-in optimization for standard events.

Never debug offline conversions again

Automated GCLID capture, real-time upload, and full error diagnostics. Every conversion, every time.

Start free — 14 days on us

No credit card required · No developer needed · Cancel anytime