Sirocco
← Études de cas

E-commerce

E-commerce international headless Next.js + Shopify

Un retailer européen multimarques voulait sortir d'une plateforme historique monolithique pour servir 7 marchés depuis une seule architecture headless — sans perdre une once de SEO ni de conversion.

+24%
Conversion
Vert
Core Web Vitals
7
Marchés
2,3s → 180ms
TTFB
+62%
Trafic organique

01 — Le défi

Le défi

L'ancienne plateforme Magento traînait un TTFB de 2,3 secondes en moyenne, un Core Web Vitals rouge sur 4 indicateurs sur 5, et une logique métier dispersée entre PHP, JavaScript front-end et 800 lignes de SQL. Chaque ajout de marché demandait un fork des thèmes, une déclinaison TVA spécifique et un import catalogue manuel. Le SEO international souffrait : pages dupliquées, hreflang incohérent, URLs non canoniques. La direction acceptait de migrer mais refusait toute baisse de chiffre d'affaires pendant la transition.

02 — L'approche

L'approche

Next.js 14 storefront avec ISR par locale et par pays, Shopify Plus comme back-office unifié, et Sanity comme CMS de contenu marketing. Les 7 marchés partagent une seule base catalogue avec déclinaisons prix/TVA/disponibilité matérialisées en build time. Les pages produits exploitent next/image en AVIF, le caching CDN granulaire et le streaming SSR pour Core Web Vitals au vert sur tous les marchés. Le routage hreflang est généré depuis le schéma Shopify et validé en CI ; les URLs canoniques par locale empêchent toute duplication SEO. Migration progressive marché par marché avec dual-write Shopify pendant 30 jours.

Architecture headless

Storefront Next.js 14 sur Vercel Edge, Shopify Plus en back-office unifié, Akeneo PIM source de vérité produit pour 7 marchés.

Migration marché par marché

Indexation Algolia de 320k SKU multilingues, hreflang complet, dual-write Shopify pendant 30 jours par marché avant bascule.

Optimisation performance

ISR + PPR + revalidation webhook, AVIF/WebP, méthodes de paiement locales par marché, Core Web Vitals au vert partout.

03 — Résultats

Résultats

Six mois après bascule complète, +24% de taux de conversion moyen sur les 7 marchés, Core Web Vitals au vert partout (LCP médian 1,8s), trafic organique +62% grâce à un hreflang propre et à des URLs canoniques. Aucune semaine n'a vu de baisse de chiffre d'affaires pendant la migration.

Détails techniques

Le retailer européen multimarques avec lequel nous avons travaillé opérait un e-commerce hérité d'un thème Shopify Liquid lourdement personnalisé, devenu progressivement impossible à maintenir sur les sept marchés où il était déployé. Le diagnostic technique était sans appel : Lighthouse mobile à 38, LCP à 5,8 secondes, des scripts tiers injectés sans contrôle, un CLS catastrophique provoqué par un cookie banner injecté en JavaScript. Côté business, la conversion mobile stagnait sous 0,9% et le SEO international perdait du terrain face aux pure-players locaux mieux structurés. La direction voulait conserver Shopify Plus comme back-office et OMS — l'équipe e-commerce y était formée — mais reprendre la main complète sur le front-end. Nous avons construit une architecture headless avec Next.js 14 (App Router) déployé sur Vercel Edge, connecté à l'API Storefront de Shopify Plus. La logique métier critique — checkout, panier, stocks, expéditions — reste chez Shopify ; nous ne réinventons ni les paiements ni la gestion d'inventaire. Le front consomme l'API GraphQL Storefront et utilise next-intl pour 7 pays (FR, DE, IT, ES, UK, NL, AT) et 4 langues, avec URL localisées (`/de/produkte/...` plutôt que `/de/products/...`) qui pèsent réellement dans le SEO international. Le PIM Akeneo est la source de vérité produit. Une synchronisation incrémentale quotidienne pousse les attributs, les traductions et les médias vers Shopify (pour la couche commerce) et vers Algolia (pour la recherche full-text et les facettes). Algolia gère 320 000 SKU multi-langue avec des règles métier par marché (boost des best-sellers locaux, filtrage de la disponibilité par entrepôt régional). Cette double indexation évite la classique latence du search natif Shopify et permet des temps de réponse sous 50 ms même sur les requêtes à facettes complexes. La fraîcheur des prix est un sujet sensible en e-commerce international. Nous combinons ISR (Incremental Static Regeneration) à 5 minutes pour les fiches produit, revalidation on-demand déclenchée par webhook Shopify dès qu'un prix change, et PPR (Partial Prerendering) pour isoler les fragments dynamiques — disponibilité en temps réel, panier persistant, prix promotionnels — du squelette statique. Le résultat : 95% des pages servies depuis l'Edge en sub-100 ms tout en garantissant qu'un changement de prix back-office est visible côté front en moins de 30 secondes. La partie SEO international est souvent sous-estimée. Nous avons implémenté des balises hreflang complètes croisées par paire (chaque variante linguistique pointe vers toutes les autres), des sitemaps segmentés par locale avec image-sitemap inclus, des schémas Schema.org `Product` + `Offer` + `AggregateRating` injectés en JSON-LD côté serveur, et un système de canonical strict qui résout le piège habituel des paramètres de filtre (`?color=...&size=...`) en pointant la canonique vers la fiche produit non filtrée. Trois mois après la mise en ligne, le trafic organique avait été multiplié par 2,9 sur les requêtes produit. Les paiements ont demandé une attention par pays. Shopify Markets gère la TVA OSS automatiquement (taux par pays de destination, seuils intracommunautaires, formats de facture conformes), ce qui évite une réimplémentation. Les méthodes locales — iDEAL aux Pays-Bas, Bancontact en Belgique, SOFORT en Allemagne, Cartes Bancaires en France — sont activées par marché avec leur authentification 3DS2 native, et la conversion finale a gagné 18% sur les marchés où les locaux préfèrent leurs méthodes domestiques au CB international. La performance s'est jouée sur des détails. Hero image en AVIF avec fallback WebP, dimensionnée exactement aux breakpoints réels (pas de upscaling), preloadée en `<link rel="preload" as="image">` quand elle est above-the-fold, et `fetchpriority="high"` pour donner la priorité au navigateur. Fonts auto-hébergées avec `font-display: optional` (pas swap, pour éviter FOIT/FOUT), subset latin uniquement, woff2 préchargé. Server Components partout où c'est possible, ce qui sort des dizaines de KB de JS client. Cookie banner avec hauteur réservée dès le HTML pour neutraliser le CLS au chargement. Lighthouse mobile est passé de 38 à 96, LCP de 5,8 secondes à 1,4 seconde, INP médian sous 200 ms. La conversion mobile a progressé de 47%, le revenu global de 63% sur 6 mois (déjà ajusté pour la saisonnalité), et le trafic SEO produit a été multiplié par 2,9. Le coût Vercel + Algolia + Akeneo combiné représente environ 1,1% du chiffre d'affaires, contre 0,3% pour l'ancien thème Shopify ; ce surcoût a été remboursé en moins de deux mois par la seule progression de conversion.