# Cobertura de datos estructurados de una ficha de producto

> Pega el JSON-LD de tu ficha y mira qué propiedades de Product y Offer que pide Google tiene y cuáles le faltan. Herramienta gratuita.

URL: https://clione.ai/es/herramientas/cobertura-de-datos/
Lang: es

Esta herramienta mide la cobertura de [datos estructurados](/es/glosario/datos-estructurados/) de una [ficha de producto](/es/glosario/ficha-de-producto/): cuántas de las propiedades de [Product](/es/glosario/schema-product/) y de [Offer](/es/glosario/schema-offer/) que Google enumera para las [fichas de comerciante](/es/glosario/fichas-de-comerciante/) (_merchant listings_) lleva su [JSON-LD](/es/glosario/json-ld/), y cuáles le faltan. Es para quien tiene una tienda, o la lleva desde una agencia, y quiere saber en un minuto si el marcado de una ficha tiene lo mínimo y cuánto de lo recomendado. **Cuenta presencia, no corrección**: te dice si una propiedad tiene un valor, no si ese valor es verdad.

Todo ocurre en tu navegador. La herramienta no descarga tu tienda ni envía lo que pegas a ningún sitio: lee el texto que le das y nada más.

## Cómo se usa

1. **Abre la ficha publicada**, no el panel de tu plataforma, y mira su código fuente: «Ver código fuente de la página» en el menú del botón derecho, o `view-source:` delante de la URL. Selecciona todo y cópialo.
2. **Pégalo en la caja.** Vale el código fuente entero o solo el contenido de un bloque JSON-LD. Si lo que pegas empieza por `<`, la herramienta lo trata como HTML y lee todos los `<script type="application/ld+json">` que encuentre; si no, lo trata como un único bloque JSON.
3. **Pulsa «Comprobar».** Si quieres ver antes cómo es un resultado, «Cargar un ejemplo» rellena la caja con una ficha ficticia, una camisa de lino con lo obligatorio, la marca, el [GTIN](/es/glosario/gtin/) y la disponibilidad, que sale con 5 de 5 obligatorias y 3 de 21 recomendadas.
4. **Lee un bloque por producto.** Si la ficha tiene varios nodos Product, cada uno sale con su recuento y su tabla, hasta veinte.

Si el código fuente no tiene ningún bloque JSON-LD y tu ficha sí enseña datos estructurados en otras herramientas, lo más probable es que los añada JavaScript al cargar la página. Entonces copia la página renderizada (herramientas para desarrolladores, Elementos, clic derecho en el elemento `<html>`, Copiar outerHTML) y pégala aquí. Qué cambia entre una versión y otra, y por qué importa a un [rastreador](/es/glosario/rastreador/), está en [la guía de lo que ve un bot en tu tienda](/es/guias/que-ve-un-rastreador-de-ia/) y en la herramienta [Lo que ve un agente](/es/herramientas/lo-que-ve-un-agente/).

## Cómo leer el resultado

**El encabezado de cada producto** es «Producto 1», «Producto 2»… con el `name` del nodo detrás. La herramienta busca nodos Product en cualquier parte de lo que pegas: sueltos, dentro de un [`@graph`](/es/glosario/graph/) o como variantes dentro de un [ProductGroup](/es/glosario/productgroup/) con `hasVariant`, que es como Google pide agrupar las [variantes de producto](/es/glosario/variantes-de-producto/).[^google-product-variants] Si una propiedad apunta a otro nodo con un [identificador `@id`](/es/glosario/id-json-ld/), por ejemplo `"offers": {"@id": "#oferta"}`, la herramienta sigue la referencia hasta el nodo que lo define, siempre que ese nodo esté en lo que has pegado.

**La línea de recuento** dice «Obligatorias: 5 de 5. Recomendadas: 3 de 21.», o los números que toquen. Las obligatorias son cinco: tres del producto y dos de la oferta. Las recomendadas son veintiuna, y la lista completa está en la tabla de referencia, bajo la herramienta.

