← cd ../
// local-business

Massage Lab.case

Mi propio estudio de masajes en Dénia (ES). Una web propia en Astro en cinco idiomas sobre Cloudflare, reservas por Fresha y WhatsApp, SEO local y un panel para el equipo con los bonos regalo.

year
2026
role
Propietario · diseño, desarrollo y SEO
status
En línea
stack
#Astro #Cloudflare Workers #D1 · R2 #i18n · Local SEO
massagelab.es
Massage Lab: captura en escritorio
Massage Lab open_live() ↗

Problema

Massage Lab funcionaba con Shopify. Eso hacía que un negocio de servicios pareciera una tienda online: cada tratamiento era un producto con carrito, mientras que la reserva real ya se hacía en Fresha. La web solo estaba en español e inglés, en una costa donde muchos residentes y visitantes hablan neerlandés, alemán o francés. Y los bonos regalo vivían en Shopify, separados de la forma en que trabaja el equipo.

Solución

Sustituí la tienda por una web estática en Astro, servida desde Cloudflare Workers.

  • Cinco idiomas (ES, EN, FR, NL, DE) con URLs traducidas por idioma, por ejemplo /de/behandlungen/ y /fr/soins/. Un mapa central de rutas genera cada página, los enlaces hreflang y el sitemap, así los idiomas no se desajustan.
  • Tratamientos en tres categorías (masajes, depilación, faciales), cada uno con precios por duración. El botón de reservar abre Fresha directamente en ese tratamiento, o WhatsApp con el tratamiento y la duración ya escritos.
  • Bonos regalo que se componen en la web: un importe o un tratamiento, nombres y un mensaje.
  • Migración sin perder posiciones: las 146 URLs del antiguo sitemap de Shopify se convirtieron en 604 reglas 301 exactas (una por URL antigua y variante de idioma, sin comodines). Un script comprueba que cada regla llega en un solo salto a una página que responde 200.
  • SEO local: 14 páginas para pueblos a unos 30 km (Jávea, Calpe, Moraira, Benissa y otros). Datos estructurados HealthAndBeautyBusiness en cada página con dirección, teléfono y horario, datos Service con precio en cada tratamiento y FAQPage en las preguntas frecuentes. Sitemap, robots.txt y un llms.txt generado para que los buscadores con IA citen bien tratamientos y precios. Comprobaciones en el build validan cada bloque JSON-LD, los canonicals y los enlaces hreflang recíprocos.
  • Diseño: Newsreader para los títulos, Red Hat Text para el texto y la caligrafía Distant Stroke en la portada, casi negro cálido sobre blanco roto con un acento verde musgo.

El panel del equipo

La parte de la que estoy más orgulloso no es pública. En un panel privado el equipo (propietario y empleados) gestiona todo el flujo de los bonos regalo:

  • Una solicitud desde la web llega al panel con un número de referencia. El equipo la marca como pagada y el cliente recibe un enlace personal para pagar, descargar el bono en PDF y compartirlo por WhatsApp. Quien lo recibe tiene su propia página de regalo con el bono y la dedicatoria, sin precio ni datos de pago.
  • El PDF es el bono impreso real (frente y lado del ticket), rellenado en el navegador, con un código QR. Un empleado que lo escanea llega a ese bono en el panel; un cliente llega a la página de reservas en su idioma.
  • Los bonos tienen saldo. “Canjear” descuenta un importe o un tratamiento en un único paso atómico, así un bono nunca se usa dos veces ni baja de cero. Cada cambio queda registrado: quién, cuándo, valor anterior y nuevo.
  • “Para enviar hoy” muestra a quién escribir: solicitudes sin pagar de más de 48 horas, bonos a punto de caducar y las visitas de ayer para pedir una reseña. Un toque abre WhatsApp con el texto en el idioma del cliente. No se envía nada de forma automática.
  • Además: resumen mensual con exportación CSV, importación de los antiguos bonos de Shopify, las últimas reseñas de Google, un aviso para la web y gestión de usuarios. La interfaz está en los cinco idiomas.

Funciona en el mismo Worker, con Cloudflare D1 como base de datos y una copia de seguridad cada noche en R2. Las contraseñas se guardan con PBKDF2, los intentos de acceso y los pedidos tienen límite, y los enlaces de clientes solo se guardan como hash.

Resultado

En línea en www.massagelab.es desde el 29 de octubre de 2026, en cinco idiomas y con 255 páginas en el sitemap. Las antiguas URLs de Shopify redirigen en un solo paso a la página correcta en el mismo idioma. En el momento de escribir esto, la web muestra una valoración de 4,9 con 104 reseñas en Google. Los bonos regalo se venden, se envían y se canjean en el propio panel del equipo.

Massage LabMassage LabMassage LabMassage Lab