ZH
All Case Studies

Home Services · Southeast · Marketing Audit + Fraud Discovery

Roof Depot

$0KAgency Fraud Uncovered

Discovered $240,000 in annual fraudulent agency billing by cross-referencing reported performance data against actual business outcomes. The agency had been inflating metrics and overbilling for over a year before the audit exposed it.

DurationOngoing
Year2024
IndustryHome Services · Southeast

The short answer

Roof Depot was paying a marketing agency roughly $20,000 per month to manage their Google Ads and digital lead generation. The agency's monthly reports showed strong performance: healthy lead volume, efficient cost per lead, and growing campaign reach. On paper, the account looked like it was working.

But the business was not growing in proportion to what those reports suggested. The owner had raised the issue multiple times and was met with more reports, more charts, and more jargon. Within weeks of stepping in, I conducted a full forensic audit of the agency's work. I pulled every data source I could access independently of the agency, built a parallel picture of actual business performance, and compared it against the agency's claims line by line. The discrepancies were not subtle. Approximately $20,000 per month in billing could not be tied to legitimate marketing activity. Over the life of the relationship, that totaled roughly $240,000 in fraudulent charges.

$240K

Fraudulent Billing

$20K

Monthly Overbill

12+

Months Undetected

3:1

Lead Inflation Ratio


Problem

The surface-level symptoms

Roof Depot's owner was experiencing something that a lot of business owners deal with when they hire an outside marketing agency: the reports say one thing, but the business feels like another. Monthly reports showed lead volume going up, cost per lead staying efficient, and campaigns expanding into new keyword territory. The agency presented all of this in polished decks with charts, graphs, and technical commentary that would be difficult for someone without deep Google Ads expertise to question.

But the owner was watching the actual business closely. Booked jobs were not increasing at the rate the lead numbers suggested. Revenue growth was not matching the reported conversion improvements. And the monthly spend kept climbing while the gap between reported performance and actual business results kept widening.

The core issue was information asymmetry. The agency controlled the tracking setup, the reporting layer, and the narrative around performance. They decided which metrics to highlight, how to define a "lead," what counted as a "conversion," and how to frame month-over-month changes. The owner was essentially relying on the agency to grade its own homework.

Why the fraud was hard to catch

This is not unusual. Most small-to-mid-size businesses that hire marketing agencies do not have someone in-house with the technical knowledge to independently verify what the agency is reporting. They trust the reports because they hired the agency precisely because they did not have that expertise internally. Agencies that operate in bad faith exploit this dynamic because they know the client cannot easily distinguish between a legitimate performance report and one that has been manipulated.

The specific techniques this agency used to obscure the fraud were not sophisticated. They were common tactics that work because most clients do not know to look for them:

Inflated lead definitions. The agency counted every form submission and every inbound phone call as a "lead" regardless of whether it resulted in any business activity. A spam form fill, a wrong number, a vendor calling to sell something, an existing customer calling about an active job. All of it went into the lead count. This single practice inflated their reported lead volume dramatically and made it look like the campaigns were generating far more business interest than they actually were.

Attribution manipulation. The agency was attributing revenue to campaigns that had no verifiable connection to actual booked jobs. They would report that a campaign generated a certain number of conversions worth a specific dollar amount, but when you traced those claimed conversions back through the CRM and job records, there was no corresponding appointment, estimate, or completed job. The conversions existed in the agency's reporting but not in the business's reality.

Spend opacity. The agency billed a flat monthly fee that was supposed to cover both management fees and ad spend. But they did not provide transparent reporting on exactly how much was going to Google Ads versus how much was being retained as their fee. When I eventually accessed the Google Ads account directly and compared platform-level spend data against what the agency was billing, a meaningful portion of the billed amount could not be accounted for at the platform level.

Monthly Lead Count: Reported vs. Verified

Before200 reported
After~60 verified

Approach

1

Building an independent data baseline

The first and most important decision in any vendor audit is to establish your own data sources before engaging with the vendor's reporting at all. If you start by reading the agency's reports and then try to verify them, you risk anchoring to their framework and their definitions. You end up checking whether their numbers add up internally rather than whether their numbers reflect reality.

I pulled data from every source I could access independently of the agency:

  • Google Ads account data. Direct platform access, not the agency's exported summaries. This included raw campaign spend, impression volume, click data, and conversion tracking configuration. The conversion tracking setup itself was informative because it revealed what the agency had defined as a "conversion" at the platform level versus what they were reporting to the client.

  • Google Analytics. Session data, traffic source attribution, on-site behavior, and goal completions. This provided a second, independent lens on how much traffic the paid campaigns were actually driving and what that traffic was doing once it reached the site.

  • CRM and job management records. Every booked appointment, every estimate, every completed job, and the revenue associated with each. This was the ultimate source of truth for whether a "lead" from the agency's reports had actually turned into business activity.

  • Phone system records. Call logs with timestamps, durations, and caller IDs. This allowed me to match reported "phone leads" against actual inbound calls and verify whether those calls existed and whether they came from the geographic and demographic profile the agency was claiming to target.

  • Financial records. Actual invoices from the agency, payment records, and the contractual terms of the engagement. This established the total dollars spent and the billing structure that was supposed to govern the relationship.

