Work / Build / 62-Page Dental WordPress Build

62-Page Dental WordPress Build

A 62-page WordPress build delivered in 53 days — 5 templates, 46 URL-path pairs reconciled during blog migration, 39-row checklist, 58h, no overrun.

End client 62-Page Dental WordPress Build
Sector Healthcare (Dental)
Engagement White-label delivery for a US marketing agency specialising in local-business websites
Timeline 53 calendar days
58h across 53 days
www.romansmiles.com · desktop
www.romansmiles.com · mobile

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 →

— The brief

Build the URLs across the agency's templates, wire the conversion primitive, then work the QA backlogs to closure.

Client (end user): Roman Dental Arts — Hackensack, NJ
Engagement: White-label development for a US marketing agency
Delivered: Mar – May 2025 · 53 days · 58 hours across build and content integration

The Craft of a Build

62 pages of a dental-practice WordPress build across five branded templates — 21 blog posts, 26 service pages — where the engagement’s signature discipline was not page construction but URL-path restructuring. 46 legacy paths under /procedures/ and /about/blog/ were flattened to a new hierarchy and verified against staging row by row, a reconciliation the agency’s workbook had not foreseen with a dedicated redirects tab. 58 hours, 53 days, no overrun.

This case study is a record of a build where the path reconciliation and blog migration were treated as part of the delivery scope, not an afterthought — a comprehensive-care dental practice in Hackensack, NJ, delivered for a US marketing agency specialising in local-business dental clients.

Snapshot

Field Value
End-client industry Healthcare (Dental)
End-client Roman Dental Arts (Hackensack, NJ)
Engagement White-label WordPress build for a US marketing agency specialising in local-business websites
Project Type WordPress build with Elementor on WP Engine, with URL path restructuring and blog content migration
Scope 62 URLs — homepage, 4 about pages, 26 service pages across cosmetic / restorative / family / oral-maxillofacial / implant categories, 21 blog posts, 10 default template pages (patient resources, contact, testimonials, etc.)
Timeline 53 days (18 Mar – 10 May 2025), delivered on schedule
Effort 58 hours against a 58-hour estimate — no overrun
Team 5 specialists (35h dev · 10h QA · 4h PM · 9h content and procedure additions)
Templates 5 reusable templates — Homepage, About Us, Service Page, Blog, Default Template
Tech Stack WordPress · Elementor · Gravity Forms · WP Engine · Screaming Frog · Site Checker ( QA plugin)
Delivered 62 URLs built across 5 templates, 46 unique URL-path pairs reconciled, 9/9 Issues Backlog closed as Completed, 39-row checklist signed off
Engagement cadence 9 agency-raised issues · all closed by handoff (1-day active span, 2025-04-07 – 2025-04-07)
Review rounds ≈4 review rounds across the 53-day calendar window
Per-ticket effort 8 internal Redmine tickets · median 4h / P75 10h per ticket
Launch checklist 38 items, signed off before cutover

The Brief

A US marketing agency retained by Roman Dental Arts — a comprehensive-care dental practice in Hackensack offering cosmetic, restorative, family, oral-maxillofacial, and implant dentistry — handed over a Google Sheets workbook with a full URL map, a templates catalogue, a launch checklist, and a pre-populated Issues Backlog. The build ran on their WP Engine environment; the page builder was Elementor; forms ran through Gravity Forms.

The ask: build 62 URLs across 5 standard templates, restructure the URL paths to consolidate the previous /procedures/ and /about/blog/ hierarchies into flatter, cleaner paths, migrate 21 blog posts to the new path structure, and work down the agency’s issues backlog until the agency accepted the site. Shortly before launch, the agency relayed a client request for new procedure content across an additional set of service pages — a mid-engagement content block that arrived against a live launch date target.

Throughout, remain outside the end-client-facing loop; surface ambiguity back to the agency; do not improvise content, navigation, or URL structure decisions.

Risk Context. A dental practice with an established blog archive and a deep service taxonomy carries SEO equity distributed across dozens of URLs. The agency’s risk in a build like this is not the homepage or the service landers — it is the 46 URL pairs where the old path and the new path differ: /procedures/cosmetic-dentistry/veneers/ becomes /cosmetic-dentistry/veneers/, /about/blog/post-slug/ becomes /blog/post-slug/. Each of those pairs needs to be tracked to a resolved state before the site goes live. A dev partner who treats path reconciliation as a documentation detail rather than a delivery gate risks handing the agency a site where legacy URL equity has quietly evaporated. The workbook had no dedicated redirect-tracking tab; each of the 46 URL pairs had to be verified row by row against the staging environment rather than bulk-mapped from a redirects sheet.

How We Did It

1. Five templates, 62 pages, one build pipeline. Roman Dental Arts’ pages spread across a compact, well-defined template library: Homepage, About Us (4 pages — main about, meet the doctors, meet the team, and office tour), Service Page (26 individual service pages across five care categories), Blog (21 migrated posts), and a Default Template (10 supporting pages including patient resources, testimonials, contact, and appointment request). Each page was built on its assigned template from the sitemap row; no page was hand-rolled outside the template system.

