You've double-checked everything. Your pixel is firing, your access token looks valid, and your Events Manager shows… nothing. Or worse, it shows a trickle of events with abysmal match quality scores that make your attribution data essentially useless. When Meta CAPI isn't working properly, it's rarely a single obvious problem. Instead, you're usually dealing with a frustrating combination of misconfigured parameters, server-side hiccups, and deduplication conflicts that take methodical troubleshooting to untangle.
The Conversions API was supposed to be the answer to iOS 14's privacy changes and the slow death of browser-based tracking. And when it works, it genuinely is. Server-side tracking bypasses ad blockers, survives cookie restrictions, and gives you the data accuracy that makes or breaks campaign optimization. But getting it to work properly? That's where most businesses hit a wall. I've seen companies spend weeks chasing phantom issues that turned out to be a single misplaced character in their payload. I've also seen "working" implementations that were silently dropping 40% of their conversion data because nobody thought to check the actual server response codes.
This guide walks through the most common failure points, starting with how to identify what's actually broken, then moving through server configuration, deduplication logic, data parameter optimization, and platform-specific integration issues. By the end, you'll have a systematic approach to diagnosing and fixing whatever's causing your CAPI implementation to underperform.
Identifying Common Symptoms of Meta CAPI Failure
Before you start changing settings randomly, you need to understand exactly what's broken. CAPI failures manifest in predictable ways, and recognizing the pattern tells you where to focus your troubleshooting efforts.
The most obvious symptom is missing events in Events Manager. You're sending purchase events from your server, but they're not appearing at all, or they're appearing hours late with incomplete data. Less obvious but equally damaging is when events do appear but with match quality scores below 5 or 6. These low scores mean Meta can't reliably connect your conversion data to actual users, which tanks your attribution accuracy and makes campaign optimization nearly impossible.
Another red flag is a sudden divergence between your browser pixel events and your server-side events. If your pixel shows 100 purchases but CAPI only shows 60, you've got a delivery problem. If both show 100 but Events Manager reports 150 total, you've got a deduplication problem. Either scenario corrupts your data.
Checking for Data Gaps in Events Manager
Events Manager is your first diagnostic tool. Navigate to your pixel, select the "Overview" tab, and look at your event timeline. Healthy CAPI implementations show consistent event volumes without sudden drops or gaps. If you see periods where server events disappear entirely while browser events continue, your server-side connection is failing intermittently.
Click into specific events and check the "Event Source" breakdown. You should see events coming from both "Website" (browser pixel) and "Server" (CAPI). If server events are missing entirely or showing much lower volumes, your CAPI payloads aren't reaching Meta's servers. The "Test Events" tool under Events Manager lets you send test payloads and see exactly what Meta receives, which is invaluable for isolating whether the problem is in your server code or Meta's processing.
Understanding Event Match Quality Scores
Match quality scores range from 1 to 10 and indicate how well Meta can match your conversion data to Facebook users. Scores below 6 significantly reduce your attribution accuracy. The score depends entirely on what customer data you're sending and how well it's formatted.
Check your event quality by clicking on any event type in Events Manager and viewing the "Event Matching" section. This shows you exactly which parameters are being received and matched. If you're sending email addresses but the match quality shows "Email: Poor," your hashing is probably wrong. If you're not sending phone numbers, IP addresses, or user agents at all, your match quality will suffer regardless of how well you format what you do send.
Troubleshooting Server-Side Connection Issues
When CAPI events aren't appearing at all, the problem is usually in your server-to-Meta connection. This could be authentication failures, malformed payloads, or network issues preventing your server from reaching Meta's API endpoints.
Verifying Access Token and Pixel ID Accuracy
The most common cause of complete CAPI failure is incorrect credentials. Your access token and pixel ID need to match exactly, with no trailing spaces or line breaks that can sneak in during copy-paste operations.
Generate a fresh access token from Events Manager by going to Settings and clicking "Generate Access Token." Copy it directly into your server configuration without any modifications. Then verify your pixel ID matches the pixel you're actually trying to send events to. It sounds obvious, but I've seen businesses troubleshoot for days before realizing they were sending events to a test pixel that nobody was monitoring.
Test your credentials by sending a simple test event using curl or Postman before involving your full application code. If the test event appears in Events Manager, your credentials are fine and the problem is in your application logic.
Testing Server-to-Server Payload Delivery
Your server needs to successfully POST data to Meta's Graph API endpoint. Failures here are usually network-related: firewall rules blocking outbound HTTPS connections, proxy configurations interfering with requests, or DNS resolution problems.
Check your server logs for HTTP response codes from Meta's API. A 200 response means the payload was received. A 400 means your payload is malformed. A 403 means authentication failed. A 500 means Meta's servers had an issue. If you're not logging these responses, add that logging immediately because it's essential for ongoing monitoring.
Some hosting environments restrict outbound connections by default. If you're on shared hosting or a restrictive cloud configuration, verify that your server can reach graph.facebook.com on port 443. A simple curl test from your server's command line will confirm this.
Resolving Deduplication and Event ID Errors
Deduplication is where CAPI implementations most commonly go wrong in subtle ways. When you're sending the same conversion from both the browser pixel and your server, Meta needs to know they're the same event. Without proper deduplication, you'll either double-count conversions or, paradoxically, lose conversions entirely when Meta's deduplication logic gets confused.
Matching Event IDs Between Browser and Server
Every event you send needs a unique event_id parameter that's identical between your browser pixel fire and your server-side CAPI call. This is how Meta knows "these two events are the same purchase, count it once."
The event_id must be generated at the moment the conversion happens and passed to both tracking methods. A common mistake is generating the ID on the client side and failing to pass it to your server, or generating different IDs for each. Use a UUID or a combination of order ID plus timestamp to create consistent identifiers.
Check your implementation by triggering a test conversion and comparing the event_id in your browser's network tab with the event_id in your server logs. They should be character-for-character identical.
Fixing Redundant Event Reporting
If your Events Manager shows significantly more events than your actual conversion count, deduplication isn't working. This usually means your event_ids don't match, or you're not sending event_ids at all.
Another cause is timing mismatches. If your browser pixel fires immediately on page load but your server event fires minutes later after payment processing completes, Meta might treat them as separate events even with matching IDs. Keep your event timing as close as possible, ideally within seconds of each other.
Review your total event counts in Events Manager against your actual order data. A healthy implementation should show browser events plus server events totaling close to your actual conversion count, not double it.
Optimizing Data Parameters for Better Matching
Even when your CAPI connection works and deduplication is correct, poor data quality will tank your match rates. Meta needs accurate, properly formatted customer data to connect your conversions to actual users.
Hashing Customer Information Correctly
Meta requires certain customer data parameters to be SHA-256 hashed before sending. Email addresses and phone numbers must be hashed. But the hashing must happen after proper normalization, and this is where most implementations fail.
Before hashing an email address, convert it to lowercase and trim whitespace. For phone numbers, remove all formatting characters and include the country code. Hash the normalized string, not the raw input. If you hash "John@Example.com " instead of "john@example.com", Meta won't match it even though they're the same email.
Some server-side implementations accidentally double-hash data that's already been hashed by a plugin or SDK. Check your actual payloads to confirm you're sending 64-character hexadecimal strings, not hashes of hashes.
Passing Required User-Agent and IP Data
Two parameters that dramatically improve match quality are client_user_agent and client_ip_address. These help Meta identify users even when email or phone data is unavailable.
Capture the user agent string from the original HTTP request that triggered the conversion, not your server's user agent. Similarly, capture the visitor's IP address, accounting for any proxy or load balancer headers like X-Forwarded-For.
These parameters aren't hashed. Send them as plain text strings exactly as received from the client's browser.
Fixing CMS and Partner Integration Glitches
If you're using Shopify, WordPress, or another platform with built-in CAPI integration, you're at the mercy of their implementation. These integrations handle most configuration automatically, but they also introduce platform-specific failure modes.
Updating Shopify or WordPress Plugin Settings
Shopify's native CAPI integration requires you to connect your Facebook account through the Facebook channel app. If this connection expires or loses permissions, CAPI silently stops working while your browser pixel continues firing normally.
For WordPress sites using plugins like PixelYourSite or official Meta plugins, check that the plugin version is current. Meta frequently updates their API requirements, and outdated plugins may send payloads in deprecated formats that get rejected.
Verify your plugin's CAPI settings show a "connected" status and that test events appear in Events Manager. Most plugins include a diagnostic or test mode specifically for this purpose.
Clearing Server-Side Caching Conflicts
Aggressive caching can interfere with CAPI in unexpected ways. If your server caches entire pages including the JavaScript that generates event_ids, multiple users might receive identical event_ids, breaking deduplication.
Similarly, some caching plugins cache POST requests or API responses in ways that prevent CAPI payloads from actually sending. If you're using full-page caching, object caching, or CDN-level caching, test your CAPI implementation with caching temporarily disabled to rule out conflicts.
Check that your caching configuration excludes checkout pages, thank-you pages, and any endpoints involved in CAPI payload generation.
Monitoring Long-Term CAPI Health and Performance
Fixing your CAPI implementation once isn't enough. Server configurations change, plugins update, and API requirements evolve. You need ongoing monitoring to catch problems before they corrupt weeks of attribution data.
Set up alerts for significant drops in server-side event volume. If your normal daily purchase events suddenly drop by 50%, you want to know immediately, not when you notice your ROAS calculations look wrong two weeks later.
Regularly review your Event Match Quality scores. A gradual decline might indicate that a recent code change affected your data normalization or that a third-party service you depend on changed their data format.
Document your working configuration thoroughly. When something breaks six months from now, you'll want to compare your current setup against the known-good state.
For businesses that want to skip the implementation complexity entirely, tools like Metrion handle conversion tracking and ad platform synchronization automatically. If manual CAPI troubleshooting isn't how you want to spend your time, check out Metrion for a more streamlined approach.
The key to reliable CAPI performance is treating it as infrastructure that needs maintenance, not a one-time setup task. Build monitoring into your workflow, keep your integrations updated, and you'll catch problems while they're still small enough to fix quickly.