Key Takeaways

  • A platform lead is a claim made by the ad platform; a CRM lead is a record of a person. Expect them to differ and reconcile them deliberately rather than arguing about which is ‘right’.
  • Compare records, not totals. Match on lead ID, click ID (gclid, fbclid, li_fat_id) or hashed email and sort every mismatch into a bucket with a known cause.
  • Over-reporting usually comes from duplicate firing, Google conversion actions counting ‘Every’, view-through and modelled credit, and multiple platforms claiming the same person.
  • Under-reporting usually comes from consent and ad blockers, redirects that strip click IDs, calls and WhatsApp conversations nobody measures, and lead-form leads that never sync to the CRM.
  • Meta instant-form and LinkedIn Lead Gen Form data is only downloadable for 90 days, so a broken sync can lose leads permanently.
  • The lasting fix is to send CRM outcomes back to each platform — qualified leads and closed deals — so the algorithm optimises for the leads sales actually wants.

The Short Answer: The Platform Counts Claims, Your CRM Counts People

When a founder or marketing head tells us “the leads in Ads Manager don't match the CRM”, they usually assume one of the two systems is broken. Sometimes one is. More often both are working exactly as designed and are simply answering different questions. The ad platform answers: “How many conversion events can my ads take credit for, under my attribution rules, in this date range?” The CRM answers: “How many distinct people entered our database, from which source, on which day?” Those two questions overlap a great deal, but they are not the same question, and the gap between them has a structure you can measure.

On the platform side, a ‘lead’ is a conversion event. It might be a Lead event from a pixel or tag on a thank-you page, a server event from a Conversions API, a native form submission inside Facebook, Instagram or LinkedIn, or a Google conversion action triggered by a call or form. That event is then attributed to an ad only if it happened inside an attribution window after a click or view, and it is usually dated to the day of the ad interaction, not the day the form was filled. Some events are counted more than once. Some are estimated by modelling rather than observed. And every platform evaluates its own ads in isolation, so three platforms can each claim the same person.

On the CRM side, a ‘lead’ is a record — ideally one per human — created when data arrives through a form integration, an import, a sales rep or an automation. The CRM does not know about attribution windows, does not see view-through credit, and records the date the record was created. It also contains leads the platforms never saw: people who clicked an ad, then phoned; people who came back a week later through organic search; people a rep added by hand from a WhatsApp chat.

So the right goal is not to make the numbers identical. It is to understand every unit of difference, fix the parts that are genuine errors, and build a reporting layer where marketing and sales look at the same reconciled figure. The rest of this guide shows how, platform by platform, for lead-generation campaigns specifically. If you run e-commerce or other purchase-optimised campaigns, the causes and fixes differ enough that we cover them separately in why ad platform sales and ROAS don't match your store revenue.

Step Zero: Decide What “Actual Leads” Means in Your Business

Most reconciliation projects fail before they start because nobody has defined the number they are reconciling to. ‘Actual leads’ might mean every record created in the CRM with a paid source, only records with a valid phone number, only records that were not duplicates of existing contacts, or only leads that sales accepted. Each definition produces a different total, and each is legitimate for a different purpose. Pick one primary definition, write it down and get sales and marketing to agree on it before you touch a dashboard.

We recommend defining a short ladder of lead stages that both teams can see, because the gap between platform numbers and business reality is rarely just about raw counts. A company can have perfect tracking, with every form fill counted exactly once, and still be furious with its ad results because forty percent of those leads are students, competitors, wrong numbers or people outside the service area. Reconciling counts and fixing quality are different problems; you need to know which one you have.

StageDefinition we useWho owns itTypical use
Raw leadAny form, call or chat submission recorded anywhereMarketingTracking health checks
Unique leadRaw lead after removing duplicates of the same person within 30 daysMarketing opsReconciliation against platforms
Valid leadUnique lead with reachable contact details, not spam, not a testMarketing opsCost per valid lead
Qualified lead (MQL/SQL)Valid lead that meets agreed criteria — budget, location, need, timingSalesOptimisation signal back to platforms
Opportunity / dealQualified lead with an active sales process or booked meetingSalesPipeline value per channel
Won customerClosed revenueFinanceCustomer acquisition cost and payback

