Case Study

How TMC Roofing Went From $3M to $8M in 12 Months (The Full Playbook)

Daniel GonzalezApril 20, 202614 min read

Same crew. Same market. Same services. In 12 months we took TMC Roofing from $3M to $8M and flipped the revenue mix from 30% in-house to 74% in-house. Here is the exact playbook with real numbers.

When TMC Roofing first reached out, they were running at a $3M annual pace. A year later they closed at $8M. Same crew. Same market. Same services. The difference was not a better salesman or a lucky storm. The difference was the marketing system we built together in the first 90 days and kept compounding for the next nine months.

This is the full breakdown of what we did, in order, with the actual numbers. If you are a roofing company owner sitting somewhere between $2M and $5M in revenue trying to figure out whether you can break through — this is the playbook.

The Starting Point: What TMC Roofing Looked Like At $3M

TMC Roofing was doing fine. Not struggling. The owner ran a tight crew, did solid work, had good word-of-mouth, and was closing enough retail roof replacements and insurance claims to keep the trucks rolling. The problem was not volume. The problem was where the volume was coming from.

Roughly 70% of their revenue was subcontract work — installing roofs for other contractors who had the jobs sold. Thin margins. Zero brand. Zero control of the pipeline. If the primary contractor had a slow month, TMC had a slow month. If the primary contractor decided to bring work in-house, TMC lost the job.

The remaining 30% was in-house sold work — direct-to-homeowner jobs where TMC owned the relationship, the margin, and the warranty. That 30% made 70% of the profit. But the owner could not scale it because the marketing was functionally dead.

Here is what their marketing looked like on day one:

  • A Google Business Profile that had not been updated in 14 months. 42 reviews total, last review six months old.
  • A website from 2019 that had not been touched since. No case studies. No before-and-after photos. One contact form that had not been tested in two years.
  • Zero paid advertising. No Google Ads. No LSA. No Meta.
  • No CRM. Leads got written on sticky notes. The owner carried them in his truck.
  • One SEO vendor charging $800/month that had delivered zero traffic growth in 18 months.

The owner's goal was clear: flip the revenue mix. Shift from 70% subcontract / 30% in-house to 70% in-house / 30% subcontract within 12 months. That meant finding an extra $2M to $3M in direct-to-homeowner work without adding crew capacity they did not need.

The First 30 Days: Foundation Before Fireworks

Before I spent a single dollar on paid advertising, I spent three weeks fixing things that were bleeding money every day:

Week 1: Google Business Profile Rebuild

  • Claimed and verified all secondary GBPs the owner did not know existed (three duplicates from past crew addresses).
  • Rewrote the primary GBP description with local trust signals, service categories, and service area coverage across their real ZIP codes.
  • Uploaded 127 photos of past jobs, crew, equipment, and before/afters.
  • Set service-area radius to match actual crew capacity.
  • Added every service as a distinct GBP service (30+ services), each with its own description.

Week 2: Review Velocity Machine

  • Set up a simple SMS-based review request flow through their existing scheduling software. After every completed job, the office manager sent the homeowner a text with a direct Google review link within 24 hours.
  • Rewrote the review response policy. Every review — 5 star or not — gets a personalized response within 24 hours.
  • In week 2, TMC went from 42 reviews to 58 reviews. In week 4, 74 reviews. The Google algorithm noticed.

Week 3: LSA Approval and Account Setup

  • Pulled the general liability and workers comp docs, verified the roofing license, completed the Google Guaranteed background check.
  • Approved in 11 days. Account went live mid-week 3.
  • Set a cautious $80/day budget to start. Weighted bid toward roof replacement and roof inspection leads.
  • Set exclusions for leads outside the service area and for requests that were not roofing (solar, skylights, gutters).

Week 4: Google Ads Infrastructure

  • Built four campaigns: Branded, Emergency Repair, Roof Replacement, and Insurance Restoration.
  • Created 40+ negative keywords from day one based on 10 years of pattern recognition.
  • Wired up call tracking through CallRail so every lead source was attributable to an exact keyword and ad.
  • Connected the contact form to a proper CRM instead of the sticky-note system.

Total spent in the first 30 days: $4,200 on the LSA campaign, $1,800 on a minimal Google Ads test, and my agency retainer. Total revenue attributable to marketing activity in Month 1: $48,000 from five insurance restoration jobs that came in through the LSA in weeks 3 and 4.

The owner wanted to spend more. I told him to wait.

Days 31-90: The Six-Pillar Stack Goes Live

By Month 2 the fundamentals were working. LSA was producing 22 qualified leads a week at an average cost per lead of $68. Google Business Profile was showing up in the map pack for three city-level terms. Reviews were compounding — 18 new reviews in Month 2 alone.

This is when we layered the rest of the stack.

Pillar 1: Google Ads scaled to roof replacement intent

Moved Google Ads from $60/day to $180/day. Concentrated spend on "roof replacement [city]", "new roof cost [city]", and "storm damage roof repair [city]". Dropped branded spend (no competitors were bidding). Built dedicated landing pages for roof replacement and insurance restoration instead of routing everything to the homepage.

