Problème
Massage Lab tournait sur Shopify. Une entreprise de services ressemblait donc à une boutique en ligne : chaque soin était un produit avec un panier, alors que la vraie réservation se faisait déjà sur Fresha. Le site n’existait qu’en espagnol et en anglais, sur une côte où beaucoup d’habitants et de visiteurs parlent néerlandais, allemand ou français. Et les cartes cadeaux restaient dans Shopify, à l’écart de la façon dont l’équipe travaille vraiment.
Solution
J’ai remplacé la boutique par un site Astro statique, servi depuis Cloudflare Workers.
- Cinq langues (ES, EN, FR, NL, DE) avec des URL traduites par langue, par exemple
/de/behandlungen/et/fr/soins/. Une carte centrale des routes génère chaque page, les liens hreflang et le sitemap, pour que les langues ne divergent pas. - Soins en trois catégories (massages, épilation, soins du visage), chacun avec des prix par durée. Le bouton de réservation ouvre Fresha directement sur ce soin, ou WhatsApp avec le soin et la durée déjà remplis.
- Cartes cadeaux composées sur le site : un montant ou un soin, des noms et un message.
- Migration sans perte de positions : les 146 URL de l’ancien sitemap Shopify sont devenues 604 règles 301 exactes (une par ancienne URL et variante de langue, sans joker). Un script vérifie que chaque règle mène en un seul saut à une page qui répond 200.
- SEO local : 14 pages pour les villes à environ 30 km (Jávea, Calpe, Moraira, Benissa et d’autres). Données structurées
HealthAndBeautyBusinesssur chaque page avec adresse, téléphone et horaires, donnéesServiceavec prix sur chaque soin,FAQPagesur la FAQ. Sitemap, robots.txt et un llms.txt généré pour que les moteurs de recherche IA citent correctement les soins et les prix. Des contrôles au build valident chaque bloc JSON-LD, les canonicals et les liens hreflang réciproques. - Design : Newsreader pour les titres, Red Hat Text pour le texte et le script Distant Stroke dans le hero, un presque-noir chaud sur blanc cassé avec un accent vert mousse.
Le tableau de bord de l’équipe
La partie dont je suis le plus fier n’est pas publique. Dans un tableau de bord privé, l’équipe (propriétaire et employés) gère tout le parcours des cartes cadeaux :
- Une demande depuis le site arrive dans le tableau de bord avec un numéro de référence. L’équipe la marque comme payée et le client reçoit un lien personnel pour payer, télécharger la carte en PDF et la partager sur WhatsApp. La personne qui la reçoit a sa propre page cadeau avec la carte et la dédicace, sans prix ni données de paiement.
- Le PDF est la vraie carte imprimée (recto et côté ticket), remplie dans le navigateur, avec un code QR. Un employé qui le scanne arrive sur cette carte dans le tableau de bord ; un client arrive sur la page de réservation dans sa langue.
- Les cartes ont un solde. « Utiliser » déduit un montant ou un soin en une seule étape atomique, si bien qu’une carte ne peut jamais servir deux fois ni passer sous zéro. Chaque modification est enregistrée : qui, quand, ancienne et nouvelle valeur.
- « À envoyer aujourd’hui » indique à qui écrire : les demandes impayées depuis plus de 48 heures, les cartes bientôt expirées et les visites de la veille pour demander un avis. Un geste ouvre WhatsApp avec le texte dans la langue du client. Rien n’est envoyé automatiquement.
- Et aussi : un récapitulatif mensuel avec export CSV, l’import des anciennes cartes cadeaux Shopify, les derniers avis Google, un bandeau d’annonce pour le site et la gestion des utilisateurs. L’interface existe dans les cinq langues.
Le tout tourne sur le même Worker, avec Cloudflare D1 comme base de données et une sauvegarde chaque nuit sur R2. Les mots de passe sont hachés avec PBKDF2, les tentatives de connexion et les commandes sont limitées, et les liens clients ne sont stockés que sous forme de hash.
Résultat
En ligne sur www.massagelab.es depuis le 29 octobre 2026, en cinq langues avec 255 pages dans le sitemap. Les anciennes URL Shopify redirigent en une seule étape vers la bonne page dans la même langue. Au moment de la rédaction, le site affiche une note de 4,9 sur 104 avis Google. Les cartes cadeaux sont vendues, envoyées et utilisées dans le tableau de bord de l’équipe.