For the reconciliation in this guide, the number you compare to the platforms is the **unique lead** count, because that is the closest like-for-like match to what a platform event represents. Valid and qualified counts come later, when you decide what to send back to the platforms as optimisation signals. Keeping these separate prevents a common mistake: blaming tracking for what is really a targeting or form-design problem, or blaming targeting for what is really a tracking problem.

How Meta, Google and LinkedIn Each Count a Lead

Before diagnosing anything, you need to know the counting rules of each platform, because each one makes different default choices. The table below summarises the behaviours that matter most for reconciliation; the paragraphs after it explain the traps.

BehaviourMeta AdsGoogle AdsLinkedIn Ads
Native form optionInstant forms (Lead ads)Lead form assetsLead Gen Forms
Website lead trackingPixel + Conversions API (Lead or custom event)Google tag / GA4 import / offline importInsight Tag + Conversions API
Default attribution7-day click, 1-day view (1-day view the only view option since Jan 2026)Data-driven attribution, click-based; windows set per conversion action30-day click, 7-day view by default
Which date a conversion is reported onDate of the ad impression or clickDate of the ad click (separate ‘by conv. time’ columns use conversion date)Date of the ad interaction
Counting duplicatesDeduplicates pixel and server events only when event IDs match‘Every’ or ‘One’ per conversion actionPer conversion rule; native forms count submissions
Lead data retention for native forms90 days to downloadLead form data via download or webhook; integration recommended90 days, then deleted

**Meta.** If you run instant forms, Ads Manager counts a lead when the form is submitted inside Facebook or Instagram. That is the cleanest count Meta produces, because no pixel is involved — but the lead only reaches your CRM if an integration, webhook or manual download moves it there, and leads older than 90 days cannot be downloaded at all. If you send traffic to a website, Meta counts Lead events from the pixel and Conversions API that fall inside your attribution setting. Since January 2026, measurement vendors have widely reported that only the 1-day view window remains alongside click windows, and since March 2026 Meta counts only link clicks as click-through. We explain those changes in detail in Meta conversions dropped after the 2026 attribution changes. For reconciliation, the key point is that Meta reports a conversion against the day of the ad impression or click, so yesterday's numbers keep growing for days as late conversions are backfilled.

**Google.** Google Ads counts whatever conversion actions you mark as primary in the “Conversions” column, and any secondary actions in “All conv.”. Each action has a counting setting: Google's own guidance says “One” is best for leads, because only one conversion per ad click is likely to add value, and “Every” is best for sales. Website actions can be left on “Every”, which means a person who submits two forms after one click becomes two leads in Google Ads and one in your CRM. Google also attributes conversions to the click date by default; the separate “(by conv. time)” columns, added in 2019, date them to when the conversion happened, which usually aligns better with a CRM. Where users decline consent, Google may add modelled conversions, so some of the reported total is an estimate rather than an observed event.

**LinkedIn.** LinkedIn's API documentation sets the default post-click window at 30 days and view-through at 7 days, adjustable to 1, 7, 30 or 90. For B2B, the 7-day view-through credit is significant: a buyer who saw a sponsored post, did not click, and filled your website form a few days later will appear as a LinkedIn conversion even though your CRM shows ‘organic’ or ‘direct’. Lead Gen Form submissions are counted natively, but LinkedIn keeps lead data for only 90 days before deleting it, so the same sync risk applies as with Meta.

Why the Platform Shows More Leads Than Your CRM

When the platform total is higher than your unique CRM leads, the cause is one of seven things. In our audits, the first three account for most of the gap in most accounts, but you should check all of them because they stack.