2. Spec followed line-for-line — including the per-page Hours Estimated column. The agency’s workbook carried an Hours Estimated value for each sitemap row. The blog corpus at 21 posts was the load-bearing row: blog content migration and path reconciliation across the /about/blog//blog/ restructure drove the dev budget for that template more than the individual post count suggests. Service-page rows were estimated at lower hours per page once the template baseline was established.

The principle: on a build with a pre-costed sitemap, the workbook is the contract. A dev team’s job is to deliver inside the row-level budgets, not to re-price the blog row after the migration reveals how many posts carry legacy path references. We chose to absorb the blog-migration complexity inside the agreed row-level hours rather than request a re-estimate, because reopening a costed sitemap mid-build would have shifted calendar pressure onto the agency’s launch window.

3. URL path reconciliation across 46 unique pairs. The sitemap carried 62 rows in the Completed state. Of those, 46 pairs had differing Current URL and New URL values — reflecting the agency’s decision to flatten the /procedures/ service hierarchy and consolidate the /about/blog/ archive. We mapped each source path to its target path, set the internal-link redirects, and verified each pair in the workbook before handoff. All 46 pairs were tracked to resolved status before the launch checklist closed.

4. Mid-engagement procedure content integrated without schedule slip. Late in the engagement, the agency relayed that new procedure content was required across additional service pages — some of which were already built and in the QA queue. The content task was opened as a standalone Redmine issue, tracked with its own hours, and integrated against the live staging environment in a parallel thread to the QA backlog. Pages that received new content were returned to the QA queue for a second pass. The launch date was preserved.

5. Issues Backlog and pre-launch review, closed before go-live. Issues were tracked in the agency’s Issues Backlog (9 rows, all Completed before launch) and the AM QA of Staging Site tab. The 39-row checklist — Design, Functionality, Content, Pre-Migration, and Post-Migration columns — was signed off before the production go-live. The pre-launch review task confirmed the site was ready for the agency’s account manager to give final sign-off before cutover.

The blog-path conflict — posts at date-slugged URLs under /about/blog/ on the source, flattening to /blog/ on the build — had no dedicated redirects tab to bulk-map from; each of the 46 pairs had to be verified against staging in the sitemap Action column before the checklist could close. That row-by-row verification was what kept the URL path equity intact at handoff.

Results

Metric Outcome
URLs built 62 across 5 templates (1 Homepage · 4 About Us · 26 Service Pages · 21 Blog Posts · 10 Default Template pages)
Templates applied 5 / 5 from the agency’s standard dental library
URL-path pairs reconciled 46 unique pairs closed (old path → new path, tracked in sitemap Action column)
Issues Backlog 9 / 9 closed as Completed
AM QA of Staging Site Pre-launch review completed and signed off
Launch checklist 39-row checklist signed off across Design / Functionality / Content / Pre-Migration / Post-Migration
Timeline 53 days (18 Mar – 10 May 2025), delivered on schedule
Effort 58h / 58h estimate — no overrun, no scope creep
Handoff Site live on WP Engine, https://www.romansmiles.com/
Site status, verified 2026-04 Production live (Cloudflare-protected; confirmed live and serving content via browser)

Operational Integrity at handoff

During the pre-handoff QA pass, a duplicate-H1 structural defect was found in the “Related Procedures” block across service-page templates — the block heading was tagged as a second <h1> rather than a <div>, a template-level issue that would have affected every service page in the dental taxonomy. 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 week Workbook reviewed, URL path pairs counted, row-level hours confirmed, 58h quoted and agreed
Build phase (pages + templates) ~3 weeks All 62 URLs built across 5 templates on staging; path redirects set; Issues Backlog opened
Blog migration + path reconciliation ~2 weeks (in parallel) 21 blog posts migrated; 46 URL-path pairs tracked to resolved; internal links updated
Content integration (procedure pages) ~1 week (in parallel) New procedure content received and integrated; affected pages returned to QA
Pre-launch review + checklist Final days 9/9 Issues Backlog closed; 39-row checklist signed off; AM reviewed and accepted

Phases overlap — blog migration and path reconciliation ran alongside the service-page build, which is why the calendar is 53 days rather than the sum of individual phases.

Team

Delivery team

  • Nikita Tumasevic — lead developer across build, blog migration, and fix phases
  • Pavel Sazhin — project management and QA iterations
  • Anna Polunina — developer support on service-page content integration and QA rounds
  • Alexey Melkov — implementation support
  • Anton Hersun, — project lead (estimation, agency-side communication, sign-off)

Agency-side project management and client-facing communication remained with the partner agency throughout. Our team was invisible to the end client.

For agencies commissioning a white-label WordPress build

For agencies building dental or medical sites where the service taxonomy has been restructured — and the workbook tracks path changes in a sitemap column rather than a dedicated redirect tab — the first engagement is a fixed-scope calibration: URL pairs mapped and verified row by row, QA backlog closed, checklist signed off before go-live. Send a current build workbook or sitemap with the URL delta marked; we will count the redirect pairs, estimate the reconciliation hours, and return a fixed-hours quote within 24 hours, no cost, no obligation.

Request a spec review →

Don't have a spec yet? Send a one-paragraph description — we'll come back with the questions worth asking. Send a description →


xaver.pro · 2026 · Case #50 White-label · Partner agency not named
Scroll to Top