
  


---
title: "Agregar datos estructurados en Magento - Carlos Sánchez"
description: "Inserta datos estructurados en un Magento de una forma automatizada y efectiva con programación."
author: "Carlos Sánchez"
url: https://carlossanchezdonate.com/curiosidades/agregar-json-magento/
image: https://carlossanchezdonate.com/wp-content/uploads/tb-magento-json-producto.jpg
---





# Cómo agregar datos estructurados en Magento




                Inserta datos estructurados en un Magento de una forma automatizada y efectiva con programación.






![Cómo agregar datos estructurados en Magento](https://carlossanchezdonate.com/wp-content/uploads/cover-magento-json-producto.jpg)




**Autor:**

        : [Carlos Sánchez](https://carlossanchezdonate.com/sobre-mi/)





**Fecha de publicación:**

        : 2024-01-19



**Última revisión:**

        : 2026-01-30




        **Índice**
                mostrar


        1
                ¿Por qué importan los datos estructurados en ecommerce?
        2
                La forma correcta: crear un módulo personalizado
        2.1
                1. Estructura del módulo
        2.2
                2. Archivos de registro del módulo
        2.3
                3. El bloque PHP con la lógica
        2.4
                4. El layout XML
        2.5
                5. La plantilla phtml
        2.6
                6. Activar el módulo
        2.7
                Extendiendo el módulo
        3
                Alternativa: usar el buffer de PHP
        4
                Lo que NO recomiendo: Tag Manager y JavaScript
        4.1
                Lo que dice John Mueller al respecto
        5
                Verificar que funciona
        5.1
                1. Google Rich Results Test
        5.2
                2. Schema.org Validator
        5.3
                3. Search Console
        5.4
                4. Ver el código fuente
        6
                Errores comunes a evitar
        7
                Schemas adicionales para ecommerce
        8
                Resumen
        9
                Fuentes

Los datos estructurados son una de esas cosas que en Magento 2 vienen implementados de forma muy básica (por no decir pobre). La instalación por defecto con el tema Luma incluye algunos microdatos, pero le faltan campos importantes como availability, offers, shipping o reviews individuales.

Este artículo surge de una pregunta en mi comunidad de [Discord](https://discord.gg/jgzsXYbwGd), y como es algo que me preguntan bastante, he decidido desarrollarlo en profundidad.

## ¿Por qué importan los datos estructurados en ecommerce?

Los datos estructurados (o schema markup) son código que ayuda a los buscadores a entender el contenido de tu página. En el caso de productos, le estás diciendo a Google: "esto es un producto, este es su precio, esta es su disponibilidad, estas son sus valoraciones".

¿El resultado? Los famosos rich snippets en los resultados de búsqueda: estrellas de valoración, precios, disponibilidad... Según varios estudios, los rich snippets pueden aumentar el CTR hasta un 150%.

Google prefiere el formato **JSON-LD** sobre los microdatos (el formato que usa Magento por defecto). Las ventajas de JSON-LD:

- **Separación del HTML**: No ensucias el código de las plantillas.
- **Fácil de depurar**: Todo el schema está en un único bloque script.
- **Fácil de mantener**: Cambios en pocos archivos en vez de docenas de templates.

## La forma correcta: crear un módulo personalizado

En Magento 2, la forma limpia y escalable de añadir datos estructurados es mediante un módulo propio. Esto te permite:

- No depender de extensiones de terceros que pueden dejar de actualizarse.
- Control total sobre qué datos incluyes y cómo.
- Que las actualizaciones de Magento no sobreescriban tus cambios.

Vamos paso a paso.

### 1. Estructura del módulo

Primero, creamos la estructura básica del módulo. En `app/code/` creamos:

`app/code/TuEmpresa/DatosEstructurados/

├── registration.php

├── etc/

│   └── module.xml

├── Block/

│   └── ProductSchema.php

├── view/

│   └── frontend/

│       ├── layout/

│       │   └── catalog_product_view.xml

│       └── templates/

│           └── product_schema.phtml`

### 2. Archivos de registro del módulo

**registration.php**:

`













`

### 3. El bloque PHP con la lógica

Es decir, donde construimos los datos estructurados. **Block/ProductSchema.php**:

`













`

### 5. La plantilla phtml

**view/frontend/templates/product_schema.phtml**:

`







`

### 6. Activar el módulo

Ejecuta los siguientes comandos desde la raíz de Magento:

`bin/magento module:enable TuEmpresa_DatosEstructurados

bin/magento setup:upgrade

bin/magento setup:di:compile

bin/magento setup:static-content:deploy -f

bin/magento cache:clean`

### Extendiendo el módulo

El código anterior es una base. En mis proyectos suelo añadir condicionales para diferentes escenarios:

- Productos configurables vs simples
- Productos agrupados
- Diferentes schemas según la categoría
- Datos de envío (shippingDetails)
- Preguntas frecuentes (FAQPage)

La lógica puede complicarse bastante dependiendo del caso, pero siempre partiendo de esta estructura base. Esto es algo que vemos en detalle en mi [máster de SEO técnico](https://carlossanchezdonate.com/master-seo-tecnico/).

## Alternativa: usar el buffer de PHP

Si no quieres o no puedes crear un módulo completo, existe otra opción: usar el [todopoderoso buffer de PHP](https://carlossanchezdonate.com/articulo/buffer-php-modificar-html/) para inyectar los datos estructurados en el HTML antes de enviarlo al navegador.

Esta técnica es especialmente útil cuando:

- Necesitas añadir schema a páginas que no son de producto (CMS, categorías custom).
- Quieres modificar el comportamiento sin tocar los layouts de Magento.
- Tienes prisa y necesitas una solución rápida.

La idea es interceptar el HTML completo, detectar en qué página estamos, y añadir el JSON-LD correspondiente justo antes del `` o del ``.

Un ejemplo simplificado:

`