1. **Duplicate firing.** The Lead event fires twice for one submission: on form submit and again on the thank-you page; twice because the tag exists in both the site code and Google Tag Manager; again when someone refreshes or bookmarks the thank-you page; or once from the browser pixel and once from the Conversions API without a shared event ID, so Meta cannot deduplicate them. Our guide to fixing CAPI duplicate events walks through the event ID mechanics. 2. **“Every” counting in Google Ads.** As above: a lead action set to count every conversion records repeat submissions from the same click. Check every primary lead action in Goals → Conversions → Summary. 3. **View-through and engage-through credit.** People who saw an ad but did not click, and later converted through another route, are counted as platform conversions. Your CRM credits them to whichever source captured them — often organic, direct or another paid channel. 4. **Several platforms claiming the same person.** A prospect clicks a Meta ad on Monday, a Google search ad on Wednesday and fills your form on Thursday. Meta and Google both count a conversion. Add LinkedIn view-through and you have three platform leads for one CRM record. Summing platform totals is never a valid way to count leads. 5. **Modelled conversions.** Google's consent-mode modelling and Meta's statistical modelling for opted-out users add estimated conversions that have no individual record behind them. 6. **Spam, bots and test submissions.** Form spam often fires the conversion event before your CRM's validation rejects it, and agencies or developers testing the form create real-looking leads that someone later deletes from the CRM. 7. **Leads that never synced.** Native form leads that the platform counted but your CRM never received because an integration failed. This looks like over-reporting but is really data loss — and the most urgent item on the list.

The important lesson is that some of these are measurement artefacts you should simply understand (view-through, multi-platform claims, modelling), while others are genuine errors you must fix (duplicate firing, ‘Every’ counting on lead actions, failed syncs). Treating them alike leads to bad decisions: switching off a campaign because its numbers look ‘inflated’ when the inflation is a tag firing twice, or trusting a cost per lead that is half what it really is.

Why the Platform Shows Fewer Leads Than Your CRM

The opposite gap is just as common, particularly for businesses whose buyers phone, message or take weeks to decide. When the CRM has more paid-sourced leads than the platforms report, look for these causes.

- **Consent and ad blockers.** In regions where consent banners are enforced, people who decline marketing cookies may not fire your pixel or tag at all. Browser tracking protection and ad blockers remove more. Server-side events through Meta's Conversions API, LinkedIn's Conversions API and Google's enhanced conversions recover some of this, provided consent rules allow it. - **Click IDs stripped by redirects.** Link shorteners, tracking redirects, booking tools on another domain, or a landing page that redirects to a ‘clean’ URL can drop gclid, fbclid or li_fat_id parameters. The lead arrives, but neither the platform nor your CRM can tie it back to the click. - **Untracked channels.** A large share of high-intent leads in India, the UAE and many service businesses arrive by phone or WhatsApp, and in B2B through ‘book a demo’ tools embedded from another domain. If those are not measured as conversions, the CRM has leads the platforms never see. - **Attribution windows shorter than the buying cycle.** If someone clicks your ad, thinks for twelve days and submits a form, Meta's 7-day click window will not credit it. Your CRM will, if you captured the original source. - **Missing tags on new pages.** A new landing page or form builder launched without the tag. This is depressingly common after redesigns. - **Lead forms counted under a different action.** Leads from a native Google lead form asset, a call extension or a LinkedIn form may be tracked as separate conversion actions that are not included in the column you are reading.

The CRM can also over-attribute to paid. If your CRM assigns source based on the first UTM it ever saw, a person who clicked one ad two months ago and then came back through organic search will still be labelled ‘paid’. That is not wrong — it is first-touch attribution — but it means the CRM and platforms are using different attribution models, and you must compare like with like. We explain the trade-offs in first-click vs last-click attribution.

Same Totals, Different Days: Date and Time-Zone Mismatches

A frequent and confusing pattern is that the monthly totals roughly agree but the daily or weekly numbers never do. This is almost always about dates, not tracking.

Meta reports a conversion on the date of the impression or click that earned the credit, so a lead submitted on 3 October from a click on 29 September appears in September's numbers in Ads Manager. Google's standard columns do the same with the click date. Your CRM records the lead on 3 October. Run a weekly report in each system and they will disagree every week, even with perfect tracking. Google offers “(by conv. time)” columns that date conversions to when they happened; Meta's reporting stays anchored to the ad interaction, so you should allow for the lag in your process rather than expect the numbers to align day by day.

