Why does the revenue attributed to each channel add up to more than we actually billed?
Because every platform claims the conversions it touched, and a customer who saw an ad, searched your brand and then called gets counted by all three. Platform reports are built for optimizing that platform, not for summing across platforms. The fix is a single reconciled ledger where each job is credited once, with the platform-level fractional views kept alongside for optimization but never added together.
Every platform is telling the truth about itself
Google Ads counts a conversion when its click preceded the action within its lookback window. Meta counts one when its impression or click did. Your local services lead platform counts one when the call came through its number. A single customer journey can legitimately touch all three, and each platform correctly reports its involvement.
None of them is lying. They were simply never designed to be added. The addition happens in a spreadsheet somebody built on a Friday, and it produces a total that exceeds what the company invoiced.
The audit that takes ten minutes
Sum the revenue your channel reports claim for a closed month. Compare it to the invoiced revenue in your field service or accounting system for the same month. The ratio between them is your inflation factor.
If attributed revenue exceeds billed revenue, you have double counting, timing mismatch, or both. If it falls well short, you have a match rate problem instead: journeys that could not be tied to any source. Either way, that one ratio tells you how much to trust every channel comparison you have been making. Reconciling to the operational system first is why we treat the field service platform as the system of record for revenue.
Two credit models, used for two purposes
- Single credit for the ledger. Each job gets exactly one source, assigned by a documented rule. The rule can be last non-direct touch, first touch, or a hierarchy you define. What matters is that it is written down and applied consistently, so the totals sum to billed revenue.
- Fractional credit for optimization. Within a channel, fractional and platform-modeled credit is genuinely useful for deciding which campaigns to fund. Use it there and never carry it into the ledger.
- Never mix the two in one table. A report where some rows are single-credit and others are platform-reported is the most common way this error gets institutionalized.
Timing is the other half of the discrepancy
Platforms credit conversions to the click date. Your operational system records revenue on the invoice date. A lead that clicked in March and paid in May appears in different months depending on which system you asked, and no amount of deduplication fixes that.
Pick a convention. Cohort dating credits revenue back to the period of the lead, which is right for judging marketing. Invoice dating credits it to the period the money arrived, which is right for finance. Publish both if you must, labeled, and never let a channel comparison silently switch between them. Handling this consistently is one of the concrete things a built reporting layer does that a stack of platform exports cannot.
Topics: double counting · attribution · reporting · reconciliation
Have a version of this question about your own business?
The useful answer usually depends on which systems you run and how they're connected. That's a conversation, not a blog post.