Una tienda de menaje reconstruida para que la IA pueda leer el catálogo
Una marca madrileña de vajilla y mantelería premium salió de WordPress y WooCommerce a una tienda a medida. Polargate migró 24 productos y 93 variantes sin acceso al administrador, y convirtió 65 páginas que no servían nada a los rastreadores de IA en páginas con el catálogo entero en HTML plano.

- 105.212
- caracteres de texto legibles por los rastreadores de IA en 65 URLs, frente a cero antes
- 65
- rutas pregeneradas en el build con sus propios metadatos y JSON-LD
- 24
- productos migrados, en 19 series y 9 categorías
- 93
- variantes de producto verificadas una a una contra el catálogo antiguo
- 137
- imágenes de catálogo regeneradas en WebP a tres anchos
- 92
- referencias en el feed de producto activo para Google Merchant Center y Meta
El problema
La marca llevaba dos años vendiendo online con una tienda en WordPress y WooCommerce y casi no vendía. Ya nadie podía entrar en el administrador de WordPress. El envío se prometía plano cuando las tarifas reales del transportista no lo permitían, había precios tachados sin un precio anterior real detrás y varias afirmaciones sobre el producto y sobre el pago no se podían sostener. Lo peor no se veía: las 65 URLs devolvían cero caracteres de texto a GPTBot, ClaudeBot, PerplexityBot y OAI-SearchBot, así que para un asistente de IA la tienda no tenía ni un solo producto.
Qué construimos
Polargate reconstruyó la tienda sobre su propia base, no sobre otro ecosistema de plugins: Vite, React y TypeScript con Tailwind y shadcn/ui, Supabase para Postgres, Storage, Auth y funciones edge en Deno, y Vercel para el alojamiento. Leímos el catálogo antiguo por la API pública de WooCommerce Store y lo verificamos pieza a pieza: 24 productos, 93 variantes, 19 series, 9 categorías y 137 imágenes regeneradas en WebP a tres anchos. Las 65 rutas se pregeneran en el build con sus propios metadatos y JSON-LD, y tres guardas rompen el build si una ruta baja de 400 caracteres de texto.
El resultado
El catálogo ya es legible tanto para buscadores como para asistentes de IA: 105.212 caracteres de texto en 65 URLs, frente a cero, con refresco cada mañana desde un cron de GitHub Actions que dispara un deploy hook de Vercel. Hay un feed de producto con 92 referencias para Google Merchant Center, Meta y Pinterest, y un sitemap de 64 páginas aceptado en Search Console. El cobro con tarjeta se verificó con un cargo real antes de abrir. La tienda no lleva vendiendo el tiempo suficiente para dar cifras, y Polargate no publica números que no pueda atribuir.
Stack
- Vite
- React
- TypeScript
- Tailwind CSS
- shadcn/ui
- React Router
- TanStack Query
- Supabase
- PostgreSQL
- Deno
- Vercel
- GitHub Actions
- Node.js
- Resend
- Search Console
- Meta Ads
Lo que encontramos
La marca llevaba dos años vendiendo online con una tienda en WordPress y WooCommerce, y casi no vendía. Ya nadie podía entrar en el administrador de WordPress, así que leímos el catálogo por la API pública de WooCommerce Store y lo reconstruimos pieza a pieza: 24 productos, 93 variantes, 19 series, 9 categorías y 137 imágenes.
La auditoría sacó problemas que no tenían que ver con el diseño. El envío se prometía plano cuando las tarifas reales del transportista no lo permitían. Había precios tachados sin un precio anterior real detrás. Y algunas afirmaciones sobre el producto y sobre la pasarela de pago no se podían sostener, así que se retiraron.
Y luego el hallazgo que cambió el orden del trabajo. El 4 de agosto de 2026 pedimos cada URL tal y como la ven GPTBot, ClaudeBot, PerplexityBot y OAI-SearchBot. Las 65 páginas devolvían cero caracteres de texto. La tienda solo existía después de ejecutar JavaScript, así que para un asistente de IA el catálogo estaba vacío.
Lo que construimos
Reconstruimos la tienda sobre nuestra propia base, no sobre otro ecosistema de plugins: Vite, React y TypeScript con Tailwind y shadcn/ui, TanStack Query para los datos, Supabase para Postgres, Storage, Auth y funciones edge en Deno, y Vercel para el alojamiento. La seguridad a nivel de fila está activada y forzada en las 25 tablas, y los precios se releen en el servidor antes de cobrar nada.
- Las 65 rutas se pregeneran en el build, cada una con su título, descripción, canónica, Open Graph y JSON-LD. Tres guardas rompen el build si una ruta baja de 400 caracteres, para que la legibilidad no se pierda sin que nadie se entere.
- Las imágenes migradas se regeneraron en WebP a tres anchos. Solo la segunda tanda pasó de 80,0 MB de PNG a 11,3 MB, un 85,9 % menos.
- El envío se calcula en Postgres por peso y zona, y la misma función responde a la estimación del navegador y al servidor que crea el pedido.
- El cobro con tarjeta va por el TPV virtual del banco del propio cliente con protocolo CECA: el importe se relee en el servidor, la firma se verifica y las notificaciones repetidas son idempotentes.
- El equipo de la marca lleva la tienda desde un panel propio: pedidos, productos, precios, stock, series y envíos.
Cómo funciona ahora
El catálogo sirve 105.212 caracteres de HTML legible en 65 URLs, y un cron de GitHub Actions dispara cada mañana un deploy hook de Vercel para que las páginas pregeneradas sigan los cambios de stock y de precio. En cada build se regenera un feed de producto con 92 referencias para Google Merchant Center, Meta y Pinterest. El sitemap de 64 páginas está aceptado en Search Console, y el antiguo de WooCommerce, que daba error, ya no está. Las confirmaciones de pedido salen del subdominio del propio cliente.
Antes de abrir pasaron cinco auditorías multiagente, con cada hallazgo verificado de forma adversarial, y se corrigieron más de 70. Varios costaban dinero de verdad: una escena que vendía piezas negras mostrando azules, un pedido que cobraba 99 unidades, un carrito que duplicaba cantidades y un error de IVA en la preparación de unos 80 euros por cada 100 pedidos.
Preguntas sobre este proyecto
¿Cuánto se tarda en una migración de WooCommerce como esta?
¿Se puede migrar nuestro catálogo si hemos perdido el acceso al administrador de WordPress?
¿Por qué mi tienda sale en Google pero no en ChatGPT ni en Perplexity?
¿Se puede conectar la tienda con el TPV de nuestro banco en vez de Stripe?
¿Podremos actualizar productos y stock nosotros mismos después?
Arranca el motor
Cuéntanos qué estás construyendo en unas pocas preguntas cortas. Un ingeniero senior responde por escrito en 48 horas laborables con una primera lectura de alcance, plazos y precio.