Merchlint
Esta página existe en
Próximamente, en este orden
  • FrançaisFR
  • ItalianoIT
  • PortuguêsPT
  • NederlandsNL
  • SvenskaSV
  • TürkçeTR

En español solo hay unas pocas páginas; las demás están en inglés. Ningún hablante nativo ha revisado todavía los textos en español. ¿Has encontrado un error? Escríbenos.

Instalar gratis Instalar
← Todas las comprobaciones (en inglés)

GTIN duplicado: dos productos con el mismo código

Un GTIN identifica un solo artículo en todo el mundo. Si dos productos lo comparten, la plataforma de compras rechaza la oferta o los une en un solo anuncio.

Grupo
Identificadores de producto
Fiabilidad
F: dato de la base de datos
Versión
Gratis
Actualizado
Código
G3b

El síntoma

Un producto que no has tocado desaparece de una plataforma de compras, o dos artículos distintos de tu tienda acaban en un solo anuncio con la foto equivocada. En la administración todo parece correcto: los dos productos existen, los dos tienen identificador y WooCommerce no puso ninguna objeción al guardarlos, porque no se guardaron desde la pantalla del producto.

Lo que cuesta

Un identificador sirve para designar un único artículo comercial en cualquier parte del mundo. Cuando dos de tus productos llevan el mismo:

  • La oferta se rechaza. Merchant Center trata un identificador duplicado como un error en los datos y retira una de las ofertas o las dos.
  • Dos productos se convierten en un solo anuncio. Un comparador de precios los fusiona, y el cliente que hace clic en tu artículo más barato llega a la página del otro.
  • El inventario y las devoluciones van a la fila equivocada. Cualquier sistema que asocie pedidos con productos por su identificador se queda con el primero que encuentra.

Si te ha traído aquí un feed de compras, este es uno de varios requisitos por los que se retiran productos sin avisar. Por qué se rechazan productos en Google Merchant Center repasa los demás del mismo modo, con la consulta para cada uno.

Cómo comprobarlo tú mismo

Desde WP-CLI, sin ningún plugin:

wp db query "SELECT TRIM(meta_value) AS gtin, COUNT(*) AS n \
  FROM wp_postmeta pm JOIN wp_posts p ON p.ID = pm.post_id \
  WHERE pm.meta_key = '_global_unique_id' AND TRIM(pm.meta_value) <> '' \
  AND p.post_type IN ('product','product_variation') \
  AND p.post_status IN ('publish','draft','private') \
  GROUP BY TRIM(meta_value) HAVING n > 1"

Cambia wp_ por el prefijo de tus tablas. Los valores vacíos quedan fuera a propósito: veinte productos sin identificador no son veinte duplicados entre sí.

Desde una exportación, sin instalar nada. Abre la exportación de productos en CSV con el validador de códigos EAN: lista los códigos que se repiten, con el número de fila y el nombre del producto, incluidos los que están escritos de otra forma (con un cero inicial o con un carácter invisible). El archivo no sale de tu navegador.

Cómo corregirlo

  1. Averigua a qué producto pertenece realmente el número. Lo decide el envase, no el historial de pedidos.
  2. Vacía el campo del otro producto y escribe su propio número. Mejor dejarlo vacío que inventárselo.
  3. Si los dos son variaciones del mismo producto, comprueba si una es un resto de un valor de atributo que borraste; esas variaciones normalmente conviene eliminarlas en lugar de renumerarlas.
  4. Corrige la importación que lo creó. Un identificador duplicado casi siempre sale de una columna de hoja de cálculo copiada hacia abajo una fila de más, y vuelve a aparecer con la siguiente importación.

Cuándo es un falso positivo

  • Traducciones de un mismo producto. Con WPML o Polylang, un mismo artículo existe como varios productos que comparten identificador legítimamente. Merchlint cuenta un grupo de traducciones como un solo producto; si tu solución multilingüe es otra, oculta el hallazgo.
  • Packs con precio por unidad. Algunas tiendas venden el mismo artículo en packs de distinto número de unidades. En rigor, cada formato de pack necesita su propio GTIN, pero mientras no los tengas es una situación conocida, no un error.
  • Un borrador que sustituirá a un producto y que preparas antes de retirar el original.

Cómo lo encuentra Merchlint

Merchlint lee _global_unique_id de los productos publicados y de sus variaciones, agrupa por valor, ignora los vacíos e informa de cada producto que comparte su número con otro producto, con una variación de otro producto o con su propia variación. El conjunto se calcula una sola vez para toda la tienda, no por lotes: un duplicado cuyo gemelo está en otra parte del catálogo sigue siendo un duplicado. Las variaciones que están en la papelera nunca cuentan.

Los números se comparan como los lee una persona. Desde la versión 0.3.5, un carácter invisible o un espacio de no separación (habituales cuando se pega un número desde una hoja de cálculo) no convierten el número en otro distinto, y se ignoran los espacios al principio y al final. Antes de la 0.3.5 el resultado dependía de la base de datos de la tienda: en MySQL 8 un duplicado así pasaba desapercibido, o solo aparecía uno de los dos productos.

Un caso queda fuera: dos variaciones de un mismo producto con el mismo número cuando el producto en sí no tiene ninguno. Un hallazgo pertenece a un producto, y ahí no hay a qué asociarlo.

Por qué un producto y su propia variación llevan tan a menudo el mismo número. Los importadores crean un producto variable clonando su primera variación o copiando en ella los campos del producto superior, y el número se copia junto con lo demás. WooCommerce rechazaría ese par si guardaras tú el producto (desde la 9.2 el campo tiene que ser único entre productos y variaciones), pero una importación lo escribe directamente en la base de datos, así que nada lo señala. El problema aparece cuando tu feed exporta el producto superior junto con sus variaciones: entonces salen dos artículos con un mismo número. Lo seguro es vaciar el número del producto superior, porque en un producto variable lo que cuenta son sus variaciones.

Las traducciones se resuelven antes de agrupar: dos versiones de un mismo producto en distintos idiomas cuentan como una, así que una tienda bilingüe no recibe dos hallazgos por cada par traducido.

A diferencia de la comprobación de identificadores que faltan, esta no tiene umbral para todo el catálogo. Que falte un identificador puede ser una decisión; un duplicado nunca lo es: alguien tuvo que escribir el mismo número dos veces.

Fiabilidad: F, dato de la base de datos. Sin interpretación, sin umbral.

Esta comprobación está en la versión gratuita, en todos los productos, sin tope. Si solo necesitas los SKU y los GTIN, el mismo motor existe también como plugin gratuito aparte, solo con estas comprobaciones: buscador de SKU y GTIN duplicados.

Ejecuta esta comprobación en tu tienda

¿No coincide con lo que ves en tu tienda? Escríbenos (leemos todos los mensajes): contact@merchlint.com