24-Page Dental Template — Blog URL Migration

24-page dental template customisation — 24 URLs, 10 templates, blog URL migration, 74+ QA items closed in 49h. Agency Figma, on-schedule delivery.

Industry Healthcare
Engagement White-label · US marketing agency
Delivered 70 calendar days · on schedule
49h across 70 days
futchdental.com · desktop
futchdental.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

Rebuild the site on a new stack. Implement the spec. Don't improvise. Hand it back ready for cutover.

The Craft of Template Customisation

Twenty-four pages for a Reno dental practice, mapped against a Figma spec across 10 reusable templates on a Kinsta-hosted branded template — with a blog URL restructure folded in: the lander moved from /about/our-blog/ to /blog/, two indexed posts with it. Post-launch, a content accuracy pass surfaced copy that misrepresented the practice’s actual services; fixing distributed strings without introducing new inconsistencies was what the QA loop had to hold to.

Snapshot

Field Value
End-client industry Healthcare — General Dentistry
End-client Futch Dental (Reno, NV dental practice)
Engagement White-label template customisation for a US marketing agency specialising in local-business websites
Project Type WordPress template customisation (agency’s branded template + per-page Figma design on Kinsta)
Scope 24 URLs — homepage, about, doctor bio, services lander, 10 service pages, 4 default pages (new patients, technology, reviews, office gallery), before/after gallery, contact, blog lander + 2 blog posts
URL migration Blog lander moved /about/our-blog//blog/; 2 existing blog posts moved under /blog/ path
Timeline ~70 days (May – July 2025), on schedule
Effort 49 hours across development, QA iterations, PM, and post-launch fixes
Team 3 specialists
Templates 10 reusable templates provided by the agency, all applied across the 24 pages
Tech Stack WordPress · Elementor · Kinsta hosting · Figma-driven per-page design · Site Checker ( QA plugin)
QA discipline 74+ tracked SEO + CX issues reconciled in the agency’s backlog across a 29-item launch checklist
Engagement cadence 73 agency-raised issues · all closed by handoff (43-day active span, 2025-05-30 – 2025-07-11)
Review rounds ≈5 review rounds across the 70-day calendar window
Launch checklist 29 items, signed off before cutover

The Brief

A US marketing agency handed us a Figma design for Futch Dental and access to their branded Kinsta-hosted template. The agency had handled the upstream work: client requirements gathering, Figma production, content sourcing, and hosting setup. What they needed from us was faithful execution — map the Figma design onto the template, page by page, then work through the agency’s issue backlog until sign-off.

The engagement covered 24 URLs across the practice’s full site — homepage, service pages for Futch Dental’s core procedures (emergency dentistry, Invisalign, implants, crowns, fillings, root canal, dentures, teeth whitening, cosmetic dentistry, and night guards), supporting pages (new patients, technology, reviews, office gallery, before/after gallery), doctor bio, about pages, contact, and blog. Alongside the template customisation, the blog section required a URL restructure: the existing blog lander lived at /about/our-blog/ and needed to move to /blog/, with two existing blog posts migrated from their root-level slugs into the /blog/ subdirectory.

The risk this engagement carried was specific to the post-launch content accuracy pass. After the agency’s initial QA cleared structural and design-fidelity issues, a second round surfaced content that did not accurately reflect the practice’s actual services — including marketing copy that overstated same-day treatment capability, Invisalign FAQ language that could mislead patients, and a reference to an after-hours answering service the practice no longer offered. For a dental practice competing in a local market, copy that misrepresents what the office actually does is a credibility liability, not just a QA finding. Executing those corrections cleanly — across globally repeated strings and within specific service pages — required careful scoping to avoid introducing new inconsistencies while fixing the old ones.

Risk context. For a dental practice competing in a local market, copy that misrepresents what the office actually does is a credibility liability, not just a QA finding. After structural QA cleared design-fidelity issues, a second pass surfaced content that overstated same-day treatment capability, included Invisalign FAQ language that could mislead patients, and referenced an after-hours answering service the practice no longer offered. The risk in a post-handoff content correction round is propagation: fixing one instance of a distributed string without catching the others, or scoping a correction too narrowly and introducing a new inconsistency while closing the old one.

How We Did It

1. Figma-as-contract, template-as-canvas. The Figma file was the design spec. The branded template was the underlying page structure. Our job was to reconcile the two page by page — where the template’s default layout matched the Figma, we kept it; where the Figma required a deviation, we customised. No design decisions originated on our side.

2. Blog URL restructure alongside template customisation. The Futch Dental engagement was not a greenfield build — the practice had an existing blog with posts indexed at root-level slugs that needed migration into the /blog/ subdirectory. The agency’s sitemap spec called for these to move under /blog/ to match the new navigation architecture. This URL restructure ran in parallel with the template customisation, adding a redirect and navigation-link layer to what would otherwise be a pure template-mapping exercise. We mapped both the blog lander and the existing posts to their respective templates (Blog Lander and Blog) and confirmed each returning HTTP 200 on staging before handoff.

3. QA cycle at template-customisation scale. A clean template customisation is not “build once, review once”. It is “build, QA, adjust, QA, adjust”. This project tracked 74+ line items across the agency’s SEO and CX issue backlogs — with the SEO backlog alone carrying 74 rows — plus a 29-item launch checklist. Some issues were design-fidelity corrections (duplicate heading tags on cosmetic dentistry, redundant CTA blocks on service pages, missing nav link for the blog lander); others, addressed in post-launch rounds, required rewriting specific copy strings to match the practice’s real service scope. The limitation was that structural QA — design fidelity, HTML correctness — could not verify whether the content accurately described what the practice actually offered; that check needed domain knowledge the tooling layer does not provide. We chose to handle those corrections as individual per-string tasks — replacing ‘same day treatment’ globally, removing the glass ionomer fillings section entirely, rewriting the Invisalign FAQ to match actual treatment parameters — rather than a single bulk copy rewrite, because the inaccuracies mixed globally distributed phrases and page-specific claims that each needed independent verification before sign-off.