2

Mapping the agency's claims

With the independent baseline established, I went through the agency's monthly reports for the preceding 12 months and extracted every quantitative claim: lead counts by month, cost per lead, conversion rates, attributed revenue, campaign spend allocation, and performance trends. I built a parallel spreadsheet that placed the agency's claimed numbers next to the independently verified numbers for the same time periods.

This is where the discrepancies became immediately visible. You do not need statistical analysis when the numbers are this far apart. The agency would report generating 200 leads in a month, and the CRM would show roughly 60 actual new customer inquiries during that same period. The agency would claim a cost per lead of $35, and the actual cost per verified business inquiry was closer to $120.

The gap was not a rounding error or a difference in methodology. It was a chasm.

3

Diagnosing the specific fraud mechanisms

Once the scale of the discrepancy was clear, I needed to understand exactly how the gap was being created. Not just that the numbers were wrong, but specifically which practices were inflating them and by how much.

Lead inflation analysis. I took the agency's reported lead list for a sample month and attempted to match every single reported lead against a CRM record. Roughly two-thirds of the "leads" the agency reported could not be matched to a real customer inquiry. Many were duplicate entries. Some corresponded to spam form submissions that the agency's own filters should have caught. Others were attributed to campaigns that had no corresponding new customer activity at all.

Conversion attribution audit. The agency had configured Google Ads conversion tracking in a way that counted micro-actions like page views and time-on-site as "conversions." This is a known manipulation tactic: by setting low-quality actions as conversion events, the agency can report high conversion numbers that look impressive in a report but have no connection to actual business outcomes. A page view is not a booked roofing estimate.

Cost Per Lead: Reported vs. Actual

Before$35 reported
After$120 actual

Spend reconciliation. I compared the total amount billed to Roof Depot against the total amount actually spent on Google Ads at the platform level. The agency was billing for more than what was being spent on ads. The difference could represent inflated management fees, spend being diverted to other accounts, or billing for services that were never delivered. Regardless of the specific mechanism, the client was paying for ad spend that was not reaching the ad platform.

4

Documenting for action

The final step was packaging the findings into a clear, evidence-based document that the owner could use to take action. This was not a technical audit report designed for other marketers. It was designed so that someone without marketing expertise could follow the logic: here is what the agency claimed, here is what actually happened, here is the dollar impact of each discrepancy, and here is the total financial damage.

Every finding was presented with the agency's specific claim on one side and the verified data on the other, with the source of the verified data cited. The goal was to make the document useful for a legal conversation, not just a business conversation. When the total reaches $240,000, the documentation needs to be thorough enough to support whatever action the business owner decides to take.


Result

~$240K

Annual Fraud Identified

~$20K

Monthly Overbilling

~3:1

Lead Inflation Ratio

12+

Months of Fraud

FindingDetail
Lead count inflation~2/3 of reported leads could not be verified
Conversion trackingConfigured to count page views as conversions
Cost per leadReported at $35, actual was ~$120
Spend reconciliationBilled amount exceeded platform-level ad spend
DocumentationEvidence-based report suitable for legal action

The owner had been asking the right questions the entire time. The reports did not match what the business was experiencing, and he said so repeatedly. What he did not have was someone with the technical knowledge to translate that instinct into documented proof. The audit delivered not just the discovery, but the evidence needed to take action.

This case reinforced something I see frequently in small-to-mid-size businesses: the relationship between a business owner and their marketing agency is built on trust, and when that trust is being exploited, the owner is often the last person equipped to prove it. The technical knowledge required to audit a Google Ads account, verify conversion tracking configurations, reconcile spend data, and trace reported leads back to actual business outcomes is specialized enough that most business owners cannot do it themselves. That is exactly why agencies operating in bad faith can get away with it for as long as they do.


In the client's words

"We had an agency running circles around us for over a year. They were showing us numbers we couldn't make sense of, and we had no way to tell what was real. Zach came in, looked at everything, and within weeks uncovered $240,000 in fraudulent billing. Without him, we never would have known that was even possible. He consolidated everything, got us set up the right way, and supported our expansion into two new markets. He treats your money like it's his money."

Terry Dickerson, President, Roof Depot


What I'd do differently

Start the cross-referencing process on day one. I spent the first week establishing my own tracking baseline and getting familiar with the business operations before formally comparing the agency's reports against reality. The warning signs were visible in the initial review of the agency's reporting format: the way they defined conversions, the metrics they chose to highlight, and the metrics they conspicuously left out. If I had started the forensic comparison immediately, the fraud could have been documented and stopped at least a week sooner, which at $20,000 per month means real money saved.


Want to dig deeper into this project?

I'm happy to walk through the strategy, the data behind the decisions, or how I'd approach a similar problem at your company. Reach out anytime.