Home / Case Studies / North Shore Roofing
Case study · Roofing

North Shore Roofing Company.

A rebrand and website rebuild that anchored a multi-year lead-gen program for a growing North-Shore-MA roofing business.

The brief

Grow from a crew to a recognized local brand.

The client had a great reputation with homeowners and contractors, but a website that didn't reflect it — and a marketing program that depended entirely on word of mouth and referrals. Lead flow was healthy in storm seasons and unpredictable the rest of the year, with no visibility into where calls were coming from or what they cost.

We were asked to bring the brand, site and acquisition system up to the level of the work itself — and to build something the office team could run without depending on us indefinitely.

Engagement: Multi-year retainer, ongoing. Initial 12-week build phase followed by monthly SEO, paid media, and review-program management.

Where we started

The starting line.

Before the engagement, the business had:

  • A WordPress site built years earlier that wasn't mobile-optimized and loaded in 6+ seconds.
  • A Google Business Profile claimed but mostly inactive — no recent posts, photos, or systematic review-asking.
  • Roughly two dozen Google reviews, with months between new ones.
  • No tracking infrastructure — no GA4, no conversion tracking, no call tracking, no clear sense of cost-per-lead from any channel.
  • A small Google Ads account running broad-match campaigns with no negative keywords and no Local Services Ads.

Every channel was technically present, but none of them were measurable.

What we did

A full-funnel engagement.

01 / Work

Brand refresh

Updated mark, type system and color palette — rolled out across trucks, uniforms and proposals.

02 / Work

New website

Modern marketing site with service pages, town-level landing pages and lead-capture wired to the CRM.

03 / Work

Local SEO

Google Business Profile cleanup, citations, and a content plan built around storm and seasonal terms.

04 / Work

Paid search

Google Ads and Local Services Ads tuned for emergency and storm-season lead flow.

05 / Work

Review program

Post-job review requests with a workflow the office team can actually run.

06 / Work

Reporting

Monthly reporting on leads, cost per lead and attributed revenue — in plain English.

How we got there

The playbook.

Months 1–3 — Foundations. Brand refresh and full website rebuild on a fast, mobile-first stack. Conversion tracking wired end-to-end: GA4, Google Ads conversion import, dynamic call tracking on every page, and lead-form submissions piped into the CRM with attribution preserved. GBP cleaned up — categories, services, photos, hours — and a recurring posting schedule started.

Months 4–6 — Local SEO & reviews. Town-level landing pages built around storm and seasonal terms (ice dam removal, storm damage, asphalt vs. metal, roof repair vs. replacement). Citation cleanup across the major local directories. A post-job review program rolled out — branded SMS request sent within 24 hours of project sign-off, fallback email at 72 hours. Review velocity went from a couple per month to several per week.

Months 6+ — Paid media optimization. Google Ads restructured into tight ad groups by service line and location. Negative keyword sweeps every two weeks. Google Local Services Ads enabled and tuned. Storm-season budgets pre-loaded so the campaigns scale automatically when weather hits.

Ongoing. Monthly reporting in plain English — leads, cost per lead, channel attribution, and a one-page summary the owner can read in two minutes. Quarterly strategy reviews covering what's working, what's not, and where to put the next dollar.

Outcomes

The numbers.

Organic lift

+280%

Year-over-year organic traffic after 12 months of local SEO work.

Cost per lead

-41%

Drop in paid-search cost per lead once the campaign was restructured.

Reviews

4.9★

Average rating across 140+ post-engagement reviews.

Numbers measured against the 12-month baseline preceding engagement kickoff. Organic-traffic figure pulled from Google Search Console clicks. Cost-per-lead figure compares the first 90 days of the restructured Google Ads program to the prior 90 days. Review count is total post-engagement reviews collected via the recurring review-request workflow.

Why it worked

What we'd repeat.

Three decisions did most of the heavy lifting:

  1. Conversion tracking before traffic. Every channel was instrumented before we tried to scale any of them. Without that, +280% organic traffic would have been a vanity number — instead we knew which queries, pages and ads were producing booked jobs.
  2. The review program ran on autopilot. Once the SMS workflow was wired into the CRM, the office team didn't have to remember to ask. Reviews compounded weekly without anyone managing them, and the GBP started outranking competitors on volume alone.
  3. Paid media stayed restructured, not just optimized. Tight ad groups + aggressive negatives + LSA gave a much narrower lead profile — fewer "tire-kicker" clicks, more high-intent estimate requests. The 41% CPL drop wasn't from bidding tricks; it was from refusing to spend on irrelevant matches.
Ready when you are

Want results like this for your business?

Prefer the full form? Go to contact page →