Case Study

WordPress to Next.js,
in Four Languages

A private-driver company ran a WordPress site that had grown for years: plugins on plugins, a rate list copied across pages, and four languages held together by an extension. We rebuilt it in Next.js, kept every page that earned traffic, and moved the domain and the mailboxes without a gap.

Type

Redesign / Migration

Client

Private-driver company (FR)

Scope

WordPress → Next.js, 4 languages, SEO continuity

Shipped

2026

Redirect map from the old WordPress URLs to the new Next.js routes, with the four language switch and the migration counters.

115

Pages migrated

4

Languages · FR EN ES ZH

72

SEO articles carried over

87

Rates from a single source

301 / 410

Every old URL given a destination

0

Mail downtime at cutover

The problem

The site worked, and that was the difficulty. It brought in bookings, ranked on real queries, and could not be switched off for a rebuild.

Four languages held by an extension, with translations drifting apart page by page.

A rate list retyped on several pages, so a single price change meant hunting through the site.

Years of plugins, none of which anyone could safely remove.

Article URLs carrying query strings, tag archives and duplicates competing with the real pages.

A redesign that lost the existing rankings would have cost more than no redesign at all.

What we did

Inventory before design

We listed the pages that received traffic and the queries they ranked on. Those pages became constraints: same address, same subject, content kept and improved. Everything else was free to move.

Four languages, real routes

Each language got its own addresses and reciprocal hreflang, instead of an extension deciding at runtime. Adding a language is now a folder, not a plugin setting.

One source for 87 rates

The whole rate grid lives in one file, read by every page that displays it. A price changes in one place, in every language, and no page can contradict another.

A quote form that reaches a human

Server-side sending, honeypot and timing check, confirmation to the client and notification to the company. No plugin, no external form service.

The cutover

We tested on a staging domain, checked the redirects one by one, then moved DNS and the mailboxes on an agreed date. Mail is the part nobody thinks about and everybody notices: it was moved first, verified, and only then the site followed.

Next step

A site to migrate?

Start a project→