Time zones add another layer. Each ad account has a time zone set when it was created, often defaulting to the creator's location or to Pacific Time. If your Meta account runs on Pacific Time, your Google account on India Standard Time and your CRM on UTC, a lead submitted at 9 pm in Mumbai can land on three different dates. For businesses in India, the UAE and Australia the offset from US time zones is large enough to shift a meaningful share of leads across day boundaries.

Finally, platforms backfill. Late conversions, delayed server events and modelled estimates arrive over the following days, so the last three to seven days of any report are incomplete. Pixel-tracking vendors commonly advise ending report windows several days before today for this reason. For reconciliation, always use a closed period at least seven days old — for example, the first fourteen days of last month — never ‘last 7 days’.

Lead Form Sync Failures: The Leads You Paid For and Never Received

If you run Meta instant forms or LinkedIn Lead Gen Forms, check this before anything else, because it is the one cause that loses money permanently. A native form lead lives on the platform until something moves it to your CRM. If that integration fails silently — an expired access token, a page role removed when an employee left, a changed form field breaking a mapping, a paused automation, a webhook that started returning errors — the platform keeps counting leads while your CRM stops receiving them.

Meta makes instant-form leads downloadable for 90 days from submission, through Ads Manager, the Instant Forms page or Leads Center in Meta Business Suite. LinkedIn states that it deletes lead data after 90 days. Ads Manager will still show older leads in the Results column, but you cannot retrieve their details. That means a sync that broke in July and was discovered in October has already lost some leads forever. Every week of delay costs another week of leads.

The test is simple and takes ten minutes. Download the leads for one form for the last 30 days from the platform. Export CRM records created from that form for the same period. Compare counts, then compare lead IDs or emails. Any lead in the platform download but not in the CRM is a sync failure. If you find any, fix the integration, then backfill the missing leads manually from the download and route them to sales immediately — a lead that waited three weeks is cold, but it is not worthless. Our guide to solving lead capture and CRM database leakage covers durable integration patterns.

To prevent recurrence: use a direct, supported integration or a webhook you control rather than a chain of no-code steps; store the platform lead ID on every CRM record; and set an alert that fires if no leads arrive from a live campaign within a set number of hours. If Google lead form assets are part of your mix, they need the same treatment through a webhook or a supported CRM integration.

How to Reconcile One Month in About an Hour

Once you know the possible causes, reconciliation is a mechanical exercise. The principle is to compare records, not totals. Totals tell you there is a gap; records tell you what the gap is made of. Here is the procedure we use when we start working with a new account.

1. **Pick a closed window.** Choose 14 days that ended at least 7 days ago, so late conversions have arrived. Note each system's time zone. 2. **Export the platform side at the most granular level available.** Native form leads can be downloaded with lead IDs. For website conversions, export conversions by day, campaign and conversion action. If your site passes event IDs, keep them. 3. **Export the CRM side.** All records created in the window, with created date and time, source, UTM fields, click IDs (gclid, fbclid, li_fat_id) if captured, platform lead ID if available, email, phone and lifecycle stage. 4. **Deduplicate the CRM export** by email and phone to get unique leads, and mark spam and tests. 5. **Match.** For native form leads, match on lead ID. For website leads, match on click ID where you have it, otherwise on hashed email or phone, otherwise on timestamp within a few minutes plus campaign UTM. 6. **Sort every unmatched item into a bucket** using the table in the next section. 7. **Quantify.** Calculate what share of the gap each bucket explains. You are finished when the unexplained residual is small enough that it does not change a decision — in practice a few percent.

Use a spreadsheet for the first pass; it is fast and it forces you to look at the data. When the method settles, automate it in a warehouse or reporting tool so it runs monthly. What matters is that the method stays the same each month, so a change in the gap means something changed in the account.

Expect the first reconciliation to be uncomfortable. It is normal to discover a tag firing twice, a form missing its hidden fields and an integration that drops a fraction of leads — all at once. That is the point of the exercise. Fix the errors in the order of how many leads they affect, re-run the reconciliation a month later and the gap will narrow to the parts that are genuinely about attribution.

Mismatch Diagnosis Table: Symptom, Cause, Fix

Use this table to classify each bucket from your reconciliation. It lists the patterns we see most in lead-generation accounts across Meta, Google and LinkedIn.

What you seeMost likely causeHow to confirmFix
Platform leads roughly 2× CRM leadsEvent firing twiceTag Assistant / Meta Pixel Helper on a test submission; Events Manager shows duplicate eventsFire once; share event_id between pixel and CAPI
Google ‘Conversions’ above CRM, others fineLead action counting ‘Every’Goals → Conversions → action settingsSwitch lead actions to ‘One’
Platform leads with no CRM record, native formsSync failurePlatform download vs CRM on lead IDRepair integration, backfill, add alerting
Sum of platforms far above CRM, each platform plausibleMulti-platform claims, view-throughMatched records show multiple click IDs per personReport de-duplicated leads from CRM; use platform numbers for optimisation only
CRM paid leads above platform totalConsent, blockers, stripped click IDsShare of CRM paid leads with UTM but no click IDServer-side events, enhanced conversions, preserve parameters through redirects
Calls/WhatsApp leads missing from platformsChannel not measuredCall logs vs conversionsCall tracking, click-to-WhatsApp events, offline import
Daily numbers never agree, monthly doDate and time-zone rulesShift CRM dates to click date for matched recordsUse ‘by conv. time’ in Google; report on closed weeks
Lead counts match, sales says leads are poorQuality, not trackingValid/qualified rate by campaignSend qualified-lead signals back; tighten forms

The last row matters. Many teams start a tracking investigation when the real complaint is quality. If the counts reconcile but sales still rejects most leads, the fix is in targeting, offer and form design, and in teaching the algorithm what a good lead looks like. Our guide to Meta ads lead quality and our October piece on rising Meta lead-ad CPL and optimising for qualified leads cover that side.

How to Fix Lead Tracking on Meta

On Meta the fixes fall into three groups: count each lead once, measure the leads you are missing, and send back the outcomes that matter.

**Count once.** Fire the Lead event exactly once per submission, ideally on a confirmed successful submit rather than on page load of a thank-you URL people can revisit. If you run both the browser pixel and the Conversions API — which you should — send the same event_name and a shared event_id from both so Meta deduplicates them. Check Events Manager for the deduplication rate and for event match quality; our CAPI troubleshooting guide explains how to raise match quality without over-sending personal data. **Measure what is missing.** Server-side Lead events with hashed email and phone recover conversions lost to browser restrictions. For click-to-WhatsApp and Messenger campaigns, decide which conversation outcome counts as a lead and record it consistently rather than counting every conversation started. For instant forms, store the Meta lead ID in your CRM so every record can be matched. **Send outcomes back.** Meta's Conversions API for CRM lets you report what happened to a lead after submission — qualified, meeting booked, converted. Meta's developer documentation states that the Conversion Leads optimisation goal works with native lead ads, that CRM events use the event source value ‘crm’, and that each event must carry an identifier such as a valid lead ID or hashed email or phone. Once enough qualified events flow, you can optimise for conversion leads rather than raw submissions, which is the single most effective lever we know for closing the gap between ‘leads in Ads Manager’ and ‘leads sales wants’.

One caution: changing the optimisation event resets learning. Make the switch on a new ad set or campaign once you are reliably sending qualified events, rather than editing a campaign that is currently working. And do not judge it in the first week, because the qualified events lag the submissions by however long your sales team takes to qualify.

How to Fix Lead Tracking on Google Ads

Most Google Ads lead discrepancies come from conversion action configuration rather than from the tag itself. Work through these in order.