**La tabla** tiene una fila por propiedad, con su nivel y la columna «Está». Un «No» en una obligatoria se marca como fallo; en una recomendada, como aviso. Una propiedad cuenta como presente si tiene algún valor: un texto vacío (`""`), un `null` o una lista vacía cuentan como ausentes. Es lo que pasa cuando un tema imprime `"gtin13": ""` porque el producto no tiene el campo relleno.

**Los mensajes sin tabla** dicen por qué no hay recuento: no hay JSON-LD en lo pegado; hay JSON-LD pero ningún nodo Product, y sin él nada en la página describe el producto a una máquina; o un bloque no se puede leer, y la herramienta copia el error del lector de JSON, que suele ser una coma de más o unas comillas sin cerrar. Los demás bloques se leen igual.

### Dos avisos que van encima de la tabla

Hay dos casos en que una oferta presente no sirve para las fichas de comerciante, y la herramienta los señala con un aviso propio:

- **La oferta es un [AggregateOffer](/es/glosario/aggregateoffer/).** [Schema.org](/es/glosario/schema-org/) lo define para un producto con varias ofertas, por ejemplo el mismo par de zapatillas que venden comercios distintos.[^schemaorg-aggregateoffer] Los fragmentos de producto aceptan una Offer o un AggregateOffer, pero **las fichas de comerciante exigen una Offer**, porque quien marca la página tiene que ser quien vende el producto.[^google-merchant-listing] Un AggregateOffer suele llevar `lowPrice` y `highPrice` en lugar de `price`, así que además la fila del precio sale en «No».
- **Falta el precio o es cero.** A diferencia de los fragmentos de producto, las fichas de comerciante piden **un precio mayor que cero**.[^google-merchant-listing] La herramienta avisa si el precio no está, si es cero o si no es un número, como un precio escrito con el símbolo del euro dentro. Schema.org pide la moneda aparte, en `priceCurrency`, y el punto como separador decimal.[^schemaorg-offer] La herramienta acepta la coma para no darte un aviso de más, pero la forma correcta es `"29.90"`.

Si `offers` es una lista de ofertas, la herramienta mira solo la primera.

## Las propiedades de Product y Offer que cuenta

La lista sale de la documentación de Google para las fichas de comerciante, que separa lo obligatorio de lo recomendado.[^google-merchant-listing]

| Nodo    | Obligatorias              | Recomendadas que cuenta la herramienta                                                                                                                                                                                             |
| ------- | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Product | `name`, `image`, `offers` | `description`, `brand`, `gtin` (o `gtin8`, `gtin12`, `gtin13`, `gtin14`, `isbn`), `mpn`, `sku`, `category`, `color`, `size`, `material`, `pattern`, `audience`, `aggregateRating`, `review`, `inProductGroupWithID`, `isVariantOf` |
| Offer   | `price`, `priceCurrency`  | `availability`, `itemCondition`, `hasMerchantReturnPolicy`, `shippingDetails`, `priceValidUntil`, `url`                                                                                                                            |

Tres matices de la misma fuente. El precio y la moneda pueden ir dentro de `priceSpecification` en lugar de directamente en la oferta, y la herramienta acepta las dos formas; si están en los dos sitios, Google usa `offers.price`. La moneda va en código ISO 4217 de tres letras.[^google-merchant-listing] En los fragmentos de producto Google solo la recomienda, pero en las fichas de comerciante es obligatoria.[^google-product-snippet] Y de la marca Google pide el nombre, `brand.name`, uno solo; la herramienta da por buena la fila `brand` con cualquier valor.[^google-merchant-listing]

Hay recomendadas de Google que la herramienta no cuenta, a propósito, porque solo aplican a algunos catálogos y bajarían la nota de todas las tiendas:

- **`hasAdultConsideration`**, para productos para adultos. Ojo: **si vendes productos de ese tipo, Google dice que debes usarla** para marcarlos, aunque figure entre las recomendadas.[^google-merchant-listing] La herramienta no lo comprueba.
- **`hasCertification`**, para certificaciones como las etiquetas de eficiencia energética, que Google considera especialmente relevantes en Europa.[^google-merchant-listing]
- **`subjectOf`**, para un modelo 3D del producto.[^google-merchant-listing]

Tampoco cuenta `validFrom` ni `validThrough`, las fechas en que empieza y acaba un precio, que Google también recomienda en la oferta.[^google-merchant-listing]

## Lo recomendado no es una lista de tareas

Google pide que los datos estructurados sean un reflejo fiel del contenido de la página y que no marques lo que el lector no ve.[^google-sd-policies] Eso decide cómo se lee la columna de las recomendadas: **una recomendada se rellena si la ficha la enseña**. Si tu ficha no muestra valoraciones, el «No» de `aggregateRating` es la respuesta correcta, y la solución no es inventarse una media para el marcado. Lo mismo vale para la talla de un producto que no tiene tallas.

Lo que sí dice Google es que cuantas más recomendadas aportes, de más calidad es el resultado para el usuario.[^google-sd-policies] Así que la columna sirve para encontrar lo que tu ficha ya enseña y el marcado no dice: un GTIN que está en el panel y el tema no publica, una disponibilidad que la página muestra y la oferta no lleva, una [política de devoluciones](/es/glosario/politica-de-devoluciones/) que existe pero no está marcada.

## Lo que la herramienta no te dice

- **Si los valores son verdad.** Un precio de hace dos rebajas cuenta como presente. Comparar el marcado con lo que ve el comprador, propiedad por propiedad, es el paso que no hace ninguna herramienta, y está explicado en [la guía para auditar una ficha de producto](/es/guias/auditar-ficha-de-producto/).
- **Si el formato de cada valor es válido.** No comprueba fechas, códigos de moneda, valores de disponibilidad ni dígitos de control. Para los GTIN está el [validador de GTIN](/es/herramientas/validador-gtin/).
- **Qué vio Google.** La herramienta lee lo que pegas. Lo que Google encontró la última vez que indexó la página, incluidos los [resultados enriquecidos](/es/glosario/resultados-enriquecidos/), está en la inspección de URLs de [Search Console](/es/glosario/search-console/), que también enseña el código de la página rastreada.[^gsc-url-inspection]
- **Lo que hereda una variante.** Google permite poner en el ProductGroup las propiedades comunes a todas las variantes, como la marca o las reseñas.[^google-product-variants] La herramienta cuenta cada Product por separado, así que una variante sin `brand` propio sale en «No» aunque el grupo lo tenga.
- **El marcado que no es JSON-LD.** No lee [microdatos](/es/glosario/microdatos/) ni [RDFa](/es/glosario/rdfa/).
- **Si Google lo va a enseñar.** Tener lo obligatorio hace que una ficha pueda optar a un resultado enriquecido, no que lo tenga: Google no lo garantiza aunque el marcado sea correcto.[^google-sd-policies] La diferencia entre que un marcado sea válido y que esté publicado está en [validar frente a verificar](/es/comparativas/validar-vs-verificar/).

Si la cobertura de una ficha bajó después de cambiar de tema o de instalar una app, el [comparador de JSON-LD](/es/herramientas/comparador-json-ld/) te enseña qué propiedad desapareció.

## Lo que hemos probado

Probado en: tres fichas, plataforma y tema de cada una, fecha.

| Ficha | Plataforma y tema | Obligatorias | Recomendadas | Avisos | [Prueba de resultados enriquecidos](/es/glosario/prueba-de-resultados-enriquecidos/) |
| ----- | ----------------- | ------------ | ------------ | ------ | ------------------------------------------------------------------------------------ |
| 1     |                   |              |              |        |                                                                                      |
| 2     |                   |              |              |        |                                                                                      |
| 3     |                   |              |              |        |                                                                                      |
