You're staring at your Facebook Ads Manager, and something doesn't add up. Your website shows 47 purchases yesterday, but Facebook is only reporting 12 conversions. Sound familiar? You can't track Facebook conversions properly, and it's costing you money—not just in lost data, but in wasted ad spend on campaigns you can't accurately measure.
This disconnect between reality and reported data has become increasingly common since iOS 14.5 privacy changes, browser tracking restrictions, and ad blockers became widespread. When your conversion tracking breaks down, Facebook's algorithm can't optimize properly, your cost per acquisition metrics become unreliable, and scaling decisions turn into educated guesses at best.
The good news: most Facebook conversion tracking issues stem from a handful of common causes, and they're fixable. This guide walks you through a systematic troubleshooting process to identify exactly where your tracking is breaking down and how to restore accurate conversion data.
Whether you're dealing with a misconfigured pixel, domain verification issues, or the broader challenges of cross-device tracking, you'll have a clear path forward by the end of this guide.
Before you start fixing anything, you need to understand exactly what's broken. Think of this like a doctor running tests before prescribing treatment—you need a diagnosis first.
Start by opening Facebook Events Manager and checking your pixel firing status. Navigate to the Data Sources section and select your pixel. Look at the Activity tab to see if events are firing at all, and check the timestamp of the most recent activity. If you're seeing a complete absence of events or a significant time gap, that's your first red flag.
Next, run a comparison across your data sources. Pull conversion numbers from three places: Facebook Ads Manager, Google Analytics (or your analytics platform), and your actual backend system or CRM. Write these numbers down side by side for the same date range—preferably the last 7 days for a meaningful sample size.
Here's what the gaps tell you: A 10-20% discrepancy between Facebook and your backend is unfortunately normal in the post-iOS 14 world. Different attribution windows and tracking limitations mean perfect alignment is nearly impossible. But if Facebook is reporting 50% or fewer conversions than your backend shows, you've got a technical problem that needs immediate attention. Understanding Facebook Ads reporting discrepancies can help you interpret these gaps more effectively.
Now click into the Diagnostics tab in Events Manager. This is where Facebook tells you exactly what's wrong—if they can detect it. Look for error messages about misconfigured events, missing parameters, or domain verification issues. Common warnings include "Event Parameter Mismatch" or "Low Event Match Quality," both of which we'll address in later steps.
Document everything you find. Take screenshots of your current conversion counts, note any error messages, and record your Event Match Quality score. This baseline gives you a way to measure whether your fixes are actually working. Too many marketers skip this step and then can't tell if their troubleshooting made any difference.
One more diagnostic check: look at your conversion delay reporting in Events Manager. If you're seeing conversions attributed to dates several days in the past, that's not necessarily a tracking failure—it's Facebook's delayed attribution catching up as they match conversions to ad interactions. However, if delays exceed 72 hours consistently, it suggests your tracking setup needs optimization.
Now that you know where the problem lives, let's check the foundation: your pixel installation. This is where most tracking issues actually originate, and it's surprisingly easy to get wrong.
Install the Facebook Pixel Helper browser extension for Chrome. This free tool from Facebook shows you exactly which pixels are firing on any page you visit, along with any errors or warnings. Navigate to your website's homepage with Pixel Helper active, and you should see your pixel ID appear in green with a checkmark.
Click through your entire conversion funnel: homepage, product pages, cart, checkout, and thank you page. The pixel should fire on every single page. If Pixel Helper shows red or yellow warnings, click into the details—it'll tell you exactly what's misconfigured. For a deeper dive into pixel setup, check out our guide on Facebook pixel tracking.
Open your website's source code (right-click anywhere and select "View Page Source") and search for "fbq('init'". Your base pixel code should appear in the header section of every page, ideally as high up as possible. The code should look like this: fbq('init', 'YOUR_PIXEL_ID'). If you find multiple instances of the same pixel, that's actually okay—redundancy won't break tracking, though it's not ideal for performance.
Next, verify your standard events are configured correctly. The most critical events are Purchase, Lead, AddToCart, InitiateCheckout, and ViewContent. Each event should fire on the appropriate page: Purchase on your order confirmation page, Lead on your form thank-you page, and so on.
Check that your Purchase event includes the required parameters: value and currency. These should be dynamic, pulling the actual purchase amount from your order data. A Purchase event without value data is nearly useless—Facebook can't optimize for revenue if it doesn't know how much each conversion is worth.
Here's a critical detail many marketers miss: your currency code must be a three-letter ISO code (USD, EUR, GBP). If you're passing "dollars" or "$", Facebook won't recognize it, and your conversion values won't track properly.
Now test everything yourself. Complete a test purchase or lead submission on your website. Within a few minutes, check the Test Events section in Events Manager—you should see your test conversion appear with all the correct parameters. If it doesn't show up, or if parameters are missing, you've found your problem.
Pay special attention to the event_source_url parameter. This tells Facebook which page the event fired from, and it's essential for proper attribution. If this parameter is missing or shows incorrect URLs, your events might fire but won't attribute correctly to your ads. If your Facebook pixel is missing conversions, this is often the culprit.
Domain verification isn't optional anymore—it's a requirement for iOS 14+ conversion tracking. Without it, Facebook severely limits the data you can collect from Apple users, which likely represents a significant portion of your audience.
Navigate to Business Settings in your Facebook Business Manager, then click Brand Safety and select Domains. Click the blue "Add" button and enter your website domain (without https:// or www). Facebook will present you with three verification methods: adding a DNS TXT record, uploading an HTML file to your server, or adding a meta tag to your website's header.
The DNS TXT record method is generally the most reliable and doesn't require touching your website code. Copy the TXT record Facebook provides, log into your domain registrar or DNS provider (like Cloudflare, GoDaddy, or wherever you manage your domain), and add a new TXT record with the value Facebook gave you. DNS changes can take up to 48 hours to propagate, though they usually happen within a few hours.
Once your domain shows as verified (you'll see a green checkmark), you can move to the next critical step: configuring Aggregated Event Measurement. This is Facebook's solution to iOS 14+ privacy restrictions, and it's mandatory for tracking conversions from Apple users. Our guide on post iOS14 Facebook advertising strategies covers this in more detail.
Go to Events Manager, select your pixel, and click the "Aggregated Event Measurement" section. You'll see a list where you can configure up to 8 conversion events. This limit is hard—Facebook will only report the highest-priority event per user within a 7-day window for iOS 14+ traffic.
Rank your events carefully by business importance. Most e-commerce businesses should prioritize: 1. Purchase, 2. InitiateCheckout, 3. AddToCart, 4. ViewContent, and then any custom events that matter to your business. For lead generation businesses, put your primary Lead event first, followed by any secondary conversion actions.
Here's why this matters: if someone views a product, adds it to cart, and then purchases—all within 7 days—Facebook will only report the Purchase event for iOS 14+ users because it's ranked highest. This is by design, not a bug, but it means your funnel metrics will look different than they did before iOS 14.
After configuring your events, click "Submit for Review." Facebook typically approves these changes quickly, but any modifications to your event configuration require a new review. Changes take effect immediately for web traffic, but there's a 72-hour delay for iOS 14+ attribution to stabilize after any adjustments.
One important note: if you're running multiple domains under the same ad account, you need to verify and configure events for each domain separately. Many agencies miss this when managing multiple client websites from a single Business Manager.
If you've completed the previous steps and you're still seeing significant conversion gaps, the issue is likely the fundamental limitation of browser-based tracking. This is where the Conversions API becomes essential.
Here's the reality: browser-only tracking misses conversions. Ad blockers remove your pixel code before it can fire. Safari's Intelligent Tracking Prevention deletes cookies after 7 days. Users who research on mobile but purchase on desktop create cross-device journeys that browser pixels can't connect. Privacy-focused browsers like Brave block tracking by default.
The Conversions API (CAPI) solves this by sending conversion data directly from your server to Facebook, bypassing the browser entirely. When someone completes a purchase on your website, your server sends that conversion event to Facebook with the customer's information, even if their browser blocked the pixel. Learn more about how to sync conversion data to Facebook Ads for optimal results.
There are three main ways to implement CAPI: direct integration through Facebook's API (requires developer resources), using a partner platform that handles it for you (like Shopify, WooCommerce with plugins, or dedicated attribution tools), or through a gateway solution that sits between your systems and Facebook.
For most businesses, a partner platform or attribution solution is the practical choice. Direct API integration gives you maximum control but requires ongoing maintenance as Facebook updates their API. Partner platforms handle the technical complexity and keep your integration updated automatically.
When setting up CAPI, you must configure event deduplication to prevent double-counting. Here's what happens without it: your browser pixel fires and sends a Purchase event to Facebook. Then your server sends the same Purchase event through CAPI. Facebook counts two conversions when only one happened.
Deduplication works by passing an identical event_id parameter in both your pixel event and your CAPI event. Facebook recognizes the matching ID and only counts the conversion once. Your event_id should be unique per conversion—typically your order ID or a generated UUID that both your pixel and server can access.
The required parameters for CAPI events include: event_name (like "Purchase"), event_time (Unix timestamp of when the conversion happened), user_data (customer identifiers we'll discuss in the next step), and event_source_url (the page where the conversion occurred). Custom data like value and currency are technically optional but essential for proper optimization.
After implementing CAPI, use Facebook's Test Events tool to verify everything works. Send a test conversion through your server, and it should appear in Test Events within seconds. Check that all parameters are passing correctly, especially the user_data fields that enable Facebook to match the conversion to the right person. Understanding conversion sync for Facebook Ads will help you troubleshoot any issues.
One critical point: CAPI isn't a replacement for your pixel—it's a complement. The pixel still captures valuable data like browsing behavior and enables features like dynamic ads. The ideal setup uses both pixel and CAPI together with proper deduplication, giving Facebook multiple data sources to work with.
You can send all the conversion data you want to Facebook, but if they can't match those conversions to actual Facebook users, your attribution stays broken. This is where Event Match Quality becomes critical.
Event Match Quality (EMQ) is Facebook's score for how well they can connect your conversion events to people on their platform. You'll find your EMQ score in Events Manager under each event—it's rated as Poor, Okay, Good, or Great. Aim for Good or Great to maximize attribution accuracy. Our detailed guide on Facebook Event Match Quality explains how to optimize this score.
The score is based entirely on the customer data parameters you send with each event. The more identifiers you provide, the better Facebook can match. The most valuable parameters are email address and phone number, followed by first name, last name, city, state, zip code, country, date of birth, and gender.
Here's the key: all customer data must be hashed using SHA-256 before sending to Facebook. This is a one-way encryption that protects customer privacy while still allowing Facebook to match the data to their user profiles. Most modern implementations handle this automatically, but if you're doing a custom integration, you need to hash every parameter on your server before sending.
To improve your EMQ score, start by passing email addresses with every conversion event. If you're running an e-commerce site, you collect email at checkout—make sure that email gets passed to both your pixel and CAPI. For lead generation, you're already collecting email in your form, so include it in your Lead event data.
Phone numbers are the second most valuable identifier. If you collect phone numbers, pass them in the international format without spaces or special characters (like +1234567890). Facebook can match phone numbers even if users didn't provide them to Facebook directly, thanks to data partnerships and reverse lookups.
Don't stop at email and phone. Pass every customer data point you have: names, address components, everything. Each additional parameter increases match probability. A conversion event with just an email might match 60% of the time, but adding phone, name, city, and zip could push that to 85%+.
Enable Advanced Matching on your Facebook pixel. This feature automatically captures email addresses and phone numbers from form fields on your website and includes them with pixel events. You enable it by adding a single parameter to your pixel initialization code: fbq('init', 'YOUR_PIXEL_ID', { em: 'email', ph: 'phone' }).
Monitor your EMQ improvements over 7-14 days. Facebook needs time to process the enhanced data and update your score. You should see your score improve and, more importantly, see your attributed conversion count increase as Facebook successfully matches more events to users who clicked your ads.
One warning: never send unhashed personal data to Facebook through browser-side code. All customer data must be hashed before it reaches the browser. Server-side implementations through CAPI are more secure because the hashing happens on your server before data ever leaves your infrastructure.
Even with perfect pixel implementation, domain verification, CAPI, and high Event Match Quality, you'll still face attribution gaps. The reason: Facebook's default attribution model doesn't capture the full customer journey, especially for longer sales cycles or cross-device behavior.
Facebook's standard attribution window is 7-day click and 1-day view. This means if someone clicks your ad on Monday and purchases on the following Tuesday (8 days later), Facebook won't attribute that conversion to your ad. For businesses with longer consideration periods—B2B services, high-ticket items, complex products—this window misses significant conversions. Understanding Facebook Ads attribution issues helps you work around these limitations.
Cross-device tracking presents another challenge. Someone sees your ad on their phone during their morning commute, researches your product on their work computer during lunch, and finally purchases on their home laptop that evening. Unless they're logged into Facebook on all three devices, Facebook struggles to connect these touchpoints into a single customer journey.
The platform does its best with cross-device attribution when users are logged in, but the reality is that many conversion paths remain invisible to Facebook's native tracking. You see this in the data: your backend shows the purchase happened, but Facebook shows no attributed conversion because they couldn't connect the dots. If you can't track customer journey accurately, you're making optimization decisions with incomplete data.
Implement UTM parameters consistently across all your Facebook campaigns as a backup tracking layer. Use a standardized naming convention: utm_source=facebook, utm_medium=paid, utm_campaign=[campaign_name], utm_content=[ad_set], utm_term=[ad_id]. When Facebook's attribution fails, your analytics platform can still tell you which campaigns drove traffic that eventually converted.
UTM tracking isn't perfect either—it only captures the last click, and users can clear cookies or switch devices—but it provides a secondary data source for validation. If Facebook reports 50 conversions but your analytics shows 80 conversions from Facebook UTM parameters, you know there's a 30-conversion attribution gap.
For businesses serious about accurate attribution, third-party attribution solutions that connect ad clicks to CRM conversions provide the complete picture. These platforms track conversions across multiple ad platforms and capture the entire customer journey from initial ad click through final purchase, even when that journey spans multiple devices, sessions, and days.
Cometly's server-side tracking captures conversions that browser-based tracking misses by connecting your ad platforms directly to your CRM and backend systems. When someone clicks your Facebook ad, Cometly tracks that click with a unique identifier. When that person later converts—regardless of device, browser, or how much time has passed—Cometly matches the conversion back to the original ad click and feeds that data back to Facebook's algorithm.
This closed-loop attribution accomplishes two things: first, you see the true ROI of your Facebook campaigns because you're capturing conversions that Facebook's native tracking missed. Second, by feeding accurate conversion data back to Facebook through the Conversions API, you improve Facebook's algorithm optimization. The platform makes better decisions about who to target and how to bid when it has complete conversion data instead of partial visibility.
The attribution gap isn't going away—privacy regulations and browser restrictions will only get stricter. The businesses that win are the ones who build tracking infrastructure that works despite these limitations, not around them.
Getting Facebook conversion tracking right isn't a one-time fix—it's an ongoing process of monitoring, testing, and adapting to platform changes. Use this checklist to verify your setup is solid:
✓ Pixel fires correctly on all pages with accurate event parameters
✓ Domain is verified and 8 priority events are configured in Aggregated Event Measurement
✓ Conversions API is implemented with proper event deduplication
✓ Event Match Quality score is Good or Great with hashed customer data
✓ You have a system for tracking conversions that Facebook misses
If you're still seeing significant gaps after completing these steps, the issue likely lies in the fundamental limitations of platform-native tracking. Browser restrictions, cross-device journeys, and attribution window constraints mean Facebook's built-in tracking simply can't capture every conversion, no matter how perfectly configured.
Many marketers find that connecting their ad platforms directly to their CRM through a dedicated attribution solution provides the complete picture they need. This approach captures every touchpoint across the customer journey and feeds accurate Facebook conversion tracking data back to improve campaign optimization. When Facebook's algorithm knows which ads actually drive revenue—not just which ads drove clicks that happened to convert within the attribution window—it can scale your campaigns more effectively.
The difference between guessing and knowing which campaigns work is the difference between wasting budget and scaling profitably. Accurate attribution isn't a nice-to-have anymore—it's the foundation of performance marketing.
Ready to elevate your marketing game with precision and confidence? Discover how Cometly's AI-driven recommendations can transform your ad strategy—Get your free demo today and start capturing every touchpoint to maximize your conversions.
Learn how Cometly can help you pinpoint channels driving revenue.
Network with the top performance marketers in the industry