1. **Audit primary versus secondary actions.** Only the actions that represent a real lead should be primary, because primary actions feed the Conversions column and Smart Bidding. Page views, scrolls, button clicks and ‘engaged sessions’ imported from GA4 should be secondary or removed. It is common to find a form submit and a thank-you page view both set as primary, counting every lead twice. 2. **Set lead actions to count ‘One’.** Google's counting guidance recommends ‘One’ for leads. This alone often removes a large part of the gap. 3. **Choose one source per lead.** If you import a GA4 ‘generate_lead’ event and also run a Google Ads form tag, decide which is primary. Running both as primary double counts. 4. **Turn on enhanced conversions for leads.** Hashed email or phone captured at submission lets Google match conversions it would otherwise lose to cookie restrictions, and lets you later upload outcomes from your CRM without needing a gclid for every record. 5. **Import offline outcomes.** Capture the gclid (and gbraid/wbraid where present) in a hidden field, store it on the CRM record, then upload qualified-lead and closed-deal conversions. Bidding then learns from outcomes, not form fills. Our Google Ads conversion tracking guide covers the setup. 6. **Measure calls properly.** Use call conversion tracking with a minimum duration that reflects a real conversation, so a two-second misdial is not a lead. 7. **Implement consent mode correctly.** Where consent rules apply, a correct consent mode setup lets Google model conversions from users who decline; an incorrect one either loses data or creates compliance risk. Understand that modelled conversions will not have a matching CRM record.

When you reconcile Google against the CRM, use the ‘(by conv. time)’ columns. They place conversions on the day the lead actually arrived, so they line up with the CRM's created date. Keep using the standard columns when judging bidding, because that is what Smart Bidding sees.

How to Fix Lead Tracking on LinkedIn

LinkedIn matters most for B2B lead generation, where deal values are high and buying cycles long, so small tracking errors become expensive. The common problems are view-through inflation, unsynced Lead Gen Forms and a lack of downstream signal.

- **Review conversion windows.** The defaults — 30-day click, 7-day view — suit some businesses and inflate others. If most of your LinkedIn ‘conversions’ are view-through, report click-through and view-through separately and decide how much credit view-through deserves using a holdout test rather than intuition. - **Sync Lead Gen Forms directly to the CRM** with a supported integration, store the LinkedIn lead ID, and alert on gaps. LinkedIn deletes lead data after 90 days, so a broken sync is permanent loss. - **Use the Insight Tag and Conversions API together** for website forms. The Conversions API lets you send conversions from your server or CRM, which survives browser restrictions and allows you to send later-stage outcomes. - **Send pipeline outcomes.** Qualified leads, meetings and opportunities sent back as conversions let LinkedIn optimise for buyers rather than form-fillers. Our step-by-step guide to LinkedIn offline conversions and CAPI for B2B pipeline covers the mapping. - **Separate Lead Gen Form leads from website leads in reporting.** They behave differently: native forms convert at higher rates but often with lower intent, because profile data is pre-filled.

For B2B teams, the biggest reconciliation gap is usually that LinkedIn's lead count looks low against a CRM that credits LinkedIn as first touch, or high because of view-through. Neither is wrong in isolation. Decide which model your board reports on, keep it fixed, and use the platform's own number only to compare campaigns inside LinkedIn.

Fix the CRM Side: Capture the Data That Makes Matching Possible

Half of every reconciliation problem lives in the CRM. Without the right fields captured at submission, you cannot match records to clicks, cannot send outcomes back to platforms, and cannot tell paid leads from organic ones. These are the fields every paid lead should carry:

FieldWhy it mattersHow to capture it
utm_source, utm_medium, utm_campaign, utm_contentCampaign and ad-level attribution in your own systemHidden form fields populated from the URL, persisted in a first-party cookie
gclid / gbraid / wbraidMatch to Google clicks, offline conversion importHidden field from URL parameter
fbclid / _fbc / _fbpImprove Meta match quality for CAPIHidden field and first-party cookie values
li_fat_idMatch to LinkedIn clicksHidden field from URL parameter
Platform lead IDExact match for native form leadsProvided by the integration
Landing page URL and referrerDebugging and content attributionHidden fields
Submission timestamp with time zoneDate alignmentServer-side on receipt
Consent statusCompliance and modelling contextFrom your consent platform

Two habits make the biggest difference. First, persist parameters: people often browse several pages before submitting, and if your form only reads UTMs and click IDs from the current URL, they are gone by the time the form loads. Store them in a first-party cookie or local storage on landing and read them at submission. Second, set strict deduplication rules in the CRM so a person who submits twice, or submits on Meta and then again on your site, becomes one record with a history rather than two leads.