The principle is constant: on a templated build, the QA loop is where the value is delivered. A shorter loop means a weaker match — either to the Figma or to the practice’s actual information.

4. Customisation without drift. We documented every change we made to the agency’s branded template against the Figma reference. No customisation “leaked” into the shared template components. The engagement closed with the per-client overrides isolated and the shared template layer intact.

5. Cross-device verification. We QA’d customisations across Chrome, Firefox, Safari, and Edge on desktop, tablet, and mobile viewports. Each QA round targeted the pages affected by that round’s delta, not the full site — keeping coverage tight without losing breadth.

Content accuracy was what this engagement turned on. Structural QA cleared at initial handoff; the post-launch round surfaced what tooling cannot catch — copy that misrepresented the practice’s actual services. Each correction ran as a discrete Redmine task, verified before close, because a fix that introduced a new inconsistency while closing the old one would have made the round pointless.

Operational Integrity at handoff

Post-handoff review surfaced three accuracy failures structural QA cannot catch: ‘same day treatment’ distributed across FAQ and emergency-dentistry pages (the practice can book same-day but not complete treatment same day); Invisalign FAQ copy with non-clinical phrasing and wrong tray-wear duration; and a glass ionomer fillings section for a service the practice does not offer — each fixed as a discrete task. Pre-handoff QA ran through Site Checkerhow we run QA covers the categories and the no-issues-left-open rule. After handoff the agency ran its own review, surfacing issues into the shared backlog for our fix loop until sign-off.

Customisations stayed in the per-client overrides. We did not modify the agency’s shared template components.

Results

Metric Outcome
URLs delivered 24 — homepage, 10 service pages, doctor bio, 2 about pages, 4 default pages, before/after gallery, contact, blog lander + 2 blog posts
Blog URL migration Blog lander and 2 existing posts migrated to /blog/ path — HTTP 200 confirmed on all
Templates applied 10 of 10 reusable templates built and mapped across the 24 pages
Launch checklist 29 items signed off
QA / SEO issues tracked + resolved 74+ items reconciled across the agency’s SEO and CX issue-backlog tabs
Post-launch content fixes Global string replacements + per-page copy corrections executed as discrete Redmine tasks through July 2025
Timeline ~70 days, delivered on schedule
Effort 49 hours across development, QA, PM, and post-launch fix rounds
Team 3 specialists
Hosting handoff Live on the agency’s Kinsta template environment
Page health at handoff 24 / 24 staging URLs returned HTTP 200 in the sitemap audit

The headline: we implemented the agency’s Figma against their branded template across 24 pages and 10 templates, with a blog URL restructure, over approximately 70 calendar days, inside the estimated hours.

Process

Phase Duration Outcome
Brief & estimation ~2 days Figma reviewed, template access confirmed, scope agreed — 27h dev + 10h QA estimated
Customisation development ~2 weeks Page-by-page template customisation to match Figma; blog URL restructure included
QA iterations (concurrent) ~4 weeks 74+ issue-backlog items logged and resolved; agency sign-off at initial handoff
Post-launch content fixes ~6 weeks Content accuracy corrections (copy replacements, service scope fixes) executed as discrete tasks
Delivery July 2025 Site live on Kinsta; post-launch fix log closed

Development and QA ran concurrently — characteristic of template-customisation work, where no single QA phase closes cleanly. The loop runs until the agency signs off. Post-launch rounds addressed content accuracy items that emerged only after the live site was under full editorial review.

Team

Delivery team

  • Nikita Tumasevic — lead developer (template customisation, Figma-to-layout mapping, blog URL restructure)
  • Pavel Sazhin — QA lead (issue-backlog review, design-fidelity verification, fix rounds)
  • Anton Hersun, — project lead (estimation, agency-side communication, post-launch coordination, sign-off)

The partner agency’s design, content, client communication, and hosting configuration remained entirely upstream of our work. Futch Dental dealt with the agency; the agency dealt with us. Requests came in through the agency’s shared issue tracker; nothing moved to “done” until the agency-side reviewer confirmed it.

For agencies with a branded template system

On a dental practice template, shared content blocks manage the copy that appears across locations — but every shared string is a vulnerability for the agency that signs for the work. For this practice — a local office with a single brand parent; for others — a multi-location DSO where the same template serves every site. A same-day treatment claim corrected in one block stays live in another. A template vendor update overwrites the custom schema without warning. A post-handoff edit closes one inaccuracy and opens a new one, and the agency owns every gap.

The question to ask a dev partner before committing is not “can you populate the template?” — it is “how exactly will you trace every instance of a shared content block so a late-stage fix reaches every page?”

Send us the template source or template ID and your brand spec. We will audit the shared content layer, map every instance of every distributed block, identify where overrides are vulnerable to the next template update, and return a fixed-hours quote.

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 →

— Pre-handoff QA gate

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.

Core settings verificationpass
Content & SEO surface auditpass
URL structure integritypass
Content-language sanitizationpass
Menus & widgets auditpass
Original-vs-rebuild content diffpass
Multi-resolution screenshot capturepass

Curious if your engagement fits this pattern?

Scroll to Top