Server-side Meta Conversions API (CAPI) is the recommended path for reporting conversions to Meta on any store that has been eroded by iOS 14.5, ad-blockers, or Shopify's checkout upgrade. This guide walks the exact setup on a Shopify (Basic or Plus) store, the verification steps inside Meta Events Manager, and how the PixelProof scanner confirms your CAPI path is healthy.
Step 1: Generate a CAPI access token in Events Manager
Open Meta Events Manager at business.facebook.com/events_manager2, select the dataset (pixel) attached to your ad account, then open Settings and scroll to Conversions API. Click "Generate access token" and store the token in a secret manager or your Shopify store's secret env, never in front-end code. Meta's own Conversions API reference on developers.facebook.com documents the exact token scope and the recommended rotation cadence (rotate at least every 90 days, sooner if an engineer with access leaves).
Step 2: Choose an integration path
You have three integration paths, in ascending order of control. The first is Shopify's built-in Facebook & Instagram sales channel, which flips a server-side CAPI connection on with one toggle but gives you zero visibility into which events are sent and no way to add server-side context. The second is a partner middleware like Elevar or Stape that ships a Shopify Web Pixel plus a server-side worker, useful if you want fast setup with dedupe already handled. The third is a custom Shopify Function or App Bridge worker that fires the Conversions API POST directly documented on developers.facebook.com from your storefront's server, giving you full control over the payload, event_id, and enrichment fields. Whichever path you pick, follow Shopify's Web Pixels API guide on shopify.dev so the browser side is not accidentally double-firing the same event from an old theme.liquid include.
Step 3: Send your first server-side test event
Post a Purchase event with a synthetic event_id and test_event_code (the code is visible in Events Manager under Test Events). The payload must include event_name, event_time, event_source_url, and hashed user_data (email SHA-256, phone SHA-256, client_ip_address, client_user_agent). If any of the user_data fields are missing, Meta's Event Match Quality score drops and the event will match fewer people. Verify the event appears within a few minutes on the Test Events tab.
Step 4: Add event_id for deduplication
Meta dedupes a browser-side event and a server-side event that share the same event_id and fire within a 48-hour window. Your browser pixel should emit an event_id (a UUID, one per checkout) and your CAPI POST must include the exact same event_id. Without dedupe, Purchase events double-count and your reported CPA drops artificially by ~50%.
Step 5: Verify with the PixelProof scan
Run a scan on your storefront from the PixelProof product page. The scanner surfaces a meta-capi-connected info finding when it detects the CAPI path from your Events Manager metadata. A warning-severity capi-not-detected finding means the browser pixel is alone on the checkout, review the setup and re-scan. Full finding reference is in understanding your PixelProof scan results.
Related articles
FAQ
Do I still need the browser pixel if CAPI is set up? Yes. Browser + server together, deduped by event_id, gives Meta both real-time front-end signal and the reliable server-verified conversion. Meta's own conversions API best practices on developers.facebook.com recommend keeping both.
What Event Match Quality score should I aim for? 7.0 or higher on Purchase events. Below 6.0, ad optimization noticeably degrades. Add hashed email + phone + client_ip + user_agent to every payload.
How long until Meta's Events Manager reflects my CAPI events? Test Events appear within ~2 minutes. Diagnostics for production events lag by 20 minutes to 24 hours depending on volume.
Still stuck? Email support@digitalempireholdings.com or support@digitalempireholdings.com.