Sanity es el CMS headless. Permite a marketing editar contenido editorial (banners, blog, FAQs, páginas, configuración de NavBar/Footer) sin tocar código.
gar06qvz
| Dataset | Uso | Web que lo consume |
|---|---|---|
develop |
Staging | www.pampling.org |
production |
Producción | www.pampling.com (post go-live) |
Los datasets son universos separados. Cada uno tiene sus propios documentos. No hay sync automático entre datasets — los cambios se copian manualmente o vía export/import.
| URL | Dataset |
|---|---|
pampling-staging.sanity.studio |
develop |
pampling.sanity.studio |
production |
El subdominio "staging" se renombró a
pampling-staging(antes erapampling-develop). Hubo confusión con el cambio del modelo 3 → 2 entornos.
Definidos en apps/sanity/schemaTypes/:
| Tipo | Descripción |
|---|---|
product |
Producto de Shopify + campos editoriales |
productVariant |
Variante de producto (deshabilitado — ver más abajo) |
collection |
Colección de Shopify |
| Tipo | Descripción |
|---|---|
banner |
Banners promocionales |
blogPost |
Post de blog |
page |
Página custom con bloques |
staticPage |
Página estática (FAQs, aviso legal) |
plpFeed |
Feed de productos custom para PLPs |
pdpContent |
Contenido enriquecido para PDP |
promoBannerTop |
Banner top (orange bar) |
navBar (singleton) |
Menú principal |
footer (singleton) |
Footer |
siteSettings (singleton) |
Configuración global |
mercado |
Configuración por mercado (ES, EN, FR, IT) |
faqCategory, faqAnswer |
FAQs |
disenador |
Perfil público de diseñador |
App instalada en Shopify que sincroniza productos a Sanity.
pampling-staging.myshopify.com → dataset developpampling-com.myshopify.com → dataset production| Tipo Shopify | Tipo Sanity | Estado |
|---|---|---|
| Product | product |
Activo |
| Variant | productVariant |
Desactivado (por cuota) |
| Collection | collection |
Activo |
productVariant está deshabilitadoSi por error se reactiva, hay que volver a desactivarlo en Settings de Sanity Connect dentro de Shopify Admin.
| Variable | Uso |
|---|---|
SANITY_API_TOKEN |
Runtime: storefront + product-search lo usan para queries con auth (drafts, etc.). Token tipo "Developer" con acceso a todos los datasets |
SANITY_DEPLOY_TOKEN |
CI/CD: GitHub Actions despliega Sanity Studio. Token tipo "Deploy Studio" |
NEXT_PUBLIC_SANITY_PROJECT_ID |
Public: gar06qvz (no es secreto) |
NEXT_PUBLIC_SANITY_DATASET |
Public: develop o production según entorno |
Configuradas en GitHub Environments para que el Studio sepa hablar con backoffice y Shopify del entorno correcto:
SANITY_STUDIO_BACKOFFICE_API_URL — URL del backofficeSANITY_STUDIO_SHOPIFY_STORE_DOMAIN — pampling-staging.myshopify.com o pampling-com.myshopify.comSHOPIFY_STORE_ID — pampling-staging o pampling-comSANITY_STUDIO_FRONTEND_API_KEY — mismo valor que NEXT_PUBLIC_BACKOFFICE_API_KEYSANITY_STUDIO_SHOPIFY_ADMIN_ACCESS_TOKEN — mismo valor que SHOPIFY_ADMIN_ACCESS_TOKENGitHub Actions despliega Sanity Studio cuando hay cambios en apps/sanity/*:
main → deploy automático a pampling-staging.sanity.studiov*.*.* → deploy a pampling.sanity.studio.github/workflows/sanity-deploy.ymlworkflow_dispatch con input target para deploys manuales.Plan Growth: 50.000 documentos por proyecto (ambos datasets sumados).
Estimación con catálogo completo:
| Escenario | Documentos | ¿Cabe en 50k? |
|---|---|---|
| Solo editorial actual | ~1.000 / dataset | ✅ |
| + productos sin variants (4k) | ~5.000 / dataset, 10k total | ✅ |
| + productos con variants (4k × 8 = 32k) | ~40k / dataset, 80k total | ❌ |
Por eso productVariant está desactivado. Si llegamos al límite, opciones:
Detalles en Costes Sanity
pampling-staging.sanity.studio y pampling.sanity.studio son subdominios de sanity.studio. Para usar dominio propio (ej. sanity.pampling.com) hace falta plan Enterprise. Decisión pendiente — no bloqueante.
El storefront usa next-sanity para queries GROQ:
import { sanityClient } from '@/lib/sanity-client';
const banner = await sanityClient.fetch(
`*[_type == "banner" && enabled == true][0]`,
{},
{ next: { revalidate: 60 } } // ISR de 60s
);
Sanity dispara webhooks contra el storefront cuando un documento se publica:
https://www.pampling.org/api/revalidate (configurar en Sanity Manage → API → Webhooks)REVALIDATION_SECRETSin este webhook, los cambios en Sanity tardan hasta revalidate segundos en aparecer en la web (puede ser hasta 60s).
Acceso al proyecto Sanity vía https://www.sanity.io/manage/project/gar06qvz.
| Rol | Quién | Permisos |
|---|---|---|
| Administrator | IT Pampling (José, Alba) | Todo |
| Editor | Marketing, atención cliente | Crear, editar, publicar, eliminar contenido |
| Viewer | Auditoría / consultoría puntual | Solo lectura |
Auditoría pendiente: depurar usuarios de Tailor que ya no trabajan en el proyecto.
https://www.sanity.io/manage/project/gar06qvz
Para entrar a editar contenido, usar los Studios directamente:
https://pampling-staging.sanity.studiohttps://pampling.sanity.studiodevelop, no staging. Es herencia del modelo de 3 entornos.productVariant desactivado debe respetarse — si se reactiva, hay riesgo de revertir lo que costó arreglar.pampling-com antes de instalar Sanity Connect ahí, los productos quedarán solo en Shopify (no en Sanity) hasta que se haga sync inicial.store.* de documentos product o collection — los sobreescribe Sanity Connect.