Módulo Magento 2 — SEO Rich Data (JSON-LD)
- SKU
- M2-SEO-RICH-DATA
Descripción / Módulo Magento 2 — SEO Rich Data (JSON-LD)
¿Qué es SEO Rich Data?
El módulo SEO Rich Data para Magento 2 añade a tu tienda datos estructurados completos en formato JSON-LD, compatibles con el estándar schema.org y admitidos por Google. Gracias a ello, tus productos, categorías, pestañas y contenidos pueden mostrarse en el buscador como resultados enriquecidos (rich snippets), lo que influye directamente en la visibilidad, el CTR y el SEO.
Características principales del módulo:
Tipos de datos compatibles:
Product
Descripción detallada del producto: nombre, descripción, precio, moneda, disponibilidad en stock, fabricante, marca, SKU, MPN.
Offer
Información sobre la disponibilidad y las condiciones de la oferta (novedad, disponibilidad, fecha de validez del precio).
Brand / Manufacturer
Marcado automático de la marca y el fabricante a partir de los datos del producto.
Organization
Datos de tu empresa (nombre del vendedor, contacto, sitio web).
BreadcrumbList
Migas de pan de navegación que ayudan a Google a comprender mejor la estructura de la página.
SearchAction (WebSite)
Indicación para Google sobre cómo funciona el buscador interno de la tienda.
ItemList (para páginas de categoría)
Lista de productos de una categoría (nombre, imagen, enlace): acelera la indexación y aporta contexto a Google.
Opiniones (Review + AggregateRating)
Generación automática de datos estructurados a partir de las opiniones de los clientes: valoraciones (rating), número de opiniones, contenido de la reseña y datos del autor. El módulo crea tanto entradas individuales Review como un resumen agregado AggregateRating, lo que permite mostrar estrellas en los resultados de Google (rich snippets) y aumenta significativamente el CTR.
VideoObject (NOVEDAD)
Detecta vídeos en la galería del producto y los añade como datos estructurados (miniatura, enlace, fecha).
FAQPage (VINCULACIÓN CON EL MÓDULO «Pregunta por el producto»)
Si tienes instalado nuestro módulo Pregunta por el producto, todas las preguntas con respuestas de un producto determinado se convierten automáticamente en datos FAQPage. Esto permite a Google mostrar una sección de preguntas y respuestas directamente en los resultados de búsqueda.
Integración con el módulo Pregunta por el producto
Si utilizas nuestro segundo módulo, «Pregunta por el producto», los datos estructurados FAQ se generan dinámicamente a partir de preguntas y respuestas reales proporcionadas por el vendedor. Esto aumenta la autenticidad de los datos y su valor SEO.
Además, las preguntas y respuestas pueden mostrarse como una pestaña en la ficha del producto, con la posibilidad de activarla y asignarle un título desde la configuración.
¿Por qué utilizar Rich Data en Magento?
Mayor visibilidad en los resultados de Google – tus productos aparecerán con precio, disponibilidad, opiniones y otra información.
Mejor CTR – los usuarios hacen clic con más frecuencia en los resultados enriquecidos.
Mayor indexabilidad – Google comprende mejor la estructura del sitio e indexa más rápido las novedades.
Calidad de contenido imbatible – muestras a Google datos que antes estaban ocultos únicamente en el HTML.
Configuración
Posibilidad de activar/desactivar componentes concretos (por ejemplo, FAQ, VideoObject).
Título personalizado para la pestaña de preguntas (para el módulo «Pregunta por el producto»).
Mecanismo de detección y generación automática de datos JSON-LD.
Requisitos
Magento 2.4.x (probado en 2.4.7)
PHP 8.1+
Recomendado: módulo Pregunta por el producto para aprovechar todas las posibilidades (FAQ)
Qué recibes:
Módulo listo para instalar mediante Composer
Documentación completa
Código conforme a las directrices de Magento
Soporte técnico durante la implementación
¿Quieres destacar tu tienda en Google? Este módulo es tu SEO en versión PRO. Haz tu pedido ahora y aumenta tu visibilidad.
More Information
Change Log
Versión: 1.0.17
19.05.2026
Añadido
- Añadido soporte para el campo
shippingDetailsen la estructuraofferspara los datos de producto JSON-LD. - Añadido soporte para el campo
hasMerchantReturnPolicyen la estructuraofferspara los datos de producto JSON-LD. - Añadida configuración de los datos de envío:
- activar/desactivar la generación de
shippingDetails, - país de envío,
- coste de envío,
- tiempo mínimo y máximo de preparación del pedido,
- tiempo mínimo y máximo de transporte.
- activar/desactivar la generación de
- Añadida configuración de la política de devoluciones:
- activar/desactivar la generación de
hasMerchantReturnPolicy, - país de aplicación de la política,
- tipo de política de devolución,
- número de días para la devolución,
- método de devolución,
- gastos de devolución,
- importe opcional del coste de envío de la devolución.
- activar/desactivar la generación de
- Añadida selección del atributo EAN / GTIN en la configuración del producto.
- Añadido mapeo automático de valores EAN / GTIN a las propiedades
gtin8,gtin12,gtin13,gtin14ogtin, en función de la longitud del número. - Añadidos source models para las opciones de configuración de la política de devoluciones:
ReturnPolicyCategory,ReturnMethod,ReturnFees.
Modificado
- Mejorada la obtención de valores de los atributos
brandymanufacturerpara JSON-LD. - Añadido fallback de obtención de valores de atributos desde raw EAV value cuando
getAttributeText()ogetData()no devuelve ningún valor. - Para productos configurables y agrupados, añadido fallback de obtención de valores brand / GTIN desde productos simples.
- Sustituido el uso del método obsoleto
Block\Product::getResultArray()por la lógica comúnModel\JsonLd\ProductInfo, para que la generación de datos de producto sea coherente en la página de producto y en los listados de categorías. - Ampliada la clave de caché de ofertas con la configuración de envío y política de devoluciones para que los cambios de configuración afecten al JSON-LD generado.
Corregido
- Corregido el caso en el que el atributo configurado
Brandno aparecía en el JSON-LD del producto. - Completados los datos faltantes requeridos por Google Search Console para merchant listing:
shippingDetails,hasMerchantReturnPolicy,- identificador global del producto mediante EAN / GTIN.
Instrucciones de instalación del módulo
SEO Rich Data - instalación y configuración
Objetivo del módulo
El módulo Kowal_SeoRichData añade a Magento 2 datos estructurados schema.org en formato JSON-LD. Los datos generados pueden incluir productos, ofertas, precios, disponibilidad, valoraciones, reseñas, breadcrumbs, datos de la organización, nombre del sitio, search box, perfiles sociales, FAQ y vídeo.
La configuración del módulo se encuentra en el panel de administración de Magento:
Stores > Configuration > Kowal > SEO Rich Data
Requisitos
- Magento 2.
- Acceso a la CLI de Magento.
- Acceso al Composer repository con el paquete
kowal/module-seo-rich-data. - Paquete base requerido:
kowal/base. - Permisos para ejecutar comandos
bin/magento.
Instalación mediante Composer
- Añade el repositorio del paquete:
Recibirás por correo electrónico los datos de acceso al repositorio Composer, es decir, la dirección de correo electrónico del cliente y el token de licencia, después de la compra. También están disponibles en el panel de cliente tras iniciar sesión en kowal.store. Sustituye TWOJ_EMAIL_KLIENTA por la dirección de correo electrónico de tu cuenta y TWOJ_TOKEN por el token recibido. Ejecuta los comandos en el directorio raíz de Magento.
composer config repositories.kowal composer https://repo.kowal.store- Configura los datos de acceso al repositorio Composer de Kowal:
composer config http-basic.repo.kowal.store 'TWOJ_EMAIL_KLIENTA' 'TWOJ_TOKEN'- Instala el módulo:
composer require kowal/module-seo-rich-data- Activa el módulo:
php bin/magento module:enable Kowal_SeoRichData- Ejecuta la actualización de Magento:
php bin/magento setup:upgrade- En el entorno de producción, ejecuta la compilación DI:
php bin/magento setup:di:compile- En el entorno de producción, si el proyecto lo requiere, genera los archivos estáticos:
php bin/magento setup:static-content:deploy- Limpia la caché:
php bin/magento cache:flushInstalación manual
- Copia el módulo en el directorio:
app/code/Kowal/SeoRichData- Activa el módulo:
php bin/magento module:enable Kowal_SeoRichData- Ejecuta la actualización de Magento:
php bin/magento setup:upgrade- Limpia la caché:
php bin/magento cache:flushAcciones posteriores a la instalación
Tras la instalación, el módulo añade el atributo de producto:
| Atributo | Significado |
|---|---|
offer_item_condition | Estado del producto utilizado para generar itemCondition en offers. |
El atributo admite los valores:
| Valor en Magento | Valor JSON-LD |
|---|---|
DamagedCondition | https://schema.org/DamagedCondition |
NewCondition | https://schema.org/NewCondition |
RefurbishedCondition | https://schema.org/RefurbishedCondition |
UsedCondition | https://schema.org/UsedCondition |
Si el producto no tiene establecido el valor del atributo, el módulo lo trata como NewCondition.
Ámbito de configuración
Todos los campos de configuración están disponibles para los ámbitos Default, Website y Store View, de acuerdo con la configuración de Magento.
Los campos de tipo Enabled, Show ... y similares utilizan los valores estándar de Magento:
| Valor | Significado |
|---|---|
Yes | La función está activada y puede generar datos JSON-LD. |
No | La función está desactivada. |
Breadcrumbs
La sección es responsable de los datos estructurados de la ruta de navegación.
| Campo | Significado | Valores |
|---|---|---|
Enabled | Activa la generación de datos BreadcrumbList. | Yes, No |
Fixed Category Path | En la página de producto utiliza la ruta de categoría más específica cuando Magento no proporciona el contexto completo de la categoría. | Yes, No |
Type | Determina la longitud de la ruta breadcrumbs generada para el buscador. | Default (Long), Short |
Valores del campo Type:
| Valor | Significado |
|---|---|
Default (Long) | Ruta completa, p. ej. Store > Category > Subcategory > Product. |
Short | Ruta abreviada, p. ej. Store > Subcategory > Product. |
Incluye el nombre de tu sitio en los resultados de búsqueda
La sección es responsable de los datos de tipo WebSite, que pueden ayudar a Google a reconocer el nombre del sitio web.
| Campo | Significado | Valores |
|---|---|---|
Enabled | Activa la generación de datos WebSite. | Yes, No |
Website Name | Nombre del sitio/tienda transmitido en los datos estructurados. | Texto, p. ej. el nombre de la tienda. |
Organization
La sección es responsable de los datos de tipo Organization.
| Campo | Significado | Valores |
|---|---|---|
Enabled | Activa la generación de datos de la organización. | Yes, No |
Organization Name | Nombre de la empresa o tienda. | Texto; campo obligatorio después de activar la sección. |
Logo Url | URL completa del logotipo de la organización. | URL del archivo gráfico. |
Description | Descripción de la organización. | Texto. |
Description Length | Número máximo de caracteres de la descripción. | Número; vacío significa que no se acorta. |
Country | País de la organización. | Código de país de la lista de Magento. |
Region/State | Región o provincia. | Texto. |
ZIP/Postal Code | Código postal. | Texto. |
City | Ciudad. | Texto. |
Street Address | Calle y número. | Texto. |
Sales | Teléfono del departamento de ventas. | Número en formato internacional, p. ej. +48.... |
Technical Support | Teléfono de soporte técnico. | Número en formato internacional. |
Customer Service | Teléfono de atención al cliente. | Número en formato internacional. |
El país de esta sección puede utilizarse como fallback para el país de envío y el país de la política de devoluciones, si los campos correspondientes en la sección de producto permanecen vacíos.
Social Profiles
La sección añade los perfiles sociales de la organización. Para que los datos tengan sentido, la sección Organization debe estar activada.
| Campo | Significado | Valores |
|---|---|---|
Enabled | Activa la generación de enlaces a perfiles sociales. | Yes, No |
Facebook | URL del perfil de Facebook. | URL completa. |
Twitter | URL del perfil de Twitter / X. | URL completa. |
Google+ | URL del perfil de Google+. | URL completa; campo de configuración histórico. |
Instagram | URL del perfil de Instagram. | URL completa. |
YouTube | URL del canal de YouTube. | URL completa. |
LinkedIn | URL del perfil de LinkedIn. | URL completa. |
Myspace | URL del perfil de Myspace. | URL completa; campo de configuración histórico. |
Pinterest | URL del perfil de Pinterest. | URL completa. |
SoundCloud | URL del perfil de SoundCloud. | URL completa. |
Tumblr | URL del perfil de Tumblr. | URL completa. |
Los campos vacíos se omiten.
Search Box
La sección es responsable de los datos SearchAction, que pueden permitir mostrar el campo de búsqueda de la tienda en los resultados de Google.
| Campo | Significado | Valores |
|---|---|---|
Enabled | Activa la generación de datos del buscador del sitio web. | Yes, No |
Category Rich Data
La sección es responsable de generar datos de productos en las páginas de categoría.
| Campo | Significado | Valores |
|---|---|---|
Show Products Data | Añade datos estructurados para los productos visibles en la página de categoría. | Yes, No |
Activar esta opción puede empeorar el rendimiento de las páginas de categoría, porque el módulo debe recopilar datos de muchos productos.
Product Rich Data
La sección es responsable de los datos principales del producto de tipo Product y de los datos offers.
Campos básicos del producto
| Campo | Significado | Valores |
|---|---|---|
Enabled | Activa la generación de JSON-LD del producto en la página de producto. | Yes, No |
Show Availability | Añade availability en offers. | Yes, No |
priceValidUntil Default Value | Fecha predeterminada de validez del precio. | Fecha. |
Use “Special Price To” Value for priceValidUntil Snippet | Si el producto tiene un precio especial activo y una fecha Special Price To, esta fecha sustituye el valor predeterminado. | Yes, No |
Show Condition | Añade itemCondition en offers. | Yes, No |
Description | Determina la fuente de la descripción del producto en JSON-LD. | None, Product Short Description, Product Full Description, Page Meta Description |
Valores del campo Description:
| Valor | Significado |
|---|---|
None | No obtiene la descripción de la configuración; el código puede utilizar el nombre del producto como fallback si la descripción está vacía. |
Product Short Description | Utiliza la descripción corta del producto. |
Product Full Description | Utiliza la descripción completa del producto. |
Page Meta Description | Utiliza la meta description de la página. |
Productos configurables y agrupados
| Campo | Significado | Valores |
|---|---|---|
Show Configurable Products as | Determina cómo se generan las ofertas para productos configurables. | Main Offer, List of Associated Products Offers, Aggregate Offer |
Show Grouped Products as | Determina cómo se generan las ofertas para productos agrupados. | Main Offer, List of Associated Products Offers, Aggregate Offer |
Valores:
| Valor | Significado |
|---|---|
Main Offer | Genera una oferta para el producto principal. |
List of Associated Products Offers | Genera una oferta independiente para cada producto simple o asociado. |
Aggregate Offer | Genera AggregateOffer con el precio más bajo, el precio más alto y el número de ofertas. |
Valoraciones y reseñas
| Campo | Significado | Valores |
|---|---|---|
Show Rating | Añade aggregateRating y review a los datos del producto. | Yes, No |
Use Yotpo Reviews instead of Magento Reviews | Obtiene las reseñas de Yotpo en lugar de Magento Reviews. | Yes, No |
Rating Format | Determina la escala de valoración. | Percentage Scale, Numeric Scale |
Number of Reviews | Límite del número de reseñas más recientes añadidas a JSON-LD. | Número; vacío significa todas las reseñas. |
Valores del campo Rating Format:
| Valor | Significado |
|---|---|
Percentage Scale | Las valoraciones se interpretan en escala porcentual. |
Numeric Scale | Las valoraciones se interpretan en escala numérica. |
La integración con Yotpo requiere la disponibilidad de un módulo compatible con Yotpo. Si el módulo no está instalado, la configuración de Yotpo no debe activarse.
Brand, manufacturer e identificadores de producto
| Campo | Significado | Valores |
|---|---|---|
Brand | Atributo de producto utilizado para generar la propiedad brand. | Cualquier atributo de producto de la lista. |
EAN / GTIN Attribute | Atributo de producto utilizado como identificador global del producto. | Cualquier atributo de producto de la lista. |
Manufacturer | Atributo de producto utilizado para generar la propiedad manufacturer. | Cualquier atributo de producto de la lista. |
El campo EAN / GTIN Attribute genera la propiedad en función del número de dígitos:
| Número de dígitos | Propiedad JSON-LD |
|---|---|
| 8 | gtin8 |
| 12 | gtin12 |
| 13 | gtin13 |
| 14 | gtin14 |
| Otro número positivo de dígitos | gtin |
El módulo elimina los caracteres que no son dígitos del valor EAN / GTIN antes de generar JSON-LD.
Shipping details
La sección de envío es responsable de generar shippingDetails en offers. Los datos solo se añaden cuando la sección está activada y cuenta con todos los valores requeridos.
| Campo | Significado | Valores |
|---|---|---|
Show Shipping Details | Activa la generación de shippingDetails. | Yes, No |
Shipping Country | País de entrega. | Código de país de la lista de Magento; si está vacío, se utiliza el país de la sección Organization. |
Shipping Price | Coste de envío. | Número igual o superior a 0; 0 significa envío gratuito. |
Handling Time Min Days | Tiempo mínimo de preparación del pedido. | Número entero, días. |
Handling Time Max Days | Tiempo máximo de preparación del pedido. | Número entero, días. |
Transit Time Min Days | Tiempo mínimo de transporte. | Número entero, días. |
Transit Time Max Days | Tiempo máximo de transporte. | Número entero, días. |
La moneda del coste de envío se obtiene de la moneda de la oferta del producto.
Ejemplo del significado de los valores:
| Campo | Ejemplo | Significado |
|---|---|---|
Shipping Price | 0 | Envío gratuito. |
Handling Time Min Days | 0 | El pedido puede gestionarse el mismo día. |
Handling Time Max Days | 1 | La preparación del pedido dura como máximo 1 día. |
Transit Time Min Days | 1 | La entrega dura al menos 1 día. |
Transit Time Max Days | 5 | La entrega dura como máximo 5 días. |
Merchant return policy
La sección de política de devoluciones es responsable de generar hasMerchantReturnPolicy en offers. Los datos solo se añaden cuando la sección está activada y cuenta con los valores requeridos.
| Campo | Significado | Valores |
|---|---|---|
Show Merchant Return Policy | Activa la generación de hasMerchantReturnPolicy. | Yes, No |
Return Policy Country | País de aplicación de la política de devoluciones. | Código de país de la lista de Magento; si está vacío, se utiliza el país de la sección Organization. |
Return Policy Category | Tipo de política de devolución. | Finite Return Window, Returns Not Permitted, Unlimited Return Window |
Merchant Return Days | Número de días para realizar la devolución. | Número entero; requerido para Finite Return Window. |
Return Method | Método de devolución admitido. | -- Empty --, Return By Mail, Return In Store, Return At Kiosk |
Return Fees | Información sobre los gastos de devolución. | -- Empty --, Free Return, Customer Responsibility, Return Shipping Fees |
Return Shipping Fee | Importe del coste de envío de la devolución. | Número superior a 0; requerido solo para Return Shipping Fees. |
Valores del campo Return Policy Category:
| Valor | Valor JSON-LD | Significado |
|---|---|---|
Finite Return Window | https://schema.org/MerchantReturnFiniteReturnWindow | Devolución posible durante un número determinado de días. Requiere Merchant Return Days. |
Returns Not Permitted | https://schema.org/MerchantReturnNotPermitted | Las devoluciones no están permitidas. |
Unlimited Return Window | https://schema.org/MerchantReturnUnlimitedWindow | Devolución sin un límite determinado de días. |
Valores del campo Return Method:
| Valor | Valor JSON-LD | Significado |
|---|---|---|
-- Empty -- | sin valor | El método de devolución no se añade a JSON-LD. |
Return By Mail | https://schema.org/ReturnByMail | Devolución por correo. |
Return In Store | https://schema.org/ReturnInStore | Devolución en tienda física. |
Return At Kiosk | https://schema.org/ReturnAtKiosk | Devolución en punto/quiosco. |
Valores del campo Return Fees:
| Valor | Valor JSON-LD | Significado |
|---|---|---|
-- Empty -- | sin valor | La información sobre los gastos no se añade a JSON-LD. |
Free Return | https://schema.org/FreeReturn | La devolución es gratuita. |
Customer Responsibility | https://schema.org/ReturnFeesCustomerResponsibility | El coste de la devolución corre a cargo del cliente. |
Return Shipping Fees | https://schema.org/ReturnShippingFees | La devolución tiene un coste de envío de devolución determinado. Requiere Return Shipping Fee. |
La moneda del campo Return Shipping Fee se obtiene de la moneda de la oferta del producto.
Custom Properties
El campo Custom Properties permite añadir propiedades propias al JSON-LD del producto.
Formato:
wlasciwosc_jsonld,kod_atrybutuSi solo se proporciona un elemento, el módulo lo trata simultáneamente como nombre de la propiedad JSON-LD y código del atributo.
Valor predeterminado:
skumpn,skuSignificado del valor predeterminado:
| Línea | Efecto |
|---|---|
sku | Añade sku a partir del atributo sku. |
mpn,sku | Añade mpn a partir del atributo sku. |
Ejemplo de adición de un atributo propio:
color,colormaterial,materialConfiguración mínima recomendada para productos
Para reducir las advertencias de Google Search Console para los datos de producto, configura al menos:
| Campo | Recomendación |
|---|---|
Product Rich Data > Enabled | Yes |
Show Availability | Yes |
Brand | Selecciona el atributo con la marca del producto. |
EAN / GTIN Attribute | Selecciona el atributo con EAN / GTIN si los productos tienen un identificador global. |
Show Shipping Details | Yes, si la tienda tiene una política de envíos uniforme que pueda describirse en la configuración. |
Show Merchant Return Policy | Yes, si la tienda tiene una política de devoluciones uniforme que pueda describirse en la configuración. |
Custom Properties | Mantén al menos sku; opcionalmente añade mpn, si la tienda dispone de dicho identificador. |
Limpieza de caché tras cambios de configuración
Después de cambiar la configuración, ejecuta:
php bin/magento cache:flushSi la tienda utiliza caché HTTP adicional, Varnish o CDN, limpia también esas capas de caché.
Verificación del funcionamiento
- Abre la página de producto en el frontend.
- Comprueba el código fuente de la página y busca:
- Verifica que JSON-LD contenga los campos esperados, p. ej.:
{ '@type': 'Product', 'brand': { '@type': 'Brand', 'name': 'Example Brand' }, 'gtin13': '5901234123457', 'offers': [ { '@type': 'Offer', 'shippingDetails': {}, 'hasMerchantReturnPolicy': {} } ]}- Prueba la URL del producto en la herramienta Google Rich Results Test o en Google Search Console.
Notas de implementación
- No actives
shippingDetailsnihasMerchantReturnPolicysi los valores de la configuración no se corresponden con la política real de la tienda. - Si las políticas de envío o devolución varían por producto, región, método de entrega o carrito, una única configuración global puede no ser suficiente.
- Después de cambiar los atributos
Brand,ManufactureroEAN / GTIN Attributeconviene reindexar los datos de producto si la tienda utiliza caché o índices que afectan a la lectura de atributos. - En tiendas multilingües y multimoneda, comprueba la configuración por separado para cada Store View.