Finally, mark spam and test records instead of deleting them. A CRM that silently deletes junk makes reconciliation impossible because you cannot explain why the platform counted it. A ‘disqualified — spam’ status keeps the evidence and keeps your valid-lead count clean. Our guide to spam lead prevention covers blocking it upstream.

When Meta, Google and LinkedIn All Claim the Same Lead

Run more than one platform for long enough and the sum of platform leads will exceed your CRM total. This is not an error to fix; it is how platform attribution works. Each platform sees only its own touchpoints and credits itself whenever its rules are satisfied. A buyer who sees a LinkedIn ad, clicks a Meta ad and finally searches your brand on Google can be counted by all three.

The fix is a reporting decision, not a tracking change. Use each platform's own numbers to compare campaigns, ad sets and ads within that platform — that is what its attribution is good for. Use your CRM, with a single attribution rule applied consistently, for cross-channel questions such as how many leads paid media produced in total, or what cost per qualified lead looks like by channel. Never add up platform totals in a board report.

Which rule should the CRM use? For most lead-generation businesses we recommend recording both first touch and last non-direct touch on every lead, and reporting both. First touch shows which channels create demand; last touch shows which channels capture it. If the two tell very different stories — for example, LinkedIn dominates first touch and Google brand search dominates last touch — you have learned something important about your funnel. For businesses with enough volume, a periodic holdout or geo test is the only way to measure true incremental contribution; anything else is an allocation rule.

Build a Reconciled Lead Dashboard Everyone Trusts

The end state is a single report that marketing, sales and leadership use, where each number has a defined source. A layout that works for most lead-generation businesses:

ColumnSourceDefinition
SpendEach platformSpend in the period, platform time zone noted
Platform leadsEach platformPrimary lead conversions, by conversion time where available
CRM unique leadsCRMDe-duplicated leads with that platform as last non-direct touch
Match rateReconciliationCRM unique leads ÷ platform leads
Valid leadsCRMUnique leads not spam or test, reachable
Qualified leadsCRMSales-accepted or MQL/SQL
Cost per qualified leadCalculatedSpend ÷ qualified leads
Pipeline / revenueCRMOpportunity value and closed revenue attributed

Track the match rate every month. What matters is not a particular value but stability: a match rate that sits steady tells you the measurement is consistent, and a sudden drop tells you something broke — a tag, an integration or a form — usually before anyone notices in the campaign metrics. In our experience, a well-instrumented account sits in a fairly narrow band month after month; when the band moves, investigate before changing campaigns.

Two final rules. Optimise campaigns on platform data, because that is what the algorithm sees, but judge channels on CRM data, because that is what the business banks. And write the definitions at the top of the dashboard, so nobody six months from now has to rediscover why the numbers differ.

Worked Example: Reconciling a B2B Services Account (Illustrative)

The numbers below are illustrative, built to show the method rather than taken from a specific client, but the pattern is typical of what a first reconciliation reveals. A B2B services company spends across Meta (instant forms and website), Google search and LinkedIn. For a closed 14-day window, Meta reports 220 leads, Google 140 and LinkedIn 40 — 400 in total. The CRM holds 300 records with a paid source, which become 268 after deduplication.

Matching records explains the gap. Of Meta's 220, 96 are instant-form leads, of which 81 match CRM records on lead ID; 15 never synced because an integration token expired mid-window. Of the 124 website leads Meta reports, test submissions show the pixel and CAPI firing with different event IDs, so a share of those are duplicates. Google's form action is primary and set to ‘Every’, and a thank-you page view is also primary — together they account for about a third of Google's total being double counts. LinkedIn's 40 include 22 view-through conversions, most of which the CRM credits to organic or direct. Finally, 31 CRM leads came by phone from people who clicked Google ads; Google never counted them because call tracking was not set up.

After fixing the integration, sharing event IDs, switching Google to ‘One’ and demoting the page view, adding call tracking and reporting LinkedIn view-through separately, the next month's reconciliation leaves a small unexplained residual — the kind that does not change any decision. The more important outcome is what changed in optimisation: Meta's reported cost per lead rose because double counts disappeared, Google's lead count fell but its cost per qualified lead turned out to be the best of the three, and the team stopped cutting LinkedIn based on a click-only view. That is what reconciliation is for.

