Case study: from Wix to Next.js, +312% organic traffic in 6 months
8-week migration of a Walloon B2B SMB (industrial technical services) from Wix to statically-exported Next.js on Vercel. Before: LCP 4.8s, INP 480ms, 280 SEO visits/month, 1 lead/month. After 6 months: LCP 1.2s, INP 90ms, 1,155 SEO visits/month (+312%), 14 qualified leads/month. ROI reached at month 7. Stack: Next.js 15 App Router + react-i18next 3 languages + full JSON-LD + Vercel + Plausible. Total investment: €9,200 + €95/month maintenance. Key lessons: 301 redirect audit mandatory, multilingual from D1, content rewritten not migrated.
This case study documents the migration of a Walloon B2B SMB (15 employees, industrial technical services, €1.8M revenue) from Wix Business to statically-exported Next.js on Vercel, between October 2025 and April 2026. All figures come from Google Search Console, Vercel Analytics and the client's CRM (anonymized at their request).
1. The client context
Company X operates a highly specialized B2B activity (maintenance of industrial equipment in wet environments). Their target: technical managers of Walloon and Luxembourg industrial SMBs. Sales cycle: 2-6 months. Average client basket: €8,000-25,000/year. They typically seek 8-12 new clients/year to support their growth.
The existing site was a Wix Business at €32/month launched in 2021, redone once in 2023 with a more modern template. 14 published pages: home, about, 5 service pages, 3 client cases, blog (3 articles 18 months old), contact, legal notices.
| Business indicator | Value before migration |
|---|---|
| Organic visits/month | 280 |
| Quote requests via site/month | 0.8 |
| Client acquisition cost via site | ~€3,200 |
| Share of revenue attributable to site | ~4% |
| Average SEO position on 50 target keywords | 16.4 |
| Keywords in top 10 Google | 3 out of 50 |
The client used LinkedIn and word-of-mouth as main acquisition channels. The site mainly served to confirm credibility with already-warm prospects, not to generate leads. That's precisely what the commercial director wanted to change.
2. Diagnosis of the existing Wix site
The technical and SEO diagnosis over 5 days revealed 4 major problem categories:
| Category | Finding before migration | Business impact |
|---|---|---|
| Performance (Core Web Vitals) | LCP 4.8s / INP 480ms / CLS 0.23 (red zone on all 3) | Mobile bounce rate 78%, ranking penalized |
| Technical SEO | No JSON-LD schemas, no hreflang, incomplete sitemap, duplicate title tags on 9 pages | Keyword cluster not covered, opportunities lost |
| Content SEO | Texts too short (300-500 words), no FAQ, no structured client cases, abandoned blog | Low topical authority, little LLM extraction possible |
| UX conversion | No visible mobile CTA, 12-field contact form (11% completion rate), no call button | Leads lost before even conversion |
The most striking finding: out of 280 monthly organic visits, only 31 reached a service page (the others bounced from home). Of those 31, 7 opened the form and 0.8 completed it. The conversion cascade was broken at multiple levels.
3. The decision to migrate
Three options were presented to management:
| Option | Initial cost | Recurring cost | Expected SEO gain | Recommendation |
|---|---|---|---|---|
| A. Optimize existing Wix | €1,800 | €32/month | +10-20% | Insufficient given objectives |
| B. Redesign on Wix with premium template | €3,500 | €49/month | +20-40% | Wix technical ceiling |
| C. Migrate to Next.js + complete redesign | €9,200 | €95/month | +150-300% | Recommended |
Option C was chosen with a clear decision grid:
- Technical ceiling — Wix doesn't allow reaching Core Web Vitals green zone, which has capped SEO since 2024 (INP became a ranking signal)
- Asset ownership — With Next.js the source code is delivered to client, hostable anywhere — no editor dependency
- Calculated ROI — Client acquisition cost drops from €3,200 to €600-800 over time = positive ROI from 4th additional client
- Scalability — Adding blog, multilingual (FR/NL/EN), client area to come = doable cleanly in Next.js
- B2B image — Client targets demanding industrials — fast and technically flawless site reinforces credibility
4. 6-phase migration plan
Reference timeline: 8 weeks from signature to go-live, parallel to client's commercial activity (no service interruption).
| Phase | Duration | Deliverable |
|---|---|---|
| 1. Audit + URL mapping | 1 week | Inventory of 14 Wix URLs + 301 redirect plan + full SEO audit |
| 2. UX wireframes + sitemap | 1 week | Low-fidelity mockups for 12 pages + mobile conversion flow + client validation |
| 3. UI design Figma | 1.5 weeks | High-fidelity desktop + mobile mockups + design system (colors, typo, components) |
| 4. Next.js development | 2.5 weeks | Next.js 15 App Router code, full JSON-LD, react-i18next 3 languages (FR/NL/EN) |
| 5. Content and SEO | 1 week | 100% FR content rewrite + NL/EN translations + FAQ + structured client cases |
| 6. Acceptance + DNS migration | 1 week | Tests on staging, client validation, DNS switchover Wix → Vercel, post-go-live tests |
5. The chosen tech stack
Operational 2026 stack used on this project:
| Layer | Choice | Why |
|---|---|---|
| Framework | Next.js 15 App Router (static export) | Native performance, mature ecosystem, edge CDN deploy |
| i18n | react-i18next + translated slugs | 3 languages (FR/NL/EN) with reciprocal hreflang + x-default |
| Styling | Tailwind CSS 4 + in-house components | Design consistency + minimal bundle |
| Hosting | Vercel Pro ($20/month) | Worldwide edge CDN, auto Git deploy, SSL included |
| Analytics | Plausible ($9/month) | GDPR-friendly, no cookie banner, simple dashboard |
| Conversion tracking | Form → webhook → client CRM + email | No tag manager, in-house pipeline |
| Form anti-spam | Honeypot + Cloudflare Turnstile invisible | Zero user friction, 100% spam blocked over 6 months |
| Sitemap + robots | Build-time generation | Sitemap segmented per language, robots.txt allows AI crawlers |
| JSON-LD | Organization + LocalBusiness + Article + FAQPage + Service + BreadcrumbList | Full E-E-A-T + AEO coverage |
The complete source code is versioned on the client's Git account and automatically deployed on every push. The client can modify texts via a light admin interface (Decap CMS) without involving us.
6. The 7 pitfalls we (almost) avoided
Honest list of mistakes we almost or partially made:
- Keeping Wix visuals as-is (low resolution, no alt) → fixed by requesting on-site photoshoot mid-project, €1,200 overrun but visuals that make a difference
- No NL version at launch → decision in phase 2 to include NL and EN from D1 rather than V2. Triples i18n work but avoids later hreflang refactor
- Underestimating client case writing → 3 client cases = 3 days of writing instead of planned day, because Company X's clients had to be interviewed
- Ignoring old Wix URLs from 2021 version → audit found 3 still indexed, redirected in extremis
- Launching go-live on Friday evening → good practice: go-live Tuesday morning to have 4 active support days behind
- Forgetting to submit sitemap to GSC on D-day → done within 2h after go-live, important to accelerate indexing
- Disabling Wix too early → kept Wix account active 30 days after go-live in case of rollback need, only disabled after confirmation everything worked
7. Month-by-month numerical results
All metrics come from Google Search Console (filtered on 50 target keywords defined with client in phase 1) and client CRM for qualified leads.
| Month | SEO visits | Average position | Keywords top 10 | Qualified leads |
|---|---|---|---|---|
| M0 (before) | 280 | 16.4 | 3 | 0.8 |
| M+1 | 245 | 14.2 | 5 | 1.2 |
| M+2 | 352 | 11.8 | 8 | 2.5 |
| M+3 | 498 | 9.7 | 12 | 4.1 |
| M+4 | 617 | 7.9 | 16 | 6.8 |
| M+5 | 894 | 6.5 | 21 | 10.2 |
| M+6 | 1,155 | 5.2 | 27 | 14.0 |
Data reading:
- Month +1: normal dip — Slight traffic decrease (-12%) while Google re-explores and re-indexes new URLs. Positions already start to rise (sign CWV are better perceived)
- Month +2 to +3: CWV + structure effect — Transition to Core Web Vitals green zone quickly unlocks ranking on queries where client was in positions 11-20. +78% traffic vs M0
- Month +4 to +6: content effect — FAQ, structured client cases and new blog article (published M+2) start to rank on long-tails. Growth accelerates
- Conversions × 17 — Shortened form (12 → 4 fields) + clear mobile CTA + direct call button multiplied conversion rate by ~4. Combined with traffic × 4, leads × 17
Lessons and recommendations
Five lessons distilled from this project, applicable to any similar B2B SMB migration from Wix, Squarespace or WordPress to Next.js:
- URL audit is worth its weight in gold. 95% of migrations that crash SEO owe it to non-redirected 404s. It's mechanics, not genius: map, redirect, verify via crawl
- Content gets rewritten, not migrated. Migrating badly-optimized text onto performant stack gives fast site and still little visibility. Rewriting with structured H2/H3, FAQ, schemas first is what unlocks LLM citations
- Multilingual from D1 if relevant. Adding a 2nd language to a well-built Next.js site costs 25-40% of initial package. Retrofitting after 6 months costs 80-120%
- Measure before AND after. Without clean GSC baseline before migration, impossible to prove ROI. Export everything in month -1, keep CSV history for comparison
- Conversion matters as much as traffic. Doubling traffic on a site converting at 0.3% gives a site converting at 0.3% with 2× more visitors. Treating both together is non-negotiable
Read next
Next.js static export and Core Web Vitals: the 2026 playbook
Every optimization we apply on Next.js static export sites to hit 95+ PageSpeed mobile: font strategy, CSS, LCP, INP, CLS, Framer Motion traps, hosting setup.
Migrating from WordPress to Next.js: step-by-step guide 2026
Complete plan to migrate a WordPress site to Next.js static export without losing SEO: audit, content export, 301 redirects, UI redesign, measuring performance gains.
Next.js vs WordPress in 2026: which one for a Belgian SMB?
Honest Next.js vs WordPress comparison for SMBs: real costs, performance, SEO, maintenance, security, flexibility. When to choose one or the other based on your profile.
