If you're reconciling Google Ads against your sales ledger and the numbers don't match, you're not doing anything wrong. They are structurally never going to match exactly, for reasons that have nothing to do with fraud or a broken pixel. Some of the gap is normal. Some of it is worth chasing down. This is how to tell which is which.
Start by checking which kind of mismatch you have
There are two different problems that get lumped together as "conversions don't match sales", and they need opposite fixes:
- Google Ads shows more conversions than you have real sales. Usually duplicate firing, form spam, or conversions counted at the wrong stage of the funnel.
- Google Ads shows fewer conversions than you have real sales. Usually a tracking gap — sales are happening that never get reported back.
Work out which direction the gap runs before you touch anything. Fixing the wrong one makes the other one worse.
Reason 1 — attribution windows and click time
Google Ads attributes a conversion to the click, not the day you record the sale. A lead who clicked your ad on the 3rd and became a customer on the 28th shows up in Google's reporting against the 3rd, inside whatever attribution window you set for that conversion action. If your window is shorter than your actual sales cycle, that conversion is silently dropped — not delayed, dropped.
Check this first. Go to Goals → Conversions, open the action, and look at the click-through window. If your sales cycle in real estate or education runs 60–90 days and the window is set to the 30-day default, that alone explains a meaningful chunk of your gap.
Reason 2 — reporting delay, not data loss
Conversions take up to several hours to appear after upload, and Google's own reporting interface will show different totals depending on the date range and attribution model selected. If you're comparing "today's" Google Ads number against a ledger you closed at midnight, you're comparing two numbers that were never going to agree on a same-day basis. Compare completed weeks or months, not live totals.
Reason 3 — you're only reporting one stage of the funnel
A lead who becomes "qualified" and later becomes "won" should ideally be two separate signals sent back to Google — but many setups only ever upload the final sale, and only after someone remembers to run the export. Every unreported sale is a real conversion that Google never learns about, and it quietly biases the account toward "form fills" as the best available signal, because that's the only one arriving reliably.
Reason 4 — the click ID never made it to the lead record
This is the most common cause of Google Ads under-counting relative to a CRM's own sales numbers. If the gclid capture breaks on some landing pages, or gets dropped when a visitor navigates before submitting, that lead becomes permanently unattributable — it's a real sale in your ledger with nothing to upload it against. See how to capture the gclid correctly if you haven't audited this yet; it's worth spot-checking even on a setup that's been running for a while, because a landing page redesign is a common, silent way to break it again.
Reason 5 — the count is inflated by traffic that was never a real prospect
This runs the other direction: Google Ads showing more form-fill conversions than your team can find matching prospects for. The candidates, roughly in order of how often they turn out to be the actual cause:
- Duplicate form submissions — a slow page or a double-tapped submit button firing the conversion tag twice for one person.
- Bot and automated traffic filling the form with junk data. This is a genuinely different problem from attribution — see stopping fake clicks on Google Ads — and it's worth ruling in or out early, because it changes which fix applies.
- Internal or agency staff testing the landing page without excluding their own IP from the account.
A short checklist for a one-off reconciliation
If you're trying to explain a specific gap this month rather than build a permanent process, this order tends to find the answer fastest:
- Pull the list of leads your ledger shows as sales for the period, and check how many have a stored gclid at all. Any without one are explained immediately — reason 4 above.
- For the ones that do have a gclid, check the click date against the conversion action's attribution window. Anything outside it is reason 1.
- For what's left, check whether they were uploaded at all — look at the offline conversion upload log or export history for gaps. A skipped week explains reason 3 quickly.
- Whatever's still unexplained after those three checks is genuinely worth investigating further — but in most setups, the three steps above account for the overwhelming majority of the gap.
What's actually worth fixing, and what to accept
Do not chase perfect reconciliation — it doesn't exist, even for advertisers with mature, expensive setups. What's worth your time:
- Extend attribution windows to genuinely match your sales cycle, not the default.
- Report more than one funnel stage, so the gap isn't hiding in "we only uploaded final sales".
- Confirm the gclid is captured and stored correctly on every landing page, not just the one you tested when you built it.
- Separate suspected bot traffic out before you decide the rest of the gap is a tracking problem — otherwise you can spend weeks debugging a pixel that was never broken.
What's not worth chasing: exact same-day parity between a live dashboard and a ledger someone closes manually, or a conversion count that includes stages you've deliberately chosen not to report. Those differences are expected, not evidence something is wrong.
A note on comparing against Google Analytics too
If you're also checking Google Analytics conversion numbers against either of the other two, expect a third, slightly different figure again — Analytics uses its own attribution model and session definitions, which can differ from both Google Ads' click-based attribution and your CRM's own record of what happened. Three tools, three different (correct, in their own terms) counting methods. Pick one as your primary source of truth for decision-making — usually the CRM, since it's closest to actual revenue — and treat the others as directional cross-checks, not numbers that need to match it.
Setting expectations for anyone reviewing the numbers
If someone outside the marketing team — a founder, an investor, an accountant — is comparing Google Ads to the sales ledger themselves, it's worth explaining this gap proactively rather than waiting for the question. "Our Google Ads dashboard and our sales ledger will never match exactly, and here's why" is a much easier conversation to have once, calmly, than repeatedly defending small discrepancies after the fact. Most confusion in this area comes from an unstated assumption that the two numbers should be identical, not from anything actually wrong with the tracking.
Where this connects to the rest of your setup
Everything above assumes the fundamentals are in place — the gclid is being captured, stored against the lead, and uploaded automatically when a deal closes. Claudphic Ads does that end to end, so the questions that remain are the interesting ones above rather than "did the upload even happen". See the full walkthrough of the underlying process in how to send offline conversions to Google Ads from your CRM, and the pricing is on the pricing page if you want to see it running on your own account.