Pillar 2: Local SEO that actually works

Scrapped the old SEO vendor. Built out a proper service-area SEO structure: a primary city page, then individual pages for each sub-city in the service area (11 cities total), each with localized content, embedded maps, and at least three neighborhood callouts per page. Built the right schema markup on every page. Created a proper internal linking structure from the homepage to service pages to city pages to job examples.

Pillar 3: Content that converted browsers to callers

Added a case studies section with four real past jobs, each with real photos, real before-and-after drone shots, and the actual conversation with the homeowner about what they were worried about before hiring. This was the single biggest website change. Bounce rate on the case studies page was 34%. On the homepage it was 68%.

Pillar 4: Insurance restoration expertise page

A dedicated page walking through how TMC handled insurance adjusters, supplementing, and the homeowner's out-of-pocket. This page became the top-converting page on the site within 60 days. Every insurance job they closed from month 3 forward cited that page as what convinced the homeowner to call.

Pillar 5: Review management on autopilot

The review velocity machine kept running. By end of Month 3 the GBP had 98 reviews at a 4.9 average. Google's local algorithm moved TMC from position 6 in the map pack to position 2 for their primary city.

Pillar 6: 24/7 answer system

Set up an after-hours call answering service that captured every call with a live human, took basic information, and texted the owner within 5 minutes. The owner had been missing an estimated 3-4 calls a week that went to voicemail and never called back. That one change produced 12 additional jobs over the next six months — about $180K in revenue from calls that used to die.

Total marketing spend for Month 2 and Month 3 combined: $31,400. Total attributable revenue: $612,000 from 18 signed in-house jobs.

Days 91-365: Compounding

By Month 4 the system was humming. The owner's job shifted from chasing leads to qualifying them. He had more inbound than he could close and had to start turning down jobs that did not fit the crew's schedule or the margin targets.

Here is what the next nine months looked like by the numbers, pulled from CallRail, Google Ads, GBP analytics, and the new CRM:

Google LSA (Month 4 onward)

  • Increased budget from $80/day to $220/day by Month 6
  • Average cost per lead held at $62-$78 across the rest of the year
  • 314 LSA leads total across Months 4-12
  • 23% conversion rate from lead to signed job
  • 72 signed LSA jobs over nine months, averaging $14,200 per job
  • LSA revenue contribution Months 4-12: approximately $1,022,400

Google Ads

  • Scaled from $180/day to $410/day by Month 8
  • Roof Replacement campaign became the single highest-ROAS channel in the account
  • 196 Google Ads leads across Months 4-12
  • 27% conversion rate to signed job
  • 53 signed jobs averaging $18,700 per job
  • Google Ads revenue contribution Months 4-12: approximately $991,100

Organic and GBP

  • Organic traffic 3.2x'd between Month 1 and Month 12
  • GBP calls went from 14/month to 87/month
  • 61 signed jobs directly attributable to GBP and organic search
  • Revenue contribution: approximately $854,000

After-hours answering service

  • 28 additional signed jobs captured from calls that previously went to voicemail
  • Revenue contribution: approximately $392,000

The full-year number

Add up the attributable channels and you are at roughly $3.2M in direct-to-homeowner revenue through the marketing stack. Layer in the existing base of referral and repeat-customer revenue (about $2.4M) plus the remaining subcontract work the owner still kept (about $2.4M, down from the original $2.1M subcontract base because he was choosier), and you get the $8M total.

The revenue mix flipped: 74% in-house sold work by end of Year 1, up from 30% at start. That was the real win. More revenue, yes. But more importantly, better revenue — margins on in-house work ran 2.4x higher than subcontract work.

What We Would Do Differently If We Started Today

Two things.

First, we would build the after-hours answering service in Week 1, not Month 3. Every week we ran without it, TMC lost two to three qualified calls. Twelve weeks of that meant 24-36 lost jobs. I was too focused on the paid layer in the first 30 days and should have closed that leak first.

Second, we would build the case studies page in Month 1, not Month 2. The single biggest jump in close rate came from adding real photos and real homeowner conversations to the website. Before that, TMC competed on price with every other roofer in the market. After the case studies page, they stopped competing on price. The homeowners who landed on that page and read three case studies were four times more likely to book an inspection than homeowners who landed on the homepage.

The Stack Is Portable

The six-pillar system we built at TMC Roofing is not a California thing. It is not a specific-metro thing. It is a roofing company thing. We are running the same stack right now for roofing companies across DFW, Houston, Austin, and San Antonio, tuned for the storm-driven Texas insurance market instead of the retail-heavy California market. The mechanics are the same:

1. Fix the GBP and get the review velocity going 2. Launch LSA with tight category and geographic controls 3. Layer Google Ads on top, focused on replacement and insurance intent 4. Build real service-area SEO, not keyword-stuffed doorway pages 5. Add case studies, insurance expertise content, and answer the phone 6. Measure, attribute, and compound

