LedgerAccount activity is not the final denominator
Trace the click to the completed job.
Use one date range and one attribution rule. Preserve raw counts from Google Ads, call records, CRM, estimates, job records, and accounting. A missing field is unresolved; it is not zero.
Eligible deliveryEligible impressions, impressions, relevant search terms, clicks, spend.Owner: account manager.
ContactCalls, connected calls, forms, duplicate contacts, source record.Owners: account, page, and phone system.
QualificationQualified leads, rejection reasons, service area, job type, urgency.Owner: contractor or intake team.
SalesEstimates, signed jobs, lost reasons, completed jobs, cancellations.Owner: sales and operations.
EconomicsCollected revenue, direct job costs, gross contribution, ad spend.Owners: operations and finance.
DecisionFirst unsupported transition, next test, approval owner, review date.Owner: named before changes begin.
Worked example with hypothetical numbers
Assume a 30-day record shows 240 clicks, 30 calls, 24 connected calls, 12 qualified leads, 8 estimates, 3 won and completed jobs, $45,000 collected revenue, $31,500 direct job costs, and $6,000 ad spend. Cost per qualified lead is $500; cost per estimate is $750; cost per won job is $2,000. Gross contribution before advertising is $13,500, and contribution after the recorded ad spend is $7,500. These figures demonstrate the calculation only. They are not contractor benchmarks.
If clicks are relevant but calls fail at the page or phone, do not expand keywords. If calls connect but qualification fails, review search terms, service area, ad promise, and intake rules. If qualified opportunities reach estimates but do not become jobs, the account may not own the constraint. If job records do not reconcile to revenue and direct costs, do not call ROAS profit.