80-URL Dental WordPress Rebuild, Shipped to Spec in 19 Days — White-Label Delivery for a US Marketing Agency
An 80-URL dental WordPress rebuild shipped to spec in 19 days — 74 hours, 10 templates, 85 issues closed, flat .html migration to nested paths.
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.
The Craft of a Rebuild
80 URLs migrated from flat .html files to nested WordPress permalinks across 10 templates in 19 days — the agency owned the URL map, the redirect list, and the launch checklist. Every legacy path had to land on the correct new category destination, not just any 200 response. The constraint forced redirect verification ahead of visual QA, with every path double-checked against the legacy site via Screaming Frog before the agency’s gate closed.
The engagement carried a structural risk that a same-path rebuild does not: the existing site used flat .html files, and the new site reorganised every service into nested category permalinks. Every old URL had to land on the correct new destination — not just any 200 response, but the specific category path the agency specified.
Snapshot
| Field | Value |
|---|---|
| End-client industry | Healthcare — General, Cosmetic & Restorative Dentistry |
| End-client | Distinctive Dentistry by Mullens & Nguyen (Dr. Richard Mullens & Dr. James Nguyen, Jacksonville, FL) |
| Engagement | White-label WordPress build for a US marketing agency specialising in local-business websites |
| Project Type | WordPress rebuild with Elementor Pro on WP Engine |
| Scope | Full site — 80 URLs migrated from flat .html paths to nested WordPress permalinks across 10 templates |
| Timeline | 19 days (7 May – 26 May 2025), on schedule for the rebuild delivery |
| Effort | 74 hours against a 74-hour estimate — no overrun |
| Team | 4 specialists (51h dev · 10h QA · 10h PM · 3h blog add) |
| Tech Stack | WordPress · Elementor Pro · Gravity Forms · WP Engine · 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 — 80 URLs migrated, 10 templates built, path-change redirects implemented, 29-item launch checklist closed |
| Retained engagement | Blog-page addition and two fix rounds across the following two months — each delivered in additive sprints inside the same agency relationship |
| Engagement cadence | 85 agency-raised issues · all closed by handoff |
| Review rounds | ≈5 review rounds across the 19-day calendar window |
| Launch checklist | 29 items, signed off before cutover |
The Brief
The agency had a retained dental-practice client in Jacksonville, Florida — a three-doctor general, cosmetic, and restorative dentistry practice — whose existing site ran on flat .html files without a modern page-builder or template system. The agency had completed the strategic work: a Google Sheets workbook mapping every current .html URL to its new WordPress permalink, every meta title to carry forward, every template assignment, and a 29-item launch checklist.
The brief left little room for interpretation. Treat the workbook as fixed; rebuild on Elementor Pro behind WP Engine; move every URL off its flat path and onto the new nested category structure; return it ready to cut over. No contact with the end client. SEO calls implemented as the agency had set them. Hours held to the quote.
The structural risk was in the URL rearchitecture. The old site organised pages as single-level .html files — /dentures.html, /dental-crowns.html, /teeth-whitening.html. The new site nested every service under its category — /general-dentistry/dentures/, /cosmetic-dentistry/dental-crowns/, /cosmetic-dentistry/teeth-whitening/. Two pages were deprecated entirely (/dermal-fillers.html, /childrens-dentistry.html path changed to /pediatric-dentistry/). Each of those 80 rows carried a redirect obligation, and the agency’s spec named the exact destination for each.
Risk context. When a rebuild restructures URL architecture — moving from flat
.htmlfiles to nested WordPress category permalinks — the redirect precision becomes load-bearing in a way that a same-structure rebuild is not. A missed redirect on a service page does not produce a visible error on the homepage; it produces a 404 for a patient who follows an existing backlink or bookmark. The failure is silent, cumulative, and discoverable only in a crawl. The agency was hedging against a dev shop that would treat “the site loads” as “the migration is complete.”
How We Did It
1. Template-first build. Rather than rebuilding 80 URLs one by one, we collapsed them into ten reusable templates and fit every URL into them:
- Homepage, About Us, Contact Us — the brand and conversion pages
- Services Lander + Service Page — the heaviest template, powering all individual treatment pages across General Dentistry, Cosmetic Dentistry, Restorative Dentistry, Emergency Dentistry, Sedation Dentistry, and Pediatric Dentistry categories
- Doctor Page — individual bio pages for Dr. James Nguyen, Dr. Jonathan B. Petrie, and Dr. Richard Mullens
- Blog Lander + Blog — the content archive and individual post template
- Smile Gallery — the practice-specific before/after layout
- Default Template — supporting pages (areas we serve, patient resources, policies)
Ten templates carried the entire site. When the agency wants to revise a page type later, the change has a single home rather than eighty.
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 old .html path and new WordPress permalink, every meta title and description to port, every template assignment, every client-specific integration (GA carryover, Gravity Forms email routing, reCAPTCHA). We built every row as the workbook described it. Any cell that held a value reappeared on the rebuilt site, unchanged. The exceptions — two deprecated pages and three rows flagged as content-needed — went back to the agency for a decision rather than a patch on our side. Nothing got “creatively interpreted” into the build.
The reasoning is straightforward. The workbook was the agreement the agency had already struck with its client; our role was to hold that agreement intact, not to renegotiate it line by line.
3. Crawl-based verification, not “looks fine to me”. With DNS cutover still ahead, we put Screaming Frog over the old live .html site and the staging rebuild at the same time and compared the two. The crawl threw up status codes, dead links, redirect chains, and meta-tag mismatches; each one we settled against what the agency’s workbook called for. The path-change redirects drew the most scrutiny: a /tooth-colored-fillings.html hop has to land on /restorative-dentistry/fillings/ and never slide back to the bare /restorative-dentistry/ category. Once the site was live, a follow-up crawl proved that every internal link still resolved on the production domain.
4. 29-item launch checklist, closed before handoff. Seven categories: Design, Functionality, Content, SEO & Analytics, Responsive, client-specific integrations, and Domain & DNS migration to WP Engine. Not a single line was allowed through until it had been ticked off. The QA pass spanned Chrome, Firefox, Safari, and Edge at six viewports (1920 / 1280 / 1024 / iPad / mobile portrait / mobile landscape). We pushed a genuine submission through the Gravity Forms contact form to confirm it worked from start to finish.
Rebuilding 80 URLs from flat .html files into nested category permalinks meant redirect verification had to close before visual QA even started — the path change, not the visual work, was where a miss would cost the agency. We mapped every legacy path in the workbook, double-checked it against Screaming Frog on the original site, and confirmed it against the spec before the staging build moved to the agency’s gate.
Results
| Metric | Outcome |
|---|---|
| Spec fidelity — URLs migrated | 80 / 80 URLs migrated from flat .html paths to nested WordPress permalinks, as specified |
| Spec fidelity — path changes redirected | All category-restructure redirects implemented as 301s from legacy .html paths |
| Spec fidelity — templates | 10 / 10 templates built and applied site-wide |
| Launch checklist | 29 / 29 items signed off before cutover |
| Timeline | 19 days, delivered on schedule |
| Effort | 74h / 74h estimate — no overrun, no scope creep |
| Responsive verification | Zero layout issues across 4 browsers × 6 viewports |
| Internal QA | All agency-scoped backlog items closed before handoff |
| Site status | Live on WP Engine at https://www.rcmdds.com/. |
| Retained engagement | Blog-page addition and two fix rounds across the following two months — each delivered in additive sprints inside the same agency relationship |
Where it landed: we built exactly to the workbook the agency wrote, the hours matched the quote, and cutover happened on the day it was booked for. A year later, the site is still serving live.
Operational Integrity at handoff
Internal QA caught the build using absolute pixel widths site-wide — at 1024 px, tablet, and mobile the layout collapsed simultaneously — plus an invisible H1 on the service pages. We resolved both inside a dedicated 10-hour QA pass ahead of handoff, with multi-resolution screenshots proving each viewport rendered cleanly. The pre-handoff sweep went through Site Checker — how we run QA lists the categories and the rule that no finding stays open at sign-off. Once we’d handed over, the agency reviewed it on its own stack and routed findings into the shared backlog, where our fix loop ran until they called it done.
Process
| Phase | Duration | Outcome |
|---|---|---|
| Brief & estimation | 2 days | Agency spec reviewed; 74h quoted and agreed |
| Development | ~14 days | 80 URLs rebuilt across 10 templates on WP Engine staging |
| Internal QA & review | 2 days | Backlog items logged by the agency; all agency-scoped work closed |
| Spec verification | 1 day | URL restructure redirects reconciled against sheet; crawl confirmed |
| Delivery & DNS cutover | 1 day | Site live on WP Engine, no downtime |
Phases overlap (QA ran alongside late development), which is why the calendar timeline is 19 days rather than the sum of individual phases.
Team
Delivery team
- Nikita Tumasevic — lead developer (full site build and template system)
- Pavel Sazhin — QA fixes and meta-data implementation
- Anna Polunina — project coordination, scope confirmation against the workbook
- Anton Hersun, xaverPRO — project lead (estimation, agency-side communication, sign-off)
For the Jacksonville practice, there was only ever one voice on the project: the agency’s. Its name sat on the URL map, the redirect list, the launch checklist, and the final handoff. We stayed off that account entirely, visible only inside the agency’s Redmine. Choices about which URLs to preserve and how to route the redirects were the agency’s to make; we built to the workbook they handed over.
For agencies considering a white-label WordPress rebuild
When a rebuild changes the URL structure, the redirect map becomes the single point of SEO continuity. For this practice — a single-location general dentist; for others — a multi-location group merging microsites into one network. The map will miss a row — an old backlink lands on a 404. The new theme will overwrite the meta descriptions — the SERP snippets change without warning. Schema will not survive the cutover — the Knowledge Panel goes dark.
The question is not “can you rebuild the site?” — it is “how will you map each old URL and preserve meta and schema before launch?”
Send us a current production URL, a draft redirect map if you have one, or your design files. We will audit the redirect plan against the live URL inventory, check for meta and schema gaps, and return a fixed-hours quote.
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.