¿Qué es la sobrescritura de campos en una tienda online?
La sobrescritura de campos es lo que ocurre cuando un sistema escribe un valor en un campo de producto, como el título, la descripción o un metafield, encima del que había guardado otro sistema o una persona, y el valor anterior se pierde sin aviso. Aparece cuando la plataforma de la tienda, un PIM, un ERP o varias aplicaciones escriben el mismo campo.
Lo esencial
- Hay sobrescritura cuando dos sistemas escriben el mismo campo y el último en escribir borra lo que puso el otro.
- No es el fallo de una herramienta concreta: es lo que pasa por defecto cuando una integración escribe sin comprobar antes qué hay guardado.
- Algunas API permiten escribir solo si el valor no ha cambiado desde que se leyó, como el compareDigest de los metafields de Shopify, pero quien integra tiene que usarlo.
- Una fecha de modificación no dice qué campo cambió: para saber si te han pisado un dato, hay que comparar el valor.
- La prevención es organizativa: un mapa que diga qué sistema manda sobre cada campo.
Aquí no se habla de sobrescribir un archivo ni de que una regla de CSS del tema anule a otra. Se habla de datos: un campo de producto que alguien escribió y que otro sistema volvió a escribir encima, sin que nadie lo decidiera así. El síntoma es conocido en cualquier tienda con más de una herramienta conectada: corriges una descripción por la tarde y a la mañana siguiente vuelve a estar la de antes, o el título que preparó tu agencia desaparece después de instalar una aplicación nueva. Para una tienda importa porque el trabajo perdido no avisa: la ficha sigue publicada, con buen aspecto, y dice otra cosa.
Cómo funciona
Gana el último que escribe. Una integración que envía el valor completo de un campo y lo guarda tal cual, sin mirar qué había, no sabe si otro lo cambió antes. Si dos sistemas escriben así el mismo campo, el resultado no depende de cuál tiene razón, sino de cuál sincronizó después. El problema es tan antiguo que el estándar de HTTP le pone nombre: la cabecera If-Match se usa sobre todo en las peticiones que cambian datos para evitar sobrescrituras accidentales cuando varios agentes actúan a la vez sobre el mismo recurso, es decir, para evitar el problema de la «actualización perdida» (lost update).[1]IETF. RFC 9110, HTTP Semantics, 13.1.1 If-Match El servidor solo aplica el cambio si el recurso sigue siendo el que el cliente leyó; si alguien lo cambió entre medias, lo rechaza.[1]IETF. RFC 9110, HTTP Semantics, 13.1.1 If-Match
Las plataformas lo resuelven a medias, y de forma opcional. En Shopify, los metafields se escriben con la mutación metafieldsSet, que según su documentación fija el valor tanto si el metafield existía antes como si no. Desde la versión 2024-07 de la API admite una comprobación previa: si quien escribe envía el campo compareDigest, la mutación solo guarda el valor si el que hay guardado coincide con el que se leyó; si no coincide, devuelve un error en lugar de pisarlo.[2]Shopify.dev. metafieldsSet mutation (GraphQL Admin API) Es la protección correcta, pero es opcional: la aplicación que no envía ese campo escribe encima sin preguntar.
A veces el último gana por diseño. No toda sobrescritura es un error. En Google Merchant Center, una regla de atributos llamada «Take latest» toma, solo para el precio y la disponibilidad, el valor actualizado más recientemente entre dos o más fuentes de datos y lo usa para rellenar el atributo.[3]Ayuda de Google Merchant Center. Set up your attribute rules Es una sobrescritura declarada: alguien decidió que en esos dos campos manda el dato más fresco, venga de donde venga. Lo que convierte una sobrescritura en un problema es que nadie lo haya decidido.
Dónde suele pasar. Hay tres situaciones típicas en una tienda:
- Un sistema de origen que exporta todo. Un PIM o un ERP que envía el producto completo en cada sincronización devuelve a su valor cualquier campo que se haya editado en la tienda.
- Dos aplicaciones sobre el mismo campo. Dos herramientas de SEO, o una de SEO y una de traducción, que escriben el mismo título o la misma descripción se pisan en el orden en que se ejecutan.
- La plataforma o el tema. Una importación masiva por CSV, una plantilla que rellena un campo vacío o un cambio de tema que reescribe valores por defecto escriben sobre lo publicado.
La fecha no basta para detectarla. La forma rápida de sospechar es comparar la fecha de modificación del producto con la de tu última escritura. Sirve como alarma, pero no como prueba: en Shopify, la fecha updatedAt de un producto es la de su última modificación y puede cambiar por motivos distintos; por ejemplo, un pedido de un producto con seguimiento de inventario cuenta como una actualización.[4]Shopify.dev. Product object (GraphQL Admin API) Para saber si te han pisado un campo, hay que comparar el valor del campo.
En una tienda
Una noche cualquiera en una tienda de material de montaña con Shopify, un PIM que exporta cada madrugada y una aplicación de SEO. Es un ejemplo ficticio: la tienda, las horas y los textos están inventados para enseñar cómo se encadena una sobrescritura.
| Hora (ejemplo ficticio) | Quién escribe | Campo | Valor guardado después |
|---|---|---|---|
| Lunes, 03:00 | El PIM, en su exportación diaria | Descripción | Texto del fabricante |
| Lunes, 17:30 | El equipo de contenido, a mano en Shopify | Descripción | Texto propio, con tallas y materiales |
| Lunes, 17:45 | La aplicación de SEO | Meta title | Título nuevo, con el modelo |
| Martes, 03:00 | El PIM, en su exportación diaria | Descripción | Otra vez el texto del fabricante |
| Martes, 03:00 | Nadie | Meta title | Se conserva, porque el PIM no exporta ese campo |
La cuarta fila es la sobrescritura: nadie decidió volver al texto del fabricante, pero el PIM manda sobre ese campo y nadie se lo dijo al equipo de contenido. La quinta es la que se salva, y solo porque ese campo no está en la exportación. El arreglo no es técnico, sino de reparto: o la descripción se edita en el PIM, o el PIM deja de exportarla. Clione, cuando la plataforma o un PIM sobrescriben un campo que publicó, lo marca en la siguiente sincronización con la fecha y los campos exactos, y volver a publicarlo es una decisión tuya.
Lo que se suele confundir
Que la fecha de modificación de un producto dice qué cambió. Una fecha nueva no significa que alguien haya tocado tu campo: en Shopify la fecha de última modificación cambia también, por ejemplo, cuando un pedido ajusta el inventario.[4]Shopify.dev. Product object (GraphQL Admin API) La prueba es el valor: el que publicaste, comparado con el que hay ahora.
Cómo comprobarlo
- Haz la lista de todo lo que escribe en tu catálogo: la plataforma, el PIM, el ERP, cada aplicación con permiso de escritura, las importaciones por CSV y las personas del equipo.
- Escribe el mapa de campos: para cada campo, un solo sistema que manda y los que solo reciben. Un campo con dos sistemas que escriben es una sobrescritura esperando a ocurrir.
- Prueba un campo. Cambia a mano un valor en un producto de prueba, espera a la siguiente sincronización de cada sistema y mira si sigue ahí.
- Compara valores, no fechas. Guarda lo que publicaste y compáralo con lo que hay en la tienda; la fecha de modificación solo dice que algo cambió.[4]Shopify.dev. Product object (GraphQL Admin API)
- Pregunta a cada integración si escribe con comprobación previa, con
If-Matchen una API HTTP o concompareDigesten los metafields de Shopify, o si escribe encima sin mirar.[1]IETF. RFC 9110, HTTP Semantics, 13.1.1 If-Match[2]Shopify.dev. metafieldsSet mutation (GraphQL Admin API)
Concepto cercano: deriva de datos
La deriva de datos es la diferencia que se acumula con el tiempo entre dos sitios que deberían decir lo mismo, como el feed de productos y la ficha publicada. La sobrescritura es un suceso concreto: una escritura que borra otra. A menudo una lleva a la otra, porque cada sobrescritura que nadie detecta deja dos versiones de un dato, la que se quería publicar y la que se publicó. La deriva se descubre comparando; la sobrescritura se evita decidiendo quién escribe cada campo, y se detecta comparando el valor justo después de cada sincronización.
Para seguir, la ruta de lectura de publicación por plataforma ordena el resto de términos, y la entrada sobre el PIM explica cómo se reparte un catálogo entre sistemas.
Sinónimos
- English
- field overwrite, data overwrite, lost update
- Español
- sobrescritura de datos, pisar un campo
Fuentes
- [1] IETF. RFC 9110, HTTP Semantics, 13.1.1 If-Match. Consultado el . ↑ ↑ ↑
- [2] Shopify.dev. metafieldsSet mutation (GraphQL Admin API). Consultado el . ↑ ↑
- [3] Ayuda de Google Merchant Center. Set up your attribute rules. Consultado el . ↑
- [4] Shopify.dev. Product object (GraphQL Admin API). Consultado el . ↑ ↑ ↑
Historial de cambios
- Primera versión.
Esta definición se publica bajo licencia CC BY 4.0. Puedes reutilizar esta definición citando a Clione con un enlace a esta página.
Términos relacionados
PIM
Qué es un PIM (Product Information Management), cómo organiza familias, canales y completitud, y cómo decidir qué sistema manda sobre cada campo.
Metafields
Qué son los metafields de Shopify, de qué partes constan, cómo llegan del panel al HTML de la ficha y cómo comprobar que tu tema los publica.
Custom fields
Qué son los custom fields de BigCommerce, sus límites (200 por producto), cómo los pinta un tema Stencil y en qué se diferencian de los metafields.
Metaobjeto de Shopify
Qué es un metaobjeto de Shopify, en qué se diferencia de un metafield, cómo se enlaza a tus productos y cómo comprobar que el tema lo publica en la ficha.
API de catálogo
Qué es la API de catálogo de una tienda online, cómo separa leer de escribir en Shopify y BigCommerce, y qué permisos mínimos dar a cada app.
Webhook
Qué es un webhook, cómo avisan Shopify y BigCommerce de un cambio en el catálogo y por qué un aviso no sustituye a una sincronización periódica.
Haz que los bots entiendan tu catálogo
Clione completa cada ficha de producto con lo que los bots leen mejor: el grafo JSON-LD con sus datos estructurados, la meta description y las preguntas frecuentes. Tú revisas y pulsas Push; después comprobamos tu tienda en vivo para que todo siga publicado.