Rebuilding a Southeast US roofing
contractor's Local SEO from scratch.
Custom WordPress theme build, 590+ URL redirect migration via native theme handler (no SEO plugins involved), schema audit across all service-area templates, Google Business Profile cleanup including removal of wrong-business-name posts, 100-citation playbook across 6 architecture tiers, and ongoing technical SEO with review generation. Foundation work delivered in approximately 8 weeks; ongoing engagement continues.
Independent roofing contractor in the Southeast US
An independent residential roofing contractor operating across multiple counties in the Southeast US. Storm-zone market (hurricane and severe weather drives seasonal demand spikes). Established business with field reputation, but inherited a messy web presence from previous management.
When they engaged us, the foundation problems were substantial: a platform-dependent website, hundreds of orphaned URLs from prior site migrations creating crawl waste, schema markup that was either missing or incorrect on most templates, a Google Business Profile that had been polluted with posts referencing a wrong business name from earlier ownership, weak citation distribution, and an inconsistent review velocity that was not keeping pace with competitor profiles.
The goal was not incremental optimization. It was foundation rebuild from the ground up.
Four foundation problems identified
Platform-dependent old website with orphaned URL chaos
Previous website ran on a platform-locked theme with plugin-managed SEO. Multiple prior migrations had left 590+ orphaned URLs (404s, broken internal links, residual paths from old service pages) creating crawl waste and ranking signal dilution. No clear redirect map existed.
Schema markup missing or wrong across templates
Schema audit revealed inconsistent or missing markup across critical templates: missing LocalBusiness schema on the homepage, no Service schema on individual roofing service pages, broken FAQ schema where the visible HTML did not match what schema declared, missing Speakable schema entirely for AI Overviews and voice search.
GBP polluted with wrong-business-name posts
Google Business Profile audit revealed a quiet ranking killer: the profile had been used to publish posts referencing a wrong business name (legacy from prior management or shared marketing). Google could not consistently associate the profile with the actual business identity. Ranking suppression was visible but cause was hidden.
Weak citation distribution and inconsistent reviews
Citation profile was thin and inconsistent. Major roofing industry directories were missing or had outdated NAP (Name/Address/Phone). Review velocity was approximately 1-2 reviews per quarter when competitor profiles in the same market were generating 8-15 per quarter. Review responses were absent.
Three insights worth surfacing
Three patterns from this specific engagement that generalize across roofing contractor work โ surfacing them because most agencies do not, and they affect outcomes more than raw citation counts or basic technical fixes:
- The 6-tier citation architecture matters more than raw citation count, and most agencies report counts without explaining architecture. A roofing contractor with 30 citations distributed across the right 6 tiers consistently outranks a contractor with 100 citations concentrated in low-authority sources. The tiers we built: (1) premium business directories with strict NAP enforcement (BBB, Apple Maps, Bing Places, Google Business Profile); (2) roofing industry directories (HomeAdvisor, Angi, GAF Find a Contractor, CertainTeed Contractor Finder, Owens Corning Roofing, IKO Roofing Contractor Locator); (3) regional Southeast US directories (state contractor association listings, regional business directories); (4) B2B and data aggregator networks (Foursquare, Yext data network, Acxiom, Infogroup, Localeze) that feed downstream listings automatically; (5) niche local directories (Chamber of Commerce, neighborhood-specific listings, local newspaper business directories); (6) review platforms (Google Business Profile, Yelp, Facebook, BBB). Each tier produces ranking signals at a different level. The architecture compounds in ways raw count alone does not. Most agencies report "we built X citations" because count is easier to demonstrate than tier strategy. Tier strategy is what actually moves rankings.
- Wrong-business-name posts in Google Business Profile are a quiet ranking killer most contractors never check. During this engagement we discovered the GBP was polluted with posts referencing a wrong business name (legacy from prior management or shared marketing). Each post created an inconsistency signal that Google had to reconcile when associating the profile with a business identity. Ranking suppression was visible but the cause was hidden โ most contractors would not think to audit historical GBP post content. Removing those posts, rebuilding consistent NAP across all future posts, and ensuring all visual assets (cover photo, logo, photo gallery) referenced only the correct business name produced measurable ranking improvement within 4-6 weeks. This is one of the most underused diagnostic steps in contractor GBP audits. We add it to every contractor onboarding now as a result of finding it here.
- Plugin-free SEO is operationally cleaner for contractors long-term, but most agencies do not offer it because the work shifts to development time rather than plugin configuration time. Most contractor websites we audit use SEO plugins for schema, redirects, and meta tag management. The plugins work for basic cases but create platform dependency: every plugin update risks affecting schema or redirect behavior, switching plugins later requires migration work, and plugin databases add overhead. For this engagement we rebuilt the entire site with native theme components โ hardcoded schema injected via theme helper functions, native redirect handler managing the 590+ migrated URLs, native meta tag injection per template, native form handler for lead capture. Zero plugin dependency outside LiteSpeed Cache for performance. The 590+ redirects migrated cleanly without plugin-format conversion issues. Long-term maintenance for the client is simpler: no plugin update notifications affecting SEO, no risk of plugin abandonment breaking redirect rules, no plugin database queries on every page load. The trade-off is that the work happens at build time rather than configuration time, which most agencies do not have the development depth to deliver. The outcome justifies the investment for contractors who plan to keep their website for 5+ years.
These observations generalize across roofing contractor and broader home services work โ not unique to this single engagement.
What we built and how
Custom WordPress theme build
Hand-coded WordPress theme built in-house. No page builders (no Elementor, no Divi, no Beaver Builder). No SEO plugins (no RankMath, no Yoast). The theme handles everything natively: schema injection, meta tags, form submissions, redirects, and template rendering. Only third-party plugin: LiteSpeed Cache for performance.
Theme architecture: flat URL structure (depth 2 maximum), mobile-first responsive, PageSpeed 95+ on mobile and desktop, service-area page templates per county served, individual roofing service templates (residential roofing, commercial roofing, roof repair, roof replacement, emergency roofing), and a custom form handler routing lead inquiries to a HIPAA-style separation (general inquiry forms route to email, never collecting sensitive customer data through unsecured channels).
590+ URL redirect migration via native theme handler
The previous website history left 590+ orphaned URLs that needed proper 301 redirects to consolidate ranking signals and prevent crawl waste. The migration was done entirely through the custom theme redirect handler โ not through an SEO plugin.
Process: exported all old URLs from Google Search Console (Coverage and Sitemap data), Bing Webmaster Tools, and historical Wayback Machine snapshots. Cross-referenced against current site structure. Mapped every old URL to its closest current equivalent (specific service pages where possible, parent service category pages where exact match did not exist, homepage only as last resort). Loaded the 590+ redirect rules into the native theme handler as a structured array.
The native handler executes at the WordPress init hook, checks the request URI against the redirect map, and issues a 301 response before WordPress fully loads. Lower latency than plugin-based redirect handling, no database queries per redirect, and the rules are version-controlled with the theme code.
Schema audit and rebuild across all templates
Comprehensive schema audit across every template, then rebuild from scratch with hardcoded schema. Schema types implemented: LocalBusiness on homepage and contact page, RoofingContractor on homepage (more specific Schema.org subtype), Service schema on each individual roofing service page (residential roofing, commercial roofing, roof repair, etc.), FAQPage schema on FAQ-bearing pages with strict matching between schema content and visible HTML, BreadcrumbList on every page, Speakable schema with CSS selectors for AI Overviews and voice search, and Article schema on blog content.
Schema is injected via theme helper functions โ not plugins. Every template calls the appropriate helper (`rzwm_service_schema()`, `rzwm_faq_schema()`, `rzwm_breadcrumb_schema()`) which returns properly structured JSON-LD. The schema graph is then output in the document head. No plugin can break the schema; updates happen at the theme code level.
Google Business Profile cleanup
The GBP audit surfaced the most consequential single finding of the engagement: historical posts referencing a wrong business name (legacy from prior management). Each post was creating an inconsistency signal Google had to reconcile.
Cleanup actions: removed all wrong-business-name posts and replaced with consistent NAP posts going forward; standardized cover photo, logo, and primary photos to reference only the correct business identity; corrected the business name field where prior edits had introduced variations; cleaned the service area configuration to a 2-hour drive radius with named counties specified individually (rather than the over-broad statewide claim that had been there); rebuilt the services list to match the actual website service pages exactly; established a weekly Google Posts cadence with consistent branding; and rebuilt the photo gallery with descriptively-named, geo-tagged photos of completed roofing jobs.
Ranking improvement on city-specific roofing queries appeared within 4-6 weeks of post cleanup, before the citation playbook was even at full execution. This is the single change with the most disproportionate impact in this engagement.
100-citation playbook across 6 architecture tiers
Citation distribution across 6 deliberate tiers (not just raw count). Each tier serves a different ranking signal function:
- Tier 1 โ Premium business directories with strict NAP enforcement: Better Business Bureau, Apple Maps Connect, Bing Places, Google Business Profile
- Tier 2 โ Roofing industry-specific directories: HomeAdvisor, Angi, GAF Find a Contractor, CertainTeed Contractor Finder, Owens Corning Roofing Contractor, IKO Roofing Contractor Locator
- Tier 3 โ Regional Southeast US directories: State contractor association listings, regional business directories, statewide trade association directories
- Tier 4 โ B2B and data aggregator networks: Foursquare, Yext data network, Acxiom, Infogroup, Localeze โ these feed downstream listings to hundreds of secondary sites automatically
- Tier 5 โ Niche local directories: Chamber of Commerce, neighborhood-specific listings, local newspaper business directories
- Tier 6 โ Review platforms: Google Business Profile reviews, Yelp, Facebook Business reviews, BBB reviews
Every citation tracked in a master spreadsheet with NAP-exact-match verification, login credentials maintained for ongoing updates, and re-audit schedule every 6 months. NAP consistency is enforced across all 100 citations โ any directory with the wrong phone format or address abbreviation gets corrected before the citation counts as complete.
Ongoing technical SEO + review generation
After the foundation rebuild, ongoing engagement continues monthly with: schema audit reruns (catching anything broken by WordPress core or theme updates), weekly Google Posts on the GBP, monthly content additions to the blog covering seasonal roofing topics (storm season prep, insurance claim guidance, manufacturer warranty explanations), citation re-verification every 6 months, and a structured review generation workflow.
Review generation: a 3-touch SMS workflow triggered when a job completes โ initial request within 24 hours of job completion, gentle follow-up at 5 days, final follow-up at 10 days. This raised review velocity from 1-2 per quarter to 8-12 per quarter, matching and exceeding competitor profiles in the same market.
The methodology in one sentence
Foundation first (custom theme, redirects, schema, GBP cleanup), then layer compounding work (citations, content, reviews) โ and never use SEO plugins, because plugin dependency creates long-term maintenance risk for contractors who plan to keep their website for 5+ years.
Why we did not name the client
The client did not give written permission to be named publicly. They operate in a competitive Southeast US roofing market and prefer their specific playbook not be published with their name attached, because competitors would either copy the approach or attempt to recruit our agency away from them.
The work, scope, findings, methodology, and observations described here are all real. Only the specific identity is withheld. If you are seriously considering working with us and want to verify this case study specifically, we will walk you through the specifics on a call once we have confirmed you are not a competitor scoping the work. Often we can connect you with the actual client for a reference call after the client has agreed to take it.
That is the level of transparency we commit to once trust is established on both sides.
Case study methodology questions
Why is this case study anonymized?
The client did not give written permission to be named publicly. They operate in a competitive market and prefer their specific playbook and identity not be published with their name attached. The work, scope, findings, and methodology described are all real โ only the specific identity is withheld until we have written consent.
Can you connect me with the actual client for a reference?
Yes, on a call, after we have confirmed you are not a competitor scoping the work. Once you are a seriously engaged prospective client and the existing client has agreed to take the reference call, we can introduce you directly.
What does a 100-citation 6-tier playbook actually include?
Tier 1: premium directories (BBB, Apple Maps, Bing Places, GBP). Tier 2: roofing industry directories (HomeAdvisor, Angi, GAF, CertainTeed, Owens Corning, IKO). Tier 3: regional Southeast US directories. Tier 4: B2B data aggregators (Foursquare, Yext, Acxiom, Infogroup, Localeze). Tier 5: niche local (Chamber, neighborhood listings, local newspapers). Tier 6: review platforms (GBP, Yelp, Facebook, BBB). Architecture matters more than raw count.
Why no SEO plugins like RankMath or Yoast?
Plugin-free SEO is operationally cleaner long-term. Plugins create platform dependency: every update risks affecting schema or redirects, switching plugins requires migration, plugin databases add overhead. We build schema, meta tags, redirects, and form handling into the custom theme. Only LiteSpeed Cache plugin is used (for performance).
How long does this type of rebuild take?
Initial rebuild ran approximately 8 weeks for foundation work: custom theme, redirect migration, schema audit, GBP cleanup, citation playbook execution. Ongoing technical SEO and review generation continues monthly. Citation building specifically takes 4-12 weeks. Full ranking impact from a complete rebuild typically appears within 3-6 months and compounds through month 12.
Can you do this work for my roofing business?
Yes, for roofing contractors in the United States. Our Growth Bundle covers ongoing Local SEO + Website SEO at $799-$899/month. Custom website rebuilds are $997-$3,997+ one-time. The 100-citation 6-tier playbook is included in our Local SEO service. GBP audit and cleanup is included in onboarding. See our /contractors/ page or get a free audit.
Case study documented by the RZ Web Media Team. Roofing contractor SEO and custom website development for US contractors since 2020. Last updated June 2026. About our team.
More from RZ Web Media
Contractor Marketing & Websites
Our full roofing and renovation contractor service breakdown โ pricing, scope, named competitor comparisons.
Learn more โBritish Columbia Renovation Contractor
Full custom WordPress theme, 278-redirect migration via native theme handler, 8-city location architecture, DNS migration, and ongoing Local SEO partnership.
Read the case study โAll Case Studies
Browse anonymized case studies across roofing, renovation, restaurant, and immigration verticals.
See all โ