Common Mistakes When Ad Leads and CRM Leads Don't Match

- **Comparing totals instead of records.** Totals cannot tell you why they differ. Match records. - **Using ‘last 7 days’.** The most recent days are incomplete on every platform. Use closed windows. - **Summing platforms.** Platform totals overlap. Use the CRM for cross-channel totals. - **Deleting spam from the CRM.** You lose the evidence. Mark it instead. - **Leaving lead actions on ‘Every’ in Google Ads.** Check every primary action. - **Running pixel and CAPI without shared event IDs.** You will double count on Meta. - **Ignoring the 90-day limit on native form leads.** A broken sync is permanent loss after 90 days. - **Calling a quality problem a tracking problem.** If counts reconcile and sales still rejects leads, fix targeting, offer and form design, and send qualified-lead signals back. - **Changing optimisation events on a live, working campaign.** Launch the new signal in a new ad set and compare. - **Never re-running the reconciliation.** Tags break with redesigns and integrations break with staff changes. Make it monthly.

If you would rather have a senior operator run this for you, our analytics and tracking and Conversions API work starts with exactly this reconciliation, and our free tracking audit is a quick way to find out how large your gap is.

Frequently Asked Questions

Why are my Facebook leads different from the leads in my CRM?
Because Meta counts conversion events its ads can claim, dated to the ad impression or click, while your CRM counts unique people on the day they arrived. Meta can count more if the Lead event fires twice, if pixel and Conversions API events lack a shared event ID, or if it credits view-through conversions. It can count fewer if consent or ad blockers stop tracking. For instant forms, a gap usually means the integration to your CRM failed.
Why does Google Ads show more conversions than actual leads?
The most common causes are a lead conversion action set to count ‘Every’ instead of ‘One’, two primary actions that both fire for the same lead (such as a form submit and a thank-you page view), or a GA4 import and a Google Ads tag both marked primary. Google's own guidance recommends ‘One’ for lead actions. Modelled conversions from consent mode can also add estimated conversions with no matching record.
Why are LinkedIn Lead Gen Form leads missing from my CRM?
Usually because the integration between LinkedIn and your CRM stopped working — an expired connection, a removed admin or a changed form field. LinkedIn deletes lead data after 90 days, so download missing leads from Campaign Manager as soon as you notice, fix the integration and set up an alert for gaps.
How do I check if my Meta instant form leads are syncing correctly?
Download leads for one form for the last 30 days from Ads Manager or Leads Center, export CRM records from the same form and period, and compare lead IDs. Anything in the download but not in the CRM is a sync failure. Meta only lets you download leads for 90 days after submission.
Should the ad platform and CRM lead numbers ever match exactly?
No. They use different definitions, attribution windows and dates. The goal is to explain every unit of difference, fix genuine errors such as duplicates and failed syncs, and track a match rate that stays stable month to month. A sudden change in that rate means something broke.
Which number should I report to leadership — platform leads or CRM leads?
Report CRM leads, de-duplicated and with a single attribution rule, for cross-channel totals and cost per qualified lead. Use platform numbers to compare campaigns and ads inside each platform, because that is what the bidding algorithms use. Never add platform totals together.
Why do daily lead numbers never match even when monthly totals do?
Meta and Google's standard columns date conversions to the ad click or impression, while your CRM uses the submission date, and each system may use a different time zone. Late conversions are also backfilled for several days. Use Google's ‘by conv. time’ columns and closed reporting periods for reconciliation.
What is the best way to send CRM lead quality back to Meta, Google and LinkedIn?
Capture the platform identifiers at submission — Meta lead ID, gclid, li_fat_id, plus hashed email and phone — and store them on the CRM record. Then send qualified-lead and closed-deal events through Meta's Conversions API for CRM, Google's offline conversion import or enhanced conversions for leads, and LinkedIn's Conversions API, so each platform can optimise for leads sales accepts.
How often should I reconcile ad platform leads with my CRM?
Monthly, using the same method each time, plus an automated alert for sudden drops in leads arriving from live campaigns. Run an extra reconciliation after any website redesign, form change, CRM migration or change in who administers your ad accounts.