Foundation rebuild for a BC renovation
contractor โ and the sustained partnership after.
Full custom WordPress theme build (no page builders, no SEO plugins), 278 URL redirect migration via native theme handler, 13 services across 8 service-area location pages, flat URL architecture, DNS migration from a prior agency's nameservers, custom contact form handler, and JSON-LD schema hardcoded across all templates. Foundation delivered in approximately 6 weeks. Local SEO and Website SEO engagement continues ongoing.
Family-owned renovation contractor in the Greater Vancouver area
A family-owned home renovation contractor operating across Metro Vancouver and surrounding municipalities in British Columbia. Established trade reputation, multi-service scope (kitchen renovation, bathroom renovation, basement finishing, flooring, painting, custom millwork, and more), and a service area covering 8 distinct communities across the Greater Vancouver region.
When they engaged us, the digital situation was typical of contractors who had been with a local SEO agency: a website built on someone else's infrastructure (nameservers under the prior agency's control), no clear picture of which old URLs still had search visibility, schema either absent or generated by a plugin they did not fully control, and no documented redirect plan if the agency relationship ended. The prior agency departure left a DNS situation that needed careful migration to avoid mail and website downtime.
The goal was ownership and control. A custom theme they own outright, redirects documented in code, schema hardcoded into templates โ and an ongoing SEO partnership to compound on that foundation.
Four foundation problems identified
DNS and infrastructure locked to prior agency
Domain nameservers were pointed to the previous SEO agency's infrastructure. Leaving meant risking website and email downtime during the transfer window. No DNS records were documented (no MX records on file, no SPF/DKIM/DMARC configuration). Recovery required mapping all live records before touching anything.
278 orphaned URLs creating crawl waste
The prior website structure had accumulated 278 orphaned URLs โ old service pages, deprecated location paths, and prior URL naming patterns โ with no redirect map in place. Each returning a 404 or soft 404, diluting crawl budget and losing whatever ranking signals those URLs had accumulated. No agency had documented these before us.
Schema absent or plugin-generated without validation
Schema markup was either missing entirely on service and location pages, or generated by a plugin with no validation against visible HTML content. FAQPage schema was present in one template but the questions in schema did not match the questions visible on the page โ a Google-penalizable mismatch. LocalBusiness and BreadcrumbList were absent from most templates.
Flat service coverage without location-specific targeting
The previous site treated the entire service area as one undifferentiated territory. No dedicated location pages existed for the individual municipalities the contractor served. A homeowner in Port Moody searching "renovation contractor Port Moody" had no location-specific page to land on โ only a generic service page that competed weakly against contractors with dedicated location targeting.
Three insights worth surfacing
Three patterns from this specific engagement that generalize across renovation contractor work in competitive Canadian markets โ surfacing them because most agencies do not, and they affect outcomes more than basic on-page fixes:
- When a contractor leaves an agency, the DNS situation is almost always undocumented โ and the risk window during nameserver migration is the most dangerous part of the transition. In Metro Vancouver renovation markets, missing even a few hours of email during a busy period costs real leads. The standard advice is "update nameservers, wait 48 hours for propagation" โ but that advice skips the prerequisite step of auditing and documenting every live DNS record before touching anything. This engagement required mapping A records, CNAME records, MX records for email routing, SPF and DKIM records for email authentication, and DMARC policy records โ all before initiating the migration to Hostinger. We completed the transfer with zero website downtime and zero email interruption. The reason most contractor site migrations produce downtime is that the migration starts before the audit is complete. The audit is the entire risk mitigation strategy.
- Metro Vancouver's municipal fragmentation creates a Local SEO opportunity that most renovation contractors underuse: dedicated location pages for each municipality outperform generic service-area claims by a significant margin. Greater Vancouver is not one search market. Coquitlam, Port Coquitlam, Port Moody, Burnaby, Vancouver, Richmond, North Vancouver, and West Vancouver each have their own Googlebot local index context and their own high-intent search queries ("bathroom renovation Burnaby", "kitchen contractor North Vancouver"). A single service page claiming to cover all of them produces diluted relevance for each municipality. We built dedicated location pages for all 8 service areas โ each with location-specific H1, location-specific schema, and location-specific internal linking โ and indexed them under a flat URL architecture (depth 2 maximum). This is not a Vancouver-specific insight; it applies to any multi-municipality service area where Google local indexes are fragmented. The insight is that most renovation contractors and their agencies treat the service area as a monolith because building 8 pages is more work than claiming one territory. The ranking gap is proportional to that effort gap.
- Redirect maps assembled from Google Search Console data alone miss a significant fraction of orphaned URLs โ Bing Webmaster Tools and historical crawl data are required to capture the full picture. The standard agency approach to redirect migration is: export GSC coverage report, redirect everything flagged. This engagement had 278 orphaned URLs. GSC alone would have surfaced approximately 180-190 of them. The remaining 80-90 came from Bing Webmaster Tools (which indexes independently and often retains old URLs longer than Google after a site migration) and historical crawl data. URLs not redirected continue to return 404s and accumulate negative crawl signals even if Google has stopped indexing them โ because Bing, DuckDuckGo, and AI crawlers (Googlebot-extended for AI Overviews, GPTBot, Anthropic-AI) all maintain separate crawl histories. A contractor that completes a redirect migration using only GSC data is leaving a meaningful fraction of their crawl waste in place. The multi-source approach added roughly 4 hours of audit work but resolved the problem completely rather than partially.
These observations generalize across renovation contractor and broader home services work in fragmented multi-municipality Canadian markets โ not unique to this single engagement.
What we built and how
Full 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, XML sitemap, 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, 8 service-area location page templates targeting individual Greater Vancouver municipalities (Coquitlam, Port Coquitlam, Port Moody, Burnaby, Vancouver, Richmond, North Vancouver, West Vancouver), individual renovation service templates covering 13 distinct services (kitchen renovation, bathroom renovation, basement finishing, flooring, painting, custom millwork, and more), and a custom contact form handler routing lead inquiries directly to email with no third-party form plugin involved.
278 URL redirect migration via native theme handler
The previous website history left 278 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 indexed URLs from Google Search Console (Coverage and Sitemap data) and Bing Webmaster Tools. Supplemented with historical crawl data to capture URLs no longer appearing in GSC but still indexed by other crawlers. Cross-referenced against the new site structure. Mapped every old URL to its closest current equivalent (specific service-area pages where possible, parent service category pages where exact match did not exist, homepage only as last resort). Loaded all 278 redirect rules into the native theme handler as a structured PHP 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. No plugin-format conversion required during migration.
DNS migration from prior agency nameservers
The domain was pointed at the previous agency's nameservers with no documentation of the live DNS records. Before initiating any migration, we performed a complete DNS audit: A records, CNAME records, MX records for email routing, SPF record (email sender authentication), DKIM record (email signature authentication), and DMARC policy record.
Migration sequence: replicated all records at the new registrar before switching nameservers, updated nameservers at the domain registrar (GoDaddy) to point to Hostinger, added Hostinger A records for website hosting, re-added all email records (MX, SPF, DKIM, DMARC) using the private email provider record set. Propagation monitored across multiple DNS checkers. Zero website downtime and zero email interruption during the full transfer window. Author enumeration vulnerability patched in the custom theme during this same deployment window.
Schema and on-page SEO across all templates
Comprehensive schema implementation across every template, hardcoded via native theme helper functions. Schema types implemented: LocalBusiness with GeneralContractor subtype on homepage and contact page, Service schema on each individual renovation service page, 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.
On-page SEO: each location page received a location-specific H1 (e.g., "Renovation Contractor in Burnaby"), location-specific meta title and description, location-specific internal links pointing to the relevant service pages for that municipality, and location-referenced body content. Each of the 13 service pages received service-specific schema, service-specific keyword targeting in H1 and H2 positions, and internal links connecting related services and relevant location pages. All schema injected via theme helper functions โ zero plugin dependency.
8-location service-area page architecture
Dedicated location pages built for 8 service areas across Greater Vancouver: Coquitlam, Port Coquitlam, Port Moody, Burnaby, Vancouver, Richmond, North Vancouver, and West Vancouver. Each page is a distinct template targeting that municipality specifically โ not a duplicate of a generic service page with the city name swapped.
- Location-specific H1: exact query format a homeowner in that municipality would search ("Renovation Contractor in Port Moody")
- Location-specific schema: LocalBusiness schema with municipality-specific areaServed property
- Location-specific internal links: links from each location page point to the service pages most relevant to that area's demand pattern
- Flat URL structure: /renovation-contractor-burnaby/ not /services/locations/burnaby/ โ depth 2, clean URL, matches exact search query format
- NAP consistency: contact details consistent across all location pages and matching Google Business Profile exactly
The theme auto-creates these 26 core pages (8 location pages + 13 service pages + homepage, contact, about, blog) on activation via a theme setup function. No manual page creation required after theme installation.
Ongoing Local SEO and Website SEO partnership
After the foundation rebuild, the engagement transitioned to ongoing monthly Local SEO and Website SEO. This is the compounding layer that the foundation rebuild enables but does not deliver on its own.
Ongoing scope includes: Google Business Profile management (weekly Google Posts, photo uploads with descriptive geo-tagged filenames, Q&A monitoring, service list updates), citation building and NAP consistency enforcement across BC renovation contractor directories (HomeStars, BuildDirect, Houzz, BBB, Homestars, ContractorReferral), schema audit reruns after WordPress core updates, monthly content additions targeting seasonal renovation queries (spring exterior renovation, fall basement project timelines, BC permit process for kitchen renovations), Google Search Console monitoring for crawl errors and new coverage gaps, and ongoing internal link updates as new content is added. The foundation rebuild was the one-time cost. The ongoing engagement is where the ranking compound interest accumulates.
The methodology in one sentence
Foundation first (custom theme, redirects, schema, DNS migration), then sustained partnership (location pages, GBP management, citations, content) โ 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 Metro Vancouver renovation 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 Metro Vancouver renovation 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.
How did you handle 278 redirect rules without an SEO plugin?
All 278 redirect rules were loaded into the native theme redirect handler as a structured PHP array. The handler executes at the WordPress init hook, checks the incoming request URI against the redirect map, and issues a 301 before WordPress fully loads. Zero database queries per redirect, version-controlled with the theme code, no plugin-format conversion required. Source data: Google Search Console coverage reports, Bing Webmaster Tools, and historical crawl data โ all three sources required to capture the full picture.
What is a flat URL architecture and why does it matter for renovation contractors?
Flat URL architecture means every page is reachable within two clicks from the homepage (depth 2 maximum). For a multi-service, multi-location contractor, this keeps PageRank distribution efficient and simplifies location-specific targeting. Instead of /services/renovation/kitchens/coquitlam/ (depth 4), the flat architecture uses /kitchen-renovation-coquitlam/ (depth 2). Shorter, cleaner URL, matches the exact query format a homeowner would search.
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 redirect behavior, 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). Zero plugin update risk affecting SEO.
Can you do this work for my renovation business in Canada or the US?
Yes, for renovation and home improvement contractors in Canada and the United States. Our Growth Bundle covers ongoing Local SEO and Website SEO at $799-$899 per month. Custom website rebuilds are $997-$3,997+ one-time. See our contractors page for the full service breakdown, or get a free audit to see where your current setup stands.
Case study documented by the RZ Web Media Team. Renovation contractor SEO and custom website development for Canadian and US contractors since 2020. Last updated June 2026. About our team.
More from RZ Web Media
Contractor Marketing & Websites
Our full renovation and roofing contractor service breakdown โ pricing, scope, named competitor comparisons.
Learn more โNortheast US Renovation Contractor
Same service scope, different market context: full custom theme build, redirect migration, and ongoing Local SEO for a renovation contractor in the Northeast US.
Read the case study โAll Case Studies
Browse anonymized case studies across roofing, renovation, restaurant, and immigration verticals.
See all โ