Comment migrer de Webflow vers Next.js sans perdre vos classements SEO
J'ai migré environ quinze sites de Webflow vers Next.js au cours des trois dernières années. Certains se sont déroulés sans problème. Quelques-uns ont été douloureux. Un a été un véritable désastre où un client a perdu 40 % de son trafic organique pendant six semaines parce que nous avions manqué un lot de règles de redirection cachées dans les pages de collection CMS de Webflow. Cette expérience m'a appris plus sur la préservation du SEO lors des migrations que n'importe quelle documentation n'aurait pu le faire.
Voici tout ce que je sais sur comment faire cela correctement -- les étapes techniques, les pièges que personne ne vous avertit, et le processus exact que nous utilisons chez Social Animal pour nous assurer que les classements de recherche survivent à la transition.
Table des matières
- Pourquoi quitter Webflow pour Next.js
- Le vrai coût de la migration
- Audit SEO pré-migration
- Exporter votre site Webflow
- Construire le remplacement Next.js
- La stratégie de redirection 301 qui fonctionne réellement
- Gérer le contenu CMS Webflow
- Surveillance SEO post-migration
- Les erreurs courantes qui détruisent les classements
- FAQ
Pourquoi quitter Webflow pour Next.js
Soyez clair : Webflow est vraiment bon dans ce qu'il fait. Il génère du HTML sémantique propre, traite les balises meta de manière native, génère automatiquement les sitemaps XML, et gère robots.txt sans que vous touchiez à un fichier de configuration. Pour un site marketing qui n'a pas besoin de beaucoup de logique personnalisée, c'est excellent.
Mais vous lisez cet article, ce qui signifie que vous avez probablement atteint la limite. Voici ce qui pousse généralement les équipes vers Next.js :
Plafonds de performance. Les sites Webflow avec des interactions lourdes, beaucoup d'éléments CMS, ou des animations complexes commencent à montrer des failles dans les Core Web Vitals. Nous avons vu des sites Webflow avec des temps de Largest Contentful Paint (LCP) au-dessus de 4 secondes sur mobile -- bien au-delà du seuil de 2,5 secondes de Google. Un site Next.js correctement construit avec rendu côté serveur et optimisation next/image réduit généralement cela de moitié.
Limites de personnalisation. Besoin d'intégrer un CMS headless comme Sanity ou Contentful ? Voulez construire un flux de paiement personnalisé ? Besoin de middleware pour les tests A/B à la périphérie ? Le jardin clos de Webflow commence à se sentir très petit.
Coût à grande échelle. Le plan CMS de Webflow coûte 29 $/mois pour un seul site, mais les fonctionnalités d'entreprise le poussent à 49 +$/mois. Lorsque vous tenez compte de plusieurs sites ou de besoins de localisation, héberger une application Next.js sur le plan Pro de Vercel à 20 $/mois commence à sembler judicieux -- surtout parce que vous obtenez les fonctions edge, l'analyse et les déploiements de prévisualisation inclus.
Les données de performance soutiennent cela. L'équipe d'ingénierie de Webflow elle-même a documenté une amélioration de 20 % des temps de chargement lorsqu'elle a migré son tableau de bord vers Next.js avec SSR. Dans les benchmarks de 2025, les sites Next.js 15 utilisant l'App Router marquent régulièrement 15-25 % plus haut sur Lighthouse que les builds Webflow équivalents avec des interactions complexes.
Si vous êtes intéressé par ce qui est possible avec une pile Next.js moderne, nous détaillons notre approche sur notre page capacités de développement Next.js.
Le vrai coût de la migration
Parlons argent avant de parler code. J'ai vu trop d'équipes commencer une migration sans comprendre l'investissement complet.
| Composant | Coût estimé | Remarques |
|---|---|---|
| Export Webflow et audit de contenu | 1 000 – 3 000 $ | Travail manuel ; l'export Webflow manque les données CMS |
| Développement Next.js (10-20 pages) | 8 000 – 25 000 $ | Dépend de la complexité, des interactions, des intégrations |
| Développement Next.js (20-50 pages) | 20 000 – 60 000 $ | Sites d'entreprise avec CMS, auth, logique personnalisée |
| Configuration CMS headless | 2 000 – 8 000 $ | Configuration Sanity, Contentful, ou Payload CMS |
| Mappage de redirection SEO et QA | 1 500 – 4 000 $ | L'élément de ligne le plus important de cette liste |
| Hébergement Vercel/Netlify (mensuel) | 20 – 150 $/mois | Remplace l'hébergement Webflow de 29-49 $/mois |
| Surveillance post-migration | 500 – 2 000 $ | 4-8 semaines de surveillance de la Search Console |
Pour un site marketing de taille moyenne typique avec 30 pages et un blog, vous recherchez 15 000 – 40 000 $ tout compris. Ce n'est pas bon marché. Mais si votre site Webflow génère un trafic organique significatif, le coût d'une migration échouée est bien plus élevé.
Nous publions des tarifs transparents pour les projets comme celui-ci sur /pricing -- ça vaut le coup de vérifier si vous voulez une gamme réaliste pour votre situation spécifique.
Audit SEO pré-migration
C'est là où la plupart des gens sautent des étapes, et c'est là où la plupart des migrations échouent. Avant que vous n'écriviez une seule ligne de code Next.js, vous avez besoin d'une image complète de votre empreinte SEO actuelle.
Explorez tout
Exécutez Screaming Frog (ou Sitebulb, ou Ahrefs Site Audit) contre votre site Webflow en direct. Exportez chaque URL. Je veux dire chaque URL -- pages, éléments de collection CMS, pages d'archives paginées, pages utilitaires, tout.
Vous avez besoin de :
- Inventaire complet des URL -- chaque page qui retourne un statut 200
- Titres et descriptions meta pour chaque page
- URLs canoniques -- Webflow les définit parfois étrangement sur les pages de collection
- Structure de lien interne -- quelles pages renvoient à quelles pages
- Données structurées -- tout balisage de schéma que Webflow génère
- Ligne de base des Core Web Vitals -- exécutez PageSpeed Insights sur vos 20 meilleures pages
Documentez vos meilleurs éléments
Ouvrez Google Search Console. Allez à Performances. Triez par clics pour les 12 derniers mois. Exportez ces données. Ce sont les pages que vous ne pouvez absolument pas vous permettre de casser.
Je crée généralement une feuille de calcul avec des colonnes comme ceci :
URL | Clics mensuels | Requêtes principales | Position moyenne | Priorité
/blog/seo-guide | 2 400 | "seo guide 2025" | 3.2 | CRITIQUE
/pricing | 890 | "agency pricing" | 5.1 | ÉLEVÉE
/about | 340 | "social animal dev" | 1.0 | MOYENNE
Chaque page dans les catégories CRITIQUE et ÉLEVÉE reçoit une attention manuelle lors de la migration. Aucune redirection en masse automatisée. Aucune supposition.
Sauvegardez votre profil de backlink
Exécutez un rapport de backlink Ahrefs ou SEMrush. Si des sites externes renvoient à des URLs Webflow spécifiques (en particulier les articles de blog ou les pages de ressources), ces URLs doivent se résoudre correctement après la migration -- soit au même chemin, soit via une redirection 301.
Exporter votre site Webflow
La fonction d'export de Webflow est... limitée. Voici ce que vous obtenez réellement et ce que vous n'obtenez pas.
Ce que l'export inclut
Sur un plan CMS ou Business, en cliquant sur Export Code dans Project Settings, vous obtenez un ZIP contenant :
- Fichiers HTML statiques pour chaque page
- CSS (y compris les classes utilitaires de Webflow)
- JavaScript (l'exécution de Webflow + votre code personnalisé)
- Images et autres actifs téléchargés
Ce que l'export n'inclut pas
C'est la partie critique : les données CMS de Webflow n'accompagnent pas l'export. Vos articles de blog, membres d'équipe, études de cas -- tout contenu stocké dans les Collections CMS -- n'apparaîtra pas comme des fichiers HTML individuels de manière utile. Ils seront intégrés dans le HTML exporté en tant que contenu statique, mais vous perdez les données structurées.
Pour extraire correctement votre contenu CMS :
- Utilisez l'API CMS de Webflow pour extraire les éléments de collection en JSON
- Exportez les collections en CSV depuis le Designer Webflow (Collection Settings → Export)
- Utilisez un outil comme Whalesync ou Make.com pour envoyer les données CMS dans votre nouveau CMS headless
Voici un script rapide pour extraire les éléments CMS de Webflow via leur API :
// fetch-webflow-cms.js
const WEBFLOW_API_TOKEN = process.env.WEBFLOW_TOKEN;
const COLLECTION_ID = 'your-collection-id';
async function fetchCollectionItems() {
const response = await fetch(
`https://api.webflow.com/v2/collections/${COLLECTION_ID}/items`,
{
headers: {
'Authorization': `Bearer ${WEBFLOW_API_TOKEN}`,
'accept': 'application/json'
}
}
);
const data = await response.json();
// Write to JSON file for import into your headless CMS
const fs = require('fs');
fs.writeFileSync(
'cms-export.json',
JSON.stringify(data.items, null, 2)
);
console.log(`Exported ${data.items.length} items`);
}
fetchCollectionItems();
Ne vous fiez pas uniquement à l'export HTML. Analysez les fichiers exportés avec quelque chose comme Cheerio si vous devez extraire du contenu du HTML statique, mais l'itinéraire API est plus propre.
Construire le remplacement Next.js
Maintenant le vrai travail. Je suppose que vous utilisez Next.js 14 ou 15 avec l'App Router -- si vous commencez à zéro en 2025, il n'y a aucune raison d'utiliser le Pages Router.
Mappage de la structure URL
C'est non-négociable : votre nouvelle structure d'URL devrait correspondre à votre ancienne partout où c'est possible. Chaque changement d'URL est un risque. Si votre blog Webflow se trouve à /blog/post-slug, votre blog Next.js devrait se trouver à /blog/post-slug.
app/
├── page.tsx # Page d'accueil
├── about/
│ └── page.tsx # /about
├── blog/
│ ├── page.tsx # /blog (listing)
│ └── [slug]/
│ └── page.tsx # /blog/post-slug
├── services/
│ └── [slug]/
│ └── page.tsx # /services/web-development
└── contact/
└── page.tsx # /contact
Implémentation des métadonnées
L'API de métadonnées de Next.js 15 est véritablement meilleure que ce que Webflow vous donne. Vous obtenez le contrôle programmatique complet, et tout est rendu côté serveur -- ce qui signifie que Googlebot le voit à la première peinture.
// app/blog/[slug]/page.tsx
import { Metadata } from 'next';
import { getPostBySlug } from '@/lib/cms';
import { notFound } from 'next/navigation';
type Props = {
params: Promise<{ slug: string }>;
};
export async function generateMetadata({ params }: Props): Promise<Metadata> {
const { slug } = await params;
const post = await getPostBySlug(slug);
if (!post) return {};
return {
title: post.seoTitle || post.title,
description: post.seoDescription || post.excerpt,
openGraph: {
title: post.title,
description: post.excerpt,
images: [{ url: post.featuredImage, width: 1200, height: 630 }],
type: 'article',
publishedTime: post.publishedAt,
},
alternates: {
canonical: `https://yoursite.com/blog/${slug}`,
},
};
}
export default async function BlogPost({ params }: Props) {
const { slug } = await params;
const post = await getPostBySlug(slug);
if (!post) notFound();
const jsonLd = {
'@context': 'https://schema.org',
'@type': 'BlogPosting',
headline: post.title,
datePublished: post.publishedAt,
dateModified: post.updatedAt,
author: {
'@type': 'Person',
name: post.author.name,
},
image: post.featuredImage,
description: post.excerpt,
};
return (
<article>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
<h1>{post.title}</h1>
{/* Render post content */}
</article>
);
}
Remarquez que l'URL canonique est définie explicitement. Ne laissez pas cela au hasard. Webflow gère les canoniques automatiquement ; dans Next.js, vous devez être intentionnel.
Optimisation des performances
Deux choses qui font la plus grande différence par rapport à Webflow :
Optimisation des images avec next/image :
import Image from 'next/image';
<Image
src={post.featuredImage}
alt={post.imageAlt}
width={1200}
height={630}
priority={true} // for above-the-fold images
sizes="(max-width: 768px) 100vw, 800px"
/>
Optimisation des polices avec next/font :
import { Inter } from 'next/font/google';
const inter = Inter({
subsets: ['latin'],
display: 'swap',
});
Ces deux optimisations seules réduisent généralement le LCP de 1 à 2 secondes par rapport à la gestion par défaut des polices et des images de Webflow.
Pour les équipes envisageant le côté intégration CMS headless, nous couvrons ce travail sur notre page développement CMS headless.
La stratégie de redirection 301 qui fonctionne réellement
C'est la section qui sauve vos classements. Je vais être douloureusement approfondi ici parce que j'ai vu trop de migrations échouer sur l'implémentation des redirections.
Créez une carte de redirection complète
Prenez votre exploration Screaming Frog à partir de la phase d'audit. Pour chaque URL qui existe sur le site Webflow, vous avez besoin d'exactement un de ces résultats :
- Même URL sur Next.js -- pas de redirection nécessaire, mais vérifiez qu'elle fonctionne
- URL différente sur Next.js -- redirection 301 de l'ancienne vers la nouvelle
- Page supprimée -- redirection 301 vers la page existante la plus pertinente
Ne retournez jamais un 404 pour une page qui avait précédemment du trafic ou des backlinks. Jamais.
Implémentez dans next.config.js
// next.config.js
const redirects = require('./redirects.json');
/** @type {import('next').NextConfig} */
const nextConfig = {
async redirects() {
return redirects.map(({ source, destination }) => ({
source,
destination,
permanent: true, // 301 status code
}));
},
};
module.exports = nextConfig;
Et votre redirects.json :
[
{ "source": "/old-blog-post", "destination": "/blog/old-blog-post" },
{ "source": "/services/old-service", "destination": "/services/new-service" },
{ "source": "/team/:member", "destination": "/about" }
]
Utilisez les modèles de correspondance de chemin pour les redirections en masse où les structures d'URL ont changé systématiquement. Mais testez toujours ces redirections individuellement -- la correspondance de modèles peut causer des boucles de redirection si vous ne faites pas attention.
La bizarrerie spécifique à Webflow
Webflow ajoute des barres obliques à la fin des URLs. Next.js ne le fait pas par défaut. Cela signifie que yoursite.com/about/ (Webflow) et yoursite.com/about (Next.js) sont techniquement des URLs différentes.
Dans votre next.config.js, ajoutez :
const nextConfig = {
trailingSlash: false, // or true -- just be consistent
// ...
};
Ensuite, ajoutez des redirections explicites pour les variantes avec barres obliques de vos pages à haut trafic. Google finira par comprendre à travers les canoniques, mais les 301 explicites accélèrent considérablement le processus.
Gérer le contenu CMS Webflow
Si vous aviez un blog CMS Webflow avec 200 articles, vous avez besoin d'un endroit pour que ce contenu vive. Vous avez quelques bonnes options en 2025 :
| CMS | Tarification (2025) | Meilleur pour | Effort de migration |
|---|---|---|---|
| Sanity | Gratuit → 99 $/mois (Croissance) | Modèles de contenu complexes, collaboration en temps réel | Moyen |
| Contentful | Gratuit → 300 $/mois (Équipe) | Équipes d'entreprise, multi-langue | Moyen-Élevé |
| Payload CMS | Auto-hébergé (gratuit) ou Cloud 30 $/mois+ | Contrôle total, TypeScript natif | Initial plus élevé, continu plus bas |
| Fichiers MDX dans le repo | Gratuit | Petits blogs (<100 articles) | Faible |
Pour la plupart des migrations Webflow vers Next.js, je recommande Sanity. Sa flexibilité de schéma s'adapte bien à la structure de collection de Webflow, et il y a des outils communautaires pour importer les données de Webflow. Payload CMS est de plus en plus populaire pour les équipes qui veulent tout en TypeScript -- ça vaut le coup d'évaluer si vous construisez une pile personnalisée.
L'élément clé : quel que soit le CMS que vous choisissez, assurez-vous que les slugs de vos articles de blog correspondent exactement. /blog/my-great-post sur Webflow doit être /blog/my-great-post sur Next.js, en tirant du vôtre nouveau CMS.
Surveillance SEO post-migration
Le jour du lancement n'est pas la fin. C'est le début d'une période de surveillance de 4 à 8 semaines.
Semaine 1 : Actions immédiates
- Soumettez votre nouveau sitemap à Google Search Console (
https://yoursite.com/sitemap.xml) - Demandez l'indexation pour vos 20 meilleures pages en utilisant l'inspection d'URL
- Surveillez le rapport de couverture -- observez les pics d'erreurs 404
- Vérifiez les chaînes de redirection -- utilisez Screaming Frog pour explorer le site en direct et vérifiez que chaque redirection se résout en un seul saut
Semaines 2-4 : Récupération du classement
Attendez-vous à une baisse temporaire. J'ai vu les classements chuter de 5 à 15 positions au cours des deux premières semaines même avec des redirections parfaites. Ne paniquez pas. Google doit explorer de nouveau, retraiter et réassigner les signaux de classement.
Ce à surveiller :
- Nombre de pages indexées dans Search Console -- devrait se stabiliser en 2 semaines
- Taux de clic -- si le CTR chute considérablement, vos descriptions méta pourraient avoir besoin d'ajustement
- Core Web Vitals -- votre site Next.js devrait marquer mieux ; vérifiez dans le rapport CWV de Search Console
Semaines 4-8 : Confirmation
À la semaine 4, vos classements devraient être en récupération. À la semaine 8, ils devraient correspondre ou dépasser votre ligne de base pré-migration. S'ils n'ont pas été récupérés à la semaine 6, quelque chose ne va pas -- vérifiez les redirections manquées, les problèmes canoniques, ou les problèmes de rendu.
Les erreurs courantes qui détruisent les classements
Oublier les pages auto-générées de Webflow. Webflow crée des pages que vous pourriez ne pas penser -- /blog (le listing de collection), les pages paginées comme /blog?page=2, les pages de filtre tag/catégorie. Mappez-les toutes.
Ne pas correspondre à la hiérarchie des titres. Si votre site Webflow avait des balises <h1> sur les articles de blog que Google utilisait pour les featured snippets, votre site Next.js a besoin de la même hiérarchie. Ne fermez pas accidentellement votre titre dans une balise <h2> parce que votre composant de mise en page a déjà un <h1> quelque part.
Rendu côté client pour le contenu critique. C'est le gros. Si vos pages Next.js chargent une coquille vide puis récupèrent le contenu côté client, Googlebot pourrait ne pas voir votre contenu de manière fiable. Utilisez les composants serveur (la valeur par défaut dans l'App Router) ou generateStaticParams pour la génération statique. SSR est pourquoi vous avez migré vers Next.js -- utilisez-le.
Ignorer Open Graph et les aperçus sociaux. Webflow génère automatiquement les balises OG. Si vos articles de blog partagés affichent soudainement des aperçus cassés sur LinkedIn et Twitter, vous perdrez du trafic social qui affecte indirectement le SEO.
Changer de domaine lors de la migration. Si vous pouvez l'éviter, ne changez pas votre domaine en même temps que votre plateforme. Chaque changement est un facteur de risque indépendant. Migrez d'abord les plateformes, stabilisez les classements, puis envisagez un changement de domaine comme un projet séparé.
Si cela vous semble accablant, c'est normal. Les projets de migration sont celui où l'expérience compte le plus. Nous en avons fait assez pour avoir un processus fiable -- contactez-nous via notre page de contact si vous voulez discuter de votre situation spécifique.
FAQ
Combien de temps prend une migration Webflow vers Next.js ?
Pour un site marketing typique avec 20-40 pages et un blog, comptez 6-12 semaines de l'audit au lancement. Le travail de développement lui-même pourrait prendre 4-8 semaines, mais vous avez besoin de temps pour l'audit SEO en amont et la surveillance ensuite. Précipiter une migration est comment vous perdez les classements.
Vais-je perdre mes classements SEO lors de la migration de Webflow ?
Non, si vous le faites correctement. Avec des redirections 301 appropriées, des structures d'URL correspondantes, et des éléments SEO sur page équivalents, vous devriez voir les classements récupérer en 4-8 semaines. Certains sites voient même des améliorations parce que Next.js offre de meilleurs scores Core Web Vitals. La clé est de ne jamais laisser une URL précédemment indexée retourner un 404.
Puis-je exporter le code de mon site Webflow et l'utiliser dans Next.js ?
Techniquement oui -- Webflow exporte du HTML propre, du CSS, et du JavaScript. Mais pratiquement, vous ne voudriez pas. Le code exporté de Webflow utilise ses propres conventions de nommage de classe et des scripts d'exécution qui ne correspondent pas proprement aux composants React. C'est mieux de reconstruire votre UI dans React/Next.js en utilisant l'export Webflow comme référence visuelle, puis de migrer le contenu séparément.
Quel CMS headless devrais-je utiliser pour remplacer le CMS de Webflow ?
Sanity et Payload CMS sont les choix les plus populaires en 2025 pour les projets Next.js. Sanity offre un tier gratuit généreux et une édition en temps réel excellente. Payload CMS est natif TypeScript et peut être auto-hébergé. Pour les blogs plus simples, même les fichiers MDX stockés dans votre dépôt Git fonctionnent bien. Le bon choix dépend de la taille de votre équipe et de la complexité du contenu.
Comment gérer les formulaires Webflow après la migration ?
La gestion des formulaires de Webflow ne se transfère pas. Dans Next.js, vous pouvez utiliser les Server Actions (intégrés dans Next.js 14+) pour traiter les soumissions de formulaire, ou intégrer des services comme Formspree, Resend, ou vos propres routes API. Pour les formulaires de contact, les Server Actions avec livraison d'email via Resend est mon point de référence -- c'est simple et garde tout dans votre codebase.
Next.js est-il vraiment meilleur pour le SEO que Webflow ?
Cela dépend du site. Pour un site marketing de 10 pages sans logique personnalisée, les outils SEO intégrés de Webflow sont honnêtement suffisants. Mais pour les sites riches en contenu, les sites ayant besoin de balises méta dynamiques basées sur le contexte utilisateur, ou les sites où la performance des Core Web Vitals compte (indice : cela compte toujours), Next.js vous donne plus de contrôle. Le rendu côté serveur assure que Googlebot voit toujours du HTML entièrement rendu, et vous obtenez le contrôle programmatique de chaque élément SEO.
Combien coûte la migration de Webflow vers Next.js ?
Une gamme réaliste pour un site de taille moyenne est de 15 000 à 40 000 $ pour une migration professionnelle incluant la préservation du SEO. Les taux des freelancers pourraient être plus bas (5 000 à 15 000 $) mais comportent plus de risque s'ils n'ont pas d'expérience en migration. La plus grande variable de coût est de savoir si vous avez besoin d'une intégration CMS headless et combien d'interactions personnalisées doivent être reconstruites.
Dois-je utiliser SSR ou SSG pour mon site Next.js migré ?
Pour la plupart des sites marketing migrés de Webflow, la génération de site statique (SSG) est la bonne valeur par défaut. C'est plus rapide et moins cher à servir. Utilisez SSR sélectivement pour les pages qui ont besoin de données en temps réel -- comme une page de prix qui récupère des données en direct à partir d'une API. L'App Router de Next.js 15 facilite le mélange des deux approches dans le même projet en utilisant les composants serveur et generateStaticParams.