If you are running a roofing company between $2M and $5M right now and you feel like your marketing is leaking, score your business against this system. It takes 5 minutes and shows you exactly where the gaps are before your next quarterly planning cycle.

The $8M playbook is public. The only thing between you and the next run is execution.

DG Agency

Daniel Gonzalez

Founder, DG Agency

Google Partner · Riverside County, CA

Frequently Asked Questions

Quick answers to common questions on this topic.

12 months of sustained execution. Months 1-3 were foundation work (GBP, reviews, LSA setup, Google Ads infrastructure). Months 4-6 were scaling the paid channels. Months 7-12 were compounding organic and improving the answer-rate on inbound calls.

Still Have Questions?

Can't find what you're looking for? Our digital marketing experts are here to help you grow your business.

5.0 Rating 20 Reviews

What Contractors Say About Working With Us

Real reviews from real businesses we've helped grow

"Excellent marketing and advertising services in Riverside. They helped improve our online presence and generate leads. Professional, responsive, and results-driven."
C
Collin Berney
2 weeks ago
Google LSA & GBPRiverside
"I only wish more service providers operated at the same level as Daniel. He approached me about my business in Perris and provided a clear advertising strategy that made a real difference in my bottom line."
D
D F
2 weeks ago
Advertising StrategyPerris
"Daniel was extremely helpful with my listing problem. My listing was labeled 'ineligible' for ad campaigns. Daniel troubleshot the issue and took it a step further with listing optimization to boost visibility."
L
Louis LaBelle
2 weeks ago
Amazon Advertising
"DG Agency has been an excellent partner for TMC Roofing. They understand what it takes to market a roofing company and have been very proactive, organized, and responsive. From strategy to execution, their team has helped us strengthen our brand and online presence. Highly recommend."
T
Travis Christensen
2 weeks ago
Roofing Marketing
"The team at DG Agency actually listens. They customized a strategy for our brand rather than selling a cookie cutter package. We've seen steady growth on both Google and Facebook since signing on."
M
Mick Trick
15 weeks ago
Google & Facebook Ads
"Our contracting business was struggling to compete online. DG Agency built us a new site, managed SEO, and launched Google Ads. Leads started flowing in quickly and we're finally busy year round."
A
ad wda
15 weeks ago
Web Design & Google Ads
"If you want a marketing partner that actually delivers, call DG Agency. They boosted our visibility in Murrieta with Google Business Profile management and Local Services Ads. Professional, responsive, and results focused."
T
Tomisin Bayode
17 weeks ago
Google LSA & GBPMurrieta
"I've worked with other marketing agencies before, but DG Agency is different. They're data driven and transparent. The weekly updates and clear communication make me feel confident my money is well spent."
D
Daniel Alakwe
17 weeks ago
Data-Driven Marketing
"Honest, reliable, and results driven. We run a pest control company and DG Agency's reputation marketing service helped us get dozens of new 5-star reviews, which instantly increase trust with new customers."
C
Carl Johnson
17 weeks ago
Reputation Management
"I manage a local salon in Temecula and had no idea where to start with online marketing. DG Agency set up our website, boosted our Google profile, and now clients find us so easily. They made it simple and stress free."
A
Anita Pimenta
17 weeks ago
Web Design & GBPTemecula
"Daniel and his team are sharp. They handled our Amazon advertising and account management, and sales for our brand have never been stronger. They know Amazon inside and out, worth every penny."
E
Everol Watson
18 weeks ago
Amazon Advertising
"We partnered with DG Agency for Facebook and Google Ads, and I'm blown away by the ROI. They don't just run ads, they explain strategy and show the numbers. It feels like they're part of our team, not just another vendor."
J
Joe Fabricio
18 weeks ago
Facebook & Google Ads
"DG Agency helped me get my business up and running. I appreciate the frequent, clear communication. Definitely recommend."
M
Mary Beth Gonzalez
18 weeks ago
Business Launch
"Daniel has been spot on with google ad campaigns and has really targeted our customer base. Definitely recommend if you looking to grow your business."
M
Mike Bland
18 weeks ago
Google Ads
"I own a roofing company in Riverside and DG Agency helped us finally figure out online leads. Their Local Services Ads and SEO work doubled our quote requests in just two months. Highly recommend if you want real growth."
S
Santiago Hernandez
18 weeks ago
Google LSA & SEORiverside
"Working with DG Agency has been a game changer for my business. They set up our Google Ads and optimized our profile, and within weeks we started getting more calls than ever. Transparent, professional, and genuinely care about results."
J
jhomar ambos
18 weeks ago
Google Ads & GBP

Rated 5.0 out of 5 by 20 verified clients

Based on Google Business Profile reviews

Free Assessment

How Does Your Marketing Stack Up?

Score your marketing against the exact 6-pillar system that took a contractor from $3M to $8M in 12 months. Takes 5 minutes. Results are instant.

Get My Free Marketing Score

No spam. No sales pitch. Just your score and what to fix first.

Ready to get your phone ringing?

See exactly where your marketing is leaking money and calls.

Book a Call — See If We're a Fit