Shopify es el motor transaccional de la nueva web: catálogo, carrito, checkout, pagos, customer accounts. La capa visual y de experiencia la pone Next.js (modelo headless).
| Tienda | Uso |
|---|---|
pampling-dev.myshopify.com |
Tienda de desarrollo de Tailor. Sin uso operativo nuestro |
pampling-staging.myshopify.com |
Staging — apunta a www.pampling.org |
pampling-com.myshopify.com |
Producción — apuntará a www.pampling.com |
Cada tienda es un universo independiente: customers, productos, orders, apps instaladas, configuración. NO se replican datos automáticamente entre tiendas.
| API | Para qué |
|---|---|
| Storefront API | Catálogo público, carrito, checkout |
| Admin API | Crear/actualizar customers, gestionar webhooks, leer orders, mutaciones de productos |
| Customer Account API | Login, registro, gestión de cuenta del cliente |
Para cada tienda hay una Custom App con tokens propios.
pampling-com (producción)| Variable | Token | Notas |
|---|---|---|
SHOPIFY_HOST |
pampling-com.myshopify.com |
|
SHOPIFY_STORE_NAME |
pampling-com.myshopify.com |
|
SHOPIFY_SHOP_ID |
64465895630 |
Formato numérico puro (no GID) |
SHOPIFY_API_KEY |
281c77e15bbd01e31c1544c9ee6d0f81 |
|
SHOPIFY_API_SECRET |
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 |
|
SHOPIFY_ADMIN_ACCESS_TOKEN |
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 |
|
SHOPIFY_STOREFRONT_ACCESS_TOKEN |
9aab6f10c10d58db71d1135a59756f8a |
Creada específicamente para Customer Account API:
| Variable | Valor |
|---|---|
SHOPIFY_CUSTOMER_ACCOUNT_ID |
fe1074d1-4418-4a81-87f8-fd2a3afdb765 (formato UUID sin prefijo) |
Hydrogen genera tokens adicionales que no necesitamos (porque el código usa los de la Custom App):
PRIVATE_STOREFRONT_API_TOKEN = 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 (ignorar)PUBLIC_STOREFRONT_API_TOKEN = b36e2b7f9211d0ed1081a60dc7e81710 (ignorar)Custom App tiene scopes amplios (sobredimensionados, deuda técnica a revisar post go-live). Por ahora cubre todo lo necesario para storefront, backoffice, product-search.
Ver matriz completa en Apps externas en Shopify.
Shopify dispara webhooks contra el backoffice cuando suceden eventos:
| Evento | Endpoint backoffice | Acción |
|---|---|---|
orders/create |
/webhooks/shopify/orders/create |
Registra pedido en BD, calcula puntos pendientes Pampling UP |
orders/paid |
/webhooks/shopify/orders/paid |
Confirma pago, activa puntos |
orders/cancelled |
/webhooks/shopify/orders/cancelled |
Revierte puntos |
refunds/create |
/webhooks/shopify/refunds/create |
Ajusta puntos proporcionalmente |
customers/create |
/webhooks/shopify/customers/create |
Crea fila en users con metadata |
customers/update |
/webhooks/shopify/customers/update |
Sincroniza cambios de email/datos |
products/update |
/webhooks/shopify/products/update |
Invalidación de caché Next.js |
Cada webhook valida la firma con SHOPIFY_API_SECRET.
Registro de logs en webhook_log (PostgreSQL) y processed_events para idempotencia.
Detalle en Modelo de productos.
Resumen:
Color, Size, Target gender.filter:* para filtros.custom.* para parent/child y referencias.Shopify gestiona el checkout completo. Configuración:
Más detalle en Envíos y pagos
Detalle en Usuarios y autenticación y monedas
Shopify Markets permite:
Estructura inicial preparada por Tailor. Mercados activos: ES, EN, FR, IT. DE pendiente (cotización adicional con Tailor).
Documento de referencia: Markets · CUBRO (3) en Notion.
Storefront:
SHOPIFY_STOREFRONT_ACCESS_TOKENSHOPIFY_HOSTSHOPIFY_STORE_NAMESHOPIFY_SHOP_IDSHOPIFY_CUSTOMER_ACCOUNT_IDBackoffice:
SHOPIFY_API_KEYSHOPIFY_API_SECRETSHOPIFY_ADMIN_ACCESS_TOKENProduct Search:
SHOPIFY_ADMIN_ACCESS_TOKENHistórico:
pampling-dev para nada importante. Es la tienda de desarrollo de Tailor.pampling-staging, nunca en pampling-com.Login a Shopify Admin: https://admin.shopify.com/store/<nombre-tienda>.
Cada empleado con su email @pampling.com. 2FA obligatoria.