361-Page Multi-Location Dental WordPress Rebuild
A multi-location dental rebuild across 361 URLs, 14 templates, and 117 redirects for a California practice — 79-item checklist, 125 hours, 24 days.
Screenshots captured by automated tooling — some elements may not have loaded fully or may layer on top of each other. For the most accurate view, visit the live site →
Rebuild the site on a new stack. Implement the spec. Don't improvise. Hand it back ready for cutover.
Client (end user): Smile Craft Dental — General, Cosmetic & Restorative Dentistry, Redwood City, CA · Sunnyvale, CA
Engagement: White-label development for a US marketing agency
Delivered: September 2025 · 24 days · ~125 hours scoped in the agency’s workbook
The Craft of a Rebuild
361 pages of a multi-location dental WordPress rebuild on Elementor Pro — two practice locations, 14 reusable templates, and a 117-redirect migration spec, delivered to a 79-item launch checklist in 24 days. The agency owned the URL map and the redirect sheet; we owned the per-page execution and the pre-cutover crawl verification.
This case study is a record of one such rebuild, in which the agency owned the strategy and we owned the execution.
Snapshot
| Field | Value |
|---|---|
| End-client industry | Healthcare — General, Cosmetic & Restorative Dentistry |
| End-client | Smile Craft Dental (Redwood City, CA · Sunnyvale, CA) |
| Engagement | White-label WordPress build for a US marketing agency specialising in local-business websites |
| Project Type | WordPress rebuild with Elementor Pro on Kinsta |
| Scope | Full site rebuild across two locations — 361 URLs, 7 doctor bios, services, blog, patient resources, smile gallery |
| Timeline | 24 days (1–25 Sep 2025) |
| Effort | ~125 hours scoped in the agency’s workbook |
| Team | 6 specialists (lead dev · 3 QA · PM) |
| Tech Stack | WordPress · Elementor Pro · Gravity Forms · Kinsta · Yoast · Screaming Frog · Site Checker (xaverPRO QA plugin) |
| Content parity check | Original-vs-rebuild content diff cleared before handoff — no missing copy, no broken internal links, no structural drift |
| Delivered | Spec followed line-for-line — 117 redirects, 361 URLs migrated, 14 templates, 79-item launch checklist |
| Retained engagement | Post-launch fix rounds and feedback-plugin monitoring across Oct–Dec 2025 — delivered in additive sprints inside the same agency relationship |
| Engagement cadence | 34 agency-raised issues · all closed by handoff (29-day active span, 2025-09-26 – 2025-10-24) |
| Review rounds | ≈8 review rounds across the 24-day calendar window |
| Per-ticket effort | 24 internal Redmine tickets · median 22m / P75 50m per ticket |
| Launch checklist | 79 items, signed off before cutover |
The Brief
The agency had a retained dental client — Smile Craft Dental, a multi-location practice serving Redwood City and Sunnyvale, CA — whose existing site needed a WordPress rebuild on Kinsta. The agency had completed the strategic work: a Google Sheets workbook mapping every URL to migrate, every meta title and description to preserve, a full template list, and a 79-item launch checklist covering pre- and post-migration validation.
The ask was specific. Take the spec as given; rebuild the site on Elementor Pro; hand it back ready for cutover. Remain outside the client-facing loop. Implement the SEO decisions as written.
One structural decision made this rebuild more demanding than a same-structure migration: the practice runs two locations, each with its own service-page subtree. The workbook carried separate URL paths for Redwood City and Sunnyvale under /redwood-city/ and /sunnyvale/, with 117 redirect mappings from the old URL structure to the new. Additionally, the practice lists seven doctors, each requiring an individual bio page. The spec covered every path change and every template assignment. Our job was to implement each row exactly as written.
Risk context. A rebuild with 361 URLs across two locations and seven doctors is not just a migration — it is a consolidation of multiple local-search surfaces. The risk is not a single missed redirect; it is a systematic mis-routing of location-specific service pages or a doctor-bio template that fails to scale to seven practitioners. Each location carries its own service taxonomy, its own contact details, its own local-phone routing. A redirect that lands on the wrong location’s lander, or a doctor page that inherits the wrong city phone number, passes a visual check and fails only when a patient calls the wrong office.
How We Did It
1. Template-first build. Rather than rebuilding 361 pages one by one — which would have multiplied the per-page error surface across two locations with separate service subtrees — we collapsed them into fourteen reusable templates and fit every page into them:
- Homepage, Contact Us, About Us, Office Tour — the brand-defining pages
- Services Lander — powering location-specific service category pages for both Redwood City and Sunnyvale
- Service Page — a single reusable template powering all individual service pages across both locations (cosmetic dentistry, restorative dentistry, general dentistry, emergency dentistry, orthodontics, pediatric dentistry, and more)
- Doctor Page — applied to all seven practitioner bios (Amy Nguyen DDS, J Janice Chou DDS, Gregory Ding DDS, Rita Huang DDS, Nazak Noorian DDS, Nehal Shah DMD, Victoria Goh DDS)
- Blog Lander + Blog — the content archive and individual post template
- Smile Gallery — the practice’s before/after photo gallery
- Patient Resources — Financing, Insurance, Payment Plan / Membership, Payment Policy
- Default Template — privacy policy, sitemap, and fallback pages
Fourteen templates, whole site delivered. Future edits on the agency’s side live in one place per page type.
2. Spec followed line-for-line, from the agency’s sheet. The agency handed us a Google Sheets workbook: every URL to migrate with its target path, every meta title and description to port, every template assignment, every client-specific integration (Google Analytics, Gravity Forms with email routing to info@mysmilecraft.com, Yoast SEO configuration). We implemented each row as written. Where the sheet had a value, that value landed on the new site. Where it didn’t, we flagged it back to the agency. No “creative interpretations” shipped.
The principle behind this is simple: on a rebuild, the spec is the contract between the agency and its client. A dev team’s job is to protect that contract, not to edit it.
3. Crawl-based verification, not “looks fine to me”. Before DNS cutover, we ran Screaming Frog on the old production site and the staging rebuild side-by-side. Status codes, broken links, redirect chains, meta-tag differences — every delta reconciled against the agency’s spec. The 117 redirect mappings in the workbook’s redirect tab were verified destination-by-destination: an old /redwood-city-ca/cosmetic-dental-services/ path had to land on /redwood-city/cosmetic-dentistry/, not on the Sunnyvale equivalent. A second crawl after go-live confirmed every internal link resolved on the live domain.
4. 79-item launch checklist, closed before handoff. Eight categories: Status Codes, Redirects, URL Structure, Content, SEO & Analytics, Responsive, client-specific integrations, and Domain & DNS migration to Kinsta. Cross-device QA on Chrome / Firefox / Safari / Edge and six viewports (1920 / 1280 / 1024 / iPad / mobile portrait / mobile landscape).
Eight review rounds across 24 days, each one returning a reconciled staging URL to the agency without a live-site surprise. The per-round discipline — templates locked first, redirect destinations verified by crawl, checklist items cleared before the next batch — meant that by round eight there were no outstanding structural issues, only content details the agency had already logged to the backlog.
Results
| Metric | Outcome |
|---|---|
| Spec fidelity — URLs migrated | 361 / 361 pages migrated from old URL structure to new, as specified |
| Spec fidelity — redirects | 117 / 117 redirect mappings implemented, as specified |
| Spec fidelity — templates | 14 / 14 templates built and applied site-wide |
| Launch checklist | 79 / 79 items reviewed and signed off before cutover |
| Timeline | 24 days, from kickoff to handoff |
| Effort | ~125 hours scoped in the agency’s workbook |
| Responsive verification | Zero layout issues across 4 browsers × 6 viewports |
| Internal QA | All agency-scoped backlog items addressed before handoff |
| Handoff | Site live on Kinsta on the scheduled cutover day, no downtime |
| Site status | mysmilecraft.com still live, still indexed by Google |
| Retained engagement | Post-launch refinement rounds Oct–Dec 2025 — SEO URL changes, backlog review, production migration fixes, feedback-plugin monitoring — each delivered in additive sprints inside the same agency relationship |
The outcome, restated plainly: the agency’s spec was implemented as written, inside the scoped hours, on the cutover day. A retained engagement tail across the following three months confirms the build held its shape under post-launch attention.
Operational Integrity at handoff
The QA pass on staging ran Site Checker — which flagged broken phone links on location pages and caught a missing URL in the crawl and absent H1 tags on /office-tour/ and multiple dental service pages — every finding logged to the shared backlog and resolved before the build was submitted. Pre-handoff QA ran through Site Checker — see our QA discipline for the categories and the fail-zero gate. The agency’s own QA layer — their tools, their process — ran post-handoff and surfaced issues into the shared backlog for our fix loop until they signed off.
Process
| Phase | Duration | Outcome |
|---|---|---|
| Brief & estimation | 1 day | Agency spec reviewed; ~125h scoped in workbook and agreed |
| Development | ~18 days | Full site rebuilt across 14 templates on Kinsta staging |
| Internal QA & review | 3 days | Backlog items addressed; all agency-scoped work closed |
| Spec verification | 1 day | Meta and redirect matches reconciled against sheet; crawl confirmed |
| Delivery & DNS cutover | 1 day | Site live on Kinsta, no downtime |
Phases overlap (QA ran alongside late development), which is why the calendar timeline is 24 days rather than the sum of individual phases.
Team
Delivery team
- Nikita Tumasevic — lead developer (full site build and template system)
- Pavel Sazhin — QA and backlog fix implementation
- Anna Polunina — implementation support and QA across the rebuilt pages
- Timur Arbaev — QA and post-launch fix rounds
- Lyudmila Travkina — QA, production migration, and feedback-plugin monitoring
- Anton Hersun, xaverPRO — project lead (estimation, agency-side communication, sign-off)
The agency remained the visible vendor throughout; our team stayed invisible to the end client from kickoff through cutover. URL architecture decisions — which paths to create, how to redirect the old structure, which location got which service subtree — all belonged to the agency. We implemented those decisions exactly as specified.
For agencies considering a white-label WordPress build
First engagement is a calibration batch — typically the spec and redirect map for a single site, reviewed at fixed hours, with QA evidence before handoff. If your agency runs dental or multi-location rebuilds on Kinsta or WP Engine and needs a dev partner who will execute a Google Sheets workbook line-for-line, send the spec and we will return a fixed-hours estimate within 24 hours — no cost, no obligation to proceed.
Don't have a spec yet? Send a one-paragraph description — we'll come back with the questions worth asking. Send a description →
Site Checker runs before the agency sees anything.
Before handoff, every staging build runs through Site Checker — the WordPress QA plugin we built and maintain. It is a fail-zero gate: nothing goes to the agency with an open failure. Warnings are reviewed and judged non-blocking; the agency gets a clean slate to run their own QA layer against, not a staging site with known issues in the queue.