Documento de referencia obligado para IT (que gestiona el sync Odoo → Shopify) y para marketing (que da de alta productos manualmente). Sin estas convenciones, los filtros y la agrupación de la web no funcionan.
Adaptado de la guía oficial de Tailor entregada en febrero 2026.
| Bloque | Obligatorio | Cómo |
|---|---|---|
| Contenido básico | Sí | Título, descripción, imágenes/vídeos |
Tags filter:* |
Sí | Para que aparezca en filtros |
| Variantes | Sí | Color, Size, Target gender — con nombres exactos |
Metafields custom |
Sí | Para agrupación parent/child |
| Colecciones | Sí | Para navegación facetada |
| Campo | Descripción |
|---|---|
| Título | Nombre del producto tal como aparece en la tienda |
| Descripción | Texto, soporta HTML |
| Media | Imágenes y vídeos del producto |
filter:<categoría>:<valor>
Reglas estrictas:
-).ñ, sin caracteres especiales.Agrupa productos por color principal. Distinto del color de la variante.
| Tag | Ejemplo |
|---|---|
filter:base-color:negro |
|
filter:base-color:blanco |
|
filter:base-color:azul |
|
filter:base-color:rojo |
|
filter:base-color:verde |
|
filter:base-color:gris |
|
filter:base-color:amarillo |
|
filter:base-color:naranja |
|
filter:base-color:rosa |
|
filter:base-color:morado |
(Metafield opcional: custom.base_color)
filter:category-collection:<categoría>
Valores:
camisetassudaderascalcetinesboxersboligrafostazasgorrasMetafield obligatorio: custom.category_collection (tipo collection_reference, apunta al GID de la colección de categoría).
filter:fit:<valor>
Valores:
regularoversizeslimrelaxed(Metafield opcional: custom.fit)
filter:stamping-area:<valor>
Solo estos 4 valores permitidos (el sistema traduce automáticamente):
| Tag | Cómo se ve en la web |
|---|---|
filter:stamping-area:front |
delante |
filter:stamping-area:back |
detrás |
filter:stamping-area:back-and-front |
delante y detrás |
filter:stamping-area:pocket |
bolsillo |
❌ Errores típicos: usar
filter:stamping-area:delanteofilter:stamping-area:frente. Solo los 4 valores en inglés funcionan.
filter:design:<slug>
Usar el slug generado automáticamente en el backoffice al crear el diseño.
Ejemplos:
filter:design:redemptionfilter:design:last-of-usfilter:design:cat-lovers(Metafield opcional: custom.design)
filter:designer:<username>
Usar el username del diseñador del backoffice.
Ejemplos:
filter:designer:pablosantosfilter:designer:teresadesign(Metafield opcional: custom.designer)
Los menús de la web (Camisetas → Manga corta → Videojuegos) se construyen con colecciones Shopify. Cada producto debe asignarse a varias colecciones:
| Nivel | Ejemplos |
|---|---|
| Categoría | camisetas, calcetines, sudaderas, boxers |
| Subcategoría | manga-corta, manga-larga, tobilleros, media-cana |
| Temática | manga, gatos, videojuegos, series-y-peliculas |
URL resultante: /camisetas/manga-corta/videojuegos.
Las opciones de variante tienen nombres exactos que el código reconoce.
| Campo | Valor |
|---|---|
| Nombre opción | Color |
| Valor | Color real específico (no genérico). Ej: "Azul marino", "Negro carbón" |
Cada producto tiene un único color. Para múltiples colores → crear productos separados agrupados con parent.
| Campo | Valor |
|---|---|
| Nombre opción | Size |
| Valor | Talla disponible |
| Campo | Valor |
|---|---|
| Nombre opción | Target gender |
| Valor | Unisex, Men, Women, Kids |
Cada producto tiene un único target gender. Múltiples targets → productos separados con parent.
Nota: la guía interna de Tailor tiene una incoherencia entre la sección 4.3 (que dice
oversize/fit/regular) y el checklist final (que diceUnisex/Men/Women/Kids). El valor correcto esUnisex/Men/Women/Kidssegún el código del storefront.
Permite agrupar productos relacionados:
Identifica el grupo:
parent-<identificador>
Formato recomendado: parent-<slug-diseño>-<categoría>.
Ejemplos:
parent-redemption-camisetaparent-redemption-sudaderaparent-cat-lovers-calcetinesImportante: incluir la categoría en el identificador evita agrupar accidentalmente productos de distintas categorías.
Metafield obligatorio: custom.parent (text), valor idéntico al tag.
Indica cuál es el producto principal del grupo (el que aparece en PLP).
| Configuración | Valor |
|---|---|
| Tag | filter:is-parent |
| Metafield | custom.is_parent = true (boolean) |
Solo UN producto por grupo debe tener este flag.
Típicamente el producto principal es el del color más popular o el más representativo.
Todos en namespace custom:
| Key | Tipo | Obligatorio | Descripción |
|---|---|---|---|
parent |
single_line_text_field |
Sí | Identificador del grupo |
is_parent |
boolean |
Sí | true solo en el producto principal del grupo |
category_collection |
collection_reference |
Sí | GID de la colección de categoría |
base_color |
single_line_text_field |
No | Color base para filtrado |
design |
single_line_text_field |
No | Slug del diseño |
designer |
single_line_text_field |
No | Username del diseñador |
fit |
single_line_text_field |
No | Tipo de corte |
Producto: Camiseta Redemption Azul Marino (Unisex)
Variantes:
| Color | Target gender | Size |
|---|---|---|
| Azul marino | Unisex | XS, S, M, L, XL, XXL |
Tags:
filter:base-color:azul
filter:category-collection:camisetas
filter:fit:regular
filter:stamping-area:front
filter:design:redemption
filter:designer:pablosantos
parent-redemption-camiseta
filter:is-parent
Metafields (custom):
parent = parent-redemption-camiseta
is_parent = true
category_collection = <GID colección Camisetas>
Colecciones: Camisetas, Manga corta, Videojuegos
Producto: Sudadera Redemption Negra (Women, oversize)
Mismo parent-redemption-camiseta... espera, NO. Este pertenece a otro grupo porque cambia la categoría:
Tag parent: parent-redemption-sudadera
Tags:
filter:base-color:negro
filter:category-collection:sudaderas
filter:fit:oversize
filter:stamping-area:back-and-front
filter:design:redemption
filter:designer:pablosantos
parent-redemption-sudadera
No tiene
filter:is-parentporque hay otro producto en el grupo marcado como principal.
Colecciones: Sudaderas, Con capucha, Videojuegos
Producto: Calcetines Cat Lovers Negro (Unisex)
Variantes:
| Color | Target gender | Size |
|---|---|---|
| Negro | Unisex | 36-40, 41-45 |
Tags:
filter:base-color:negro
filter:category-collection:calcetines
filter:design:cat-lovers
filter:designer:teresadesign
parent-cat-lovers-calcetines
filter:is-parent
Los calcetines normalmente NO tienen
fitnistamping-area.
Colecciones: Calcetines, Tobilleros, Gatos
filter:<categoría>:<valor> sin espacios.ñ, etc.parent-<id>.custom.parent coincide con el tag.Causa: varios productos del grupo tienen filter:is-parent o custom.is_parent = true.
Solución: solo uno debe tenerlo.
filter:base-color:.Solo se permiten 4 valores: front, back, back-and-front, pocket. Cualquier otro valor rompe el filtro.
Color con valor específicoSize con todas las tallasTarget gender (Unisex/Men/Women/Kids)filter:base-color:<color>filter:category-collection:<categoría>filter:fit:<valor> (si aplica)filter:stamping-area:<valor> (si aplica)filter:design:<slug>filter:designer:<username>parent-<identificador> (formato parent-<slug>-<categoría>)filter:is-parent (SOLO uno por grupo)customparent (coincide con el tag)is_parent (true solo en producto principal del grupo)category_collection (apunta a colección válida)Cuando IT desarrolle el sync, debe mapear los campos de Odoo a los tags y metafields anteriores:
| Campo en Odoo | Destino en Shopify |
|---|---|
| Color (campo principal) | Tag filter:base-color:<color> + variante Color con el nombre comercial |
| Tipo de producto | Tag filter:category-collection:<categoría> + colección |
| Corte | Tag filter:fit:<corte> |
| Zona de estampado | Tag filter:stamping-area:<valor> (mapeo limitado a 4 valores) |
| Diseño / Modelo | Tag filter:design:<slug> + metafield custom.design |
| Diseñador / Creador | Tag filter:designer:<username> + metafield custom.designer |
| Tallas | Variante Size |
| Target | Variante Target gender |
| Agrupación con otros productos del mismo diseño | Tag parent-<slug>-<categoría> + metafield custom.parent |
| Producto principal del grupo | Tag filter:is-parent + metafield custom.is_parent = true |
Atención especial: el sync NO puede generar slugs/usernames "sobre la marcha". Tienen que coincidir con los del backoffice. Esto requiere o bien: