Why Google Ads ROAS never matches your database (and which one to trust)
Published August 26, 2026 · Updated August 28, 2026
The 60-second version
- Google and Meta both claim the same sale because each platform counts every journey it touched as if it were the only channel.
- Your database counts money once. The gap between summed platform revenue and bank revenue is double-counting, not fraud.
- The fix: report blended ROAS from the warehouse, and let platforms steer direction — never totals.
You log into Google Ads and it proudly reports 4.2x ROAS (₹42,000 in sales from ₹10,000 in ad spend). Encouraged, you check Meta Ads, which claims another 3.5x ROAS (₹35,000 in sales from ₹10,000 in spend). Together, the ad platforms claim they delivered ₹77,000 in customer revenue.
Then you open your central database or bank account — where actual customer cards get charged — and total revenue across your entire company was only ₹50,000.
Nobody was hacked, and nobody made a math error. The ad platforms reported what they were engineered to report. Understanding why they disagree is the difference between making profitable budget decisions and burning cash on phantom metrics.
Why ad platforms and bank accounts disagree
Google Ads, Meta, and your database are each answering fundamentally different questions when they report revenue from a campaign:
- Google Ads asks: "Did this customer click one of our ads at any point in the last 30 days before purchasing?" If yes, Google claims credit for the sale — regardless of what other ads the customer saw.
- Meta Ads asks: "Did this customer click an ad in the last 7 days or see an impression in the last 24 hours?" If yes, Meta claims credit for the sale.
- Your database or bank asks: "Did real money settle in our merchant account?" It records real financial transactions with no inherent bias toward ad platforms.
None of these systems is lying. They are simply operating under completely different definitions of what caused a sale.
The core rule: Ad platforms measure attributed influence (which is naturally optimistic). Your backend database measures actual financial truth (which is grounded in real bank deposits).
Paid orders net of refunds
The ad platforms together claim significantly more money than your bank actually received. You are paying to count the same customers twice.
The two salesmen problem: multi-touch double counting
Ad platforms operate in total isolation from one another. Google has no idea what ads a shopper saw on Instagram, and Meta has no idea what search queries a shopper typed into Google.
Think of them as two aggressive commission-only salesmen. If a buyer clicks a Google search ad on Monday, sees an Instagram retargeting ad on Wednesday, and places a single ₹150 order on Thursday, both salesmen run to your office demanding credit for the exact same ₹150 sale.
Google Ads claims ₹150 in revenue and Meta Ads claims ₹150 in revenue, but your bank received only ₹150 from one order. What happened?
This overlap is magnified by differing attribution window settings:
- Google Ads defaults to a 30-day click window and 1-day view window.
- Meta Ads defaults to a 7-day click window and 1-day view window.
- Your database has no window — an order placed on Thursday belongs to Thursday.
If you evaluate each channel in isolation, you will believe your marketing is twice as effective as it actually is.
Tracking plumbing versus accounting definitions
The rest of the discrepancy boils down to two categories: technical tracking limits and financial accounting rules.
Tracking plumbing: why signals get dropped
To connect an ad click to a purchase in your database, click identifiers like gclid or fbclid must survive the entire journey to checkout. Several technical barriers regularly break this link:
- Safari ITP (Intelligent Tracking Prevention): Apple caps browser cookies to 7 days (or 24 hours after certain redirects), wiping the attribution trail for considered purchases.
- Cross-device shopping: A customer clicks an ad on their mobile phone during their morning commute, but completes the purchase on their laptop in the evening. Ad platforms link this through user accounts, but your web server sees an untagged direct visit.
- Ad blockers: Privacy extensions frequently strip URL parameters and block client-side JavaScript tags from firing, leaving your database with a paid order but zero ad tags.
Accounting definitions: money that is not revenue
Even when tracking works perfectly, financial mechanics create unavoidable gaps:
- Timezone drift: Ad accounts run in your local business timezone, while databases and server logs almost universally store timestamps in UTC. An order placed late in the evening lands on tomorrow's date in UTC.
- Refunds and returns: Google and Meta report gross transaction value at the moment checkout completes. They rarely subtract cancellations, chargebacks, or returns processed five days later in your CRM.
- Taxes and shipping: Ad pixels frequently record the gross checkout total (including GST and shipping), whereas financial reports focus on net product revenue.
| Feature | Google Ads | Meta Ads | GA4 | CRM / Database |
|---|---|---|---|---|
| Default Window | 30-day click / 1-day view | 7-day click / 1-day view | 30-day key events | Exact transaction time |
| Cross-Platform Visibility | None (Google only) | None (Meta only) | Partial (via UTMs) | Full (all actual orders) |
| View-Through Included? | Optional | Included by default | Excluded from standard reports | None |
| Deducts Refunds? | No (unless offline sync) | No (unless offline sync) | No | Yes (exact net truth) |
| Primary Use Case | Bidding & ad group tuning | Creative & audience tuning | Cross-channel journeys | Executive & financial truth |
A three-tier framework to reconcile your numbers
You will never get ad platform numbers to match your database penny-for-penny — and attempting to do so is a waste of engineering time. Instead, adopt a practical 3-tier reporting framework:
The 3-Tier Multi-Touch Reconciliation Framework
Reporting HierarchyTop-Line MER / Blended ROAS
Executive source of truth for the Board & CFO. Compares total revenue against all marketing spend without attribution fighting.
CRM First-Party Attribution
Used by Marketing Leadership for channel budget shifts. Only counts actual orders carrying verified first-party tracking tags.
In-Platform ROAS
Used by Media Buyers for automated campaign & creative bidding algorithms inside Google & Meta.
- Use Blended ROAS for financial health: Compare your total company revenue directly against total marketing spend across all channels (MER). This sidesteps attribution disputes entirely.
- Use first-party attribution for channel allocation: Measure how many orders carried a valid tag to decide where to deploy next quarter's budget.
- Use platform ROAS for tactical bidding: Let Google and Meta's machine learning optimize bids based on their own signals, but discount their claimed numbers when forecasting revenue.
- Track the Attribution Gap Ratio: Divide platform-reported revenue by database revenue (
Platform Revenue ÷ Database Revenue). If Google Ads consistently claims 1.3x what your database records, a 4.0x platform ROAS represents roughly a 3.0x real-world ROAS.
Why aggregate before joining? Joining individual orders directly to daily spend tables on date creates a severe fan-out bug: if you ran 10 ad campaigns that day, every single order gets counted 10 times in your sum. Always aggregate both sides to daily totals before joining.
Frequently asked questions
What is a normal discrepancy between Google Ads and a backend database?
A variance of 15% to 30% is standard across most ecommerce and lead-generation businesses. Discrepancies below 15% indicate strong first-party tracking and short purchase cycles; discrepancies above 40% typically point to broken UTM tagging, extreme cross-device conversion paths, or unmonitored view-through conversion counting.
Should I optimize my campaigns using CRM numbers or Google Ads numbers?
Use Google Ads in-platform numbers for real-time automated bid strategies (like Target ROAS), because the ad network's machine learning requires real-time signal density. However, set your target thresholds using your backend database breakeven numbers.
How does conversion lag affect this week's ROAS?
Customers who click ads today may not buy for 3 to 14 days. This causes recent-day ROAS (yesterday and today) to appear artificially low. Always evaluate campaign profitability on a 7-day or 14-day trailing lag rather than judging same-day returns.
Takeaways for your next report
- Ad platforms measure attributed influence in isolated silos, while your database measures actual bank deposits.
- When a shopper touches both Google and Meta before buying, both platforms claim 100% credit for the exact same order.
- Tracking limits like Safari cookie caps and accounting differences like refunds and timezones explain most of the remaining gap.
- Reconcile your business using a 3-tier framework: blended ROAS for the board, first-party data for budget shifts, and platform ROAS for bidding.
Breakeven ROAS Calculator
Enter your gross margin to find the minimum ROAS at which a campaign stops losing money — and the target ROAS at a chosen profit goal.
Chinmay Raibagkar
About author →Founder of DataLens AI. He helps non-technical teams read their ad and database numbers with confidence — which number to trust, what to do next, and what to ignore.