Guía operativa para el equipo de marketing.
https://pampling-staging.sanity.studiohttps://pampling.sanity.studioAcceso con cuenta @pampling.com añadida al proyecto. Solicitar invitación a IT si no se tiene acceso.
Sanity organiza el contenido en documentos (cada uno con un tipo). Los principales que verás:
| Tipo de documento | Para qué sirve |
|---|---|
banner |
Banners y promos de la home (hero, banners top, etc.) |
blogPost |
Post del blog |
page |
Páginas estáticas custom (campañas, landings) |
staticPage |
Páginas legales/fijas (FAQs, aviso legal, política privacidad) |
plpFeed |
Feeds de productos custom (ej. "Más vendidos del mes") |
pdpContent |
Contenido enriquecido específico de una PDP (galería, bloques) |
product |
Productos (sincronizados desde Shopify, no editar campos store.*) |
collection |
Colecciones (sincronizadas desde Shopify) |
navBar (singleton) |
Configuración del menú principal |
footer (singleton) |
Configuración del footer |
promoBannerTop |
Banner superior estrecho (orange bar) |
siteSettings |
Configuración global del sitio |
Singletons: solo existe uno por dataset. Aparecen fijos en el desk de Sanity Studio.
Tipo banner. Atributos:
title, subtitleimage (mobile + desktop)cta (texto + URL)enabled (boolean)startDate, endDate (opcional para programar)Se asignan a:
siteSettings o homePage (verificar singleton actual)promoBannerTopTipo blogPost. Atributos típicos:
title, slugexcerpt, body (rich text)coverImageauthor (referencia)publishedAttagsTipo page o staticPage. Permiten construir contenido con bloques modulares (text, image, columns, CTA).
Tipo faqCategory + faqAnswer (verificar nombres exactos en el Studio).
Cada respuesta tiene un campo body rich text. Si quedan respuestas con ***PENDIENTE*** o lorem ipsum, completarlas antes del go-live.
Singleton que define el menú principal. Permite:
Singleton con:
| Campo | Por qué no |
|---|---|
_type == "product" campos store.* |
Sincronizados desde Shopify. Se sobreescriben en cada sync. |
_type == "collection" campos store.* |
Igual. |
slug de productos |
Se generan desde Shopify. |
| GIDs de productos | Vienen de Shopify, nunca tocar. |
productSanity Connect crea el documento pero deja campos editoriales en blanco para que los rellene marketing:
careInfo — texto del acordeón "Cuidado camisetas" en la PDPadditionalInfo — texto del acordeón "Información adicional"seoTitle, seoDescription — SEOpdpContent — referencia a contenido enriquecido (galería, bloques custom)shortDescription — descripción corta para PLP cardstraducciones — si el producto necesita textos custom por idioma| Dataset | Cuándo se ve en la web |
|---|---|
develop |
Staging (www.pampling.org). Hacer cambios aquí primero para probar. |
production |
Producción (www.pampling.com). Solo publicar aquí lo que ya está validado en staging. |
develop (staging).www.pampling.org (CDN de Sanity propaga en segundos).production manualmente (puede ser copy/paste o exportar/importar el documento).www.pampling.com.No hay sync automático entre datasets. Cada cambio se hace manualmente en ambos. Esto puede cambiarse contratando workflow de Sanity Enterprise.
Sanity tiene estado de draft vs published:
store.isDeleted = true (soft delete). Si lo borras en Sanity, en el próximo sync se recreará.| Rol | Permisos |
|---|---|
| Administrator | Todo, incluyendo schema y settings del proyecto |
| Editor | Crear, editar, publicar, eliminar contenido |
| Viewer | Solo lectura |
Recomendación:
Plan Growth: 50.000 documentos por proyecto.
A 2026-05, estado aproximado:
develop: ~1.200 documentosproduction: ~1.000 documentosCuando se conecten todos los productos de producción (~3.500-4.000 productos), subirá a:
production: ~5.000 documentos (con productVariant deshabilitado)Si
productVariantse activase: ~32k docs por dataset, lo que reventaría la cuota.
Más info en Costes Sanity: busca por título, slug o tipo.
*[_type == "faqAnswer" && body match "PENDIENTE"] lista todas las FAQs aún con placeholder.| Síntoma | Causa | Solución |
|---|---|---|
| El cambio no aparece en la web | El documento no está publicado (solo en draft) | Publish |
| El cambio aparece tarde | Caché del CDN de Sanity (~1-2 min) o caché de Next.js | Esperar o forzar revalidate desde Sanity (botón) |
Link de mega-menú lleva a / |
El campo URL del card está vacío | Rellenar URL en el documento navBar |
| Imagen no carga | Imagen sin subir o link roto | Re-subir |
| Contenido aparece en otro idioma | El documento tiene traducciones; el campo del idioma actual está vacío | Rellenar el campo del idioma es |