Schema Markup para productos: implementación correcta que mejora CTR en búsquedas
Schema Markup para Productos: Cómo Implementarlo Paso a Paso
Cuando un comprador busca un producto en Google, la diferencia entre un resultado con precio, calificación y disponibilidad visible —y uno que muestra solo el título y la URL— no es casualidad. Es schema markup bien implementado. El schema markup le dice a los motores de búsqueda exactamente qué contiene tu página, y esa información aparece directamente en los resultados como rich snippets, aumentando el CTR sin necesidad de subir posiciones.
Este artículo te lleva paso a paso por la implementación correcta del schema de tipo Product, desde la estructura básica hasta la validación final.
Por Qué el Schema Markup Cambia el Juego para Páginas de Producto
Un resultado de búsqueda estándar compite solo con texto. Un resultado con rich snippets muestra precio, stock, estrellas de valoración y hasta el rango de precios si hay variantes. El lector decide antes de hacer clic, y eso filtra mejor la intención de compra.
El schema markup no mejora directamente el ranking de posición, pero sí mejora la tasa de clics sobre resultados que están en posiciones similares. Para páginas de producto, eso se traduce en más tráfico calificado con el mismo esfuerzo SEO. Además, Google usa los datos estructurados para alimentar funciones como el panel de compras, los resultados de voz y las fichas de producto en Google Shopping.
¿Vale la pena implementarlo aunque tu tienda ya tenga buen posicionamiento? Sí, porque sin schema markup estás dejando que Google interprete tu página por su cuenta, y esa interpretación puede ser incompleta o incorrecta.
Qué Necesitás Tener Listo Antes de Empezar
Antes de tocar una sola línea de código, verificá que tenés lo siguiente:
- Acceso al backend de tu plataforma: Ya sea WooCommerce, Shopify u otra, necesitás poder editar el
<head>de tus páginas de producto o instalar un plugin que lo haga por vos. - Conocimiento básico de JSON-LD: Es el formato recomendado por Google para datos estructurados. No requiere modificar el HTML visible de la página; se inserta como un bloque
<script>separado. - Acceso a la herramienta de prueba de datos estructurados de Google: Es gratuita y te permite validar el schema antes de que Google lo indexe. Está disponible en Rich Results Test.
- Un inventario claro de los campos de tus productos: Precio, disponibilidad, SKU, imágenes y descripción. Si estos datos no están completos en tu base de productos, el schema no va a poder reflejarlos correctamente.
No es necesario ser desarrollador para implementar schema markup básico. Sí es necesario entender qué datos estás declarando, porque un schema con datos incorrectos —por ejemplo, un precio desactualizado— puede generar penalizaciones de Google por datos engañosos.
Implementación Paso a Paso
Paso 1: Elegir el Tipo de Schema Correcto
Para páginas de producto, el tipo correcto es Product, definido en schema.org/Product. Este tipo acepta propiedades como name, image, description, sku, brand y el objeto offers, que es donde se declaran precio y disponibilidad.
Si tus productos tienen reseñas, podés agregar también AggregateRating dentro del mismo bloque. Si tenés variantes de precio, el objeto offers puede ser un array con múltiples entradas. Empezá con la estructura base y expandí desde ahí.
Paso 2: Escribir el Bloque JSON-LD
El bloque de schema se inserta dentro de una etiqueta <script type="application/ld+json"> en el <head> de la página de producto. Esta es la estructura mínima recomendada:
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Nombre del Producto",
"image": "https://tutienda.com/imagen-producto.jpg",
"description": "Descripción clara y específica del producto.",
"sku": "SKU-001",
"brand": {
"@type": "Brand",
"name": "Nombre de la Marca"
},
"offers": {
"@type": "Offer",
"url": "https://tutienda.com/producto",
"priceCurrency": "ARS",
"price": "29999",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
}
}
Algunos puntos críticos a no pasar por alto:
- El campo
pricedebe ser un número sin símbolo de moneda. La moneda va enpriceCurrencycomo código ISO (ARS, MXN, COP, USD). - El campo
availabilityacepta valores comoInStock,OutOfStockoPreOrder. Usá el que corresponda al estado real del producto. - Si el precio tiene fecha de vigencia, agregá
priceValidUntilcon formato ISO 8601. - El campo
imagedebe apuntar a una URL de imagen accesible públicamente, no a una ruta relativa.
Paso 3: Insertar el Bloque en tu Plataforma
En WooCommerce, podés insertar el bloque JSON-LD de dos formas:
- Manualmente vía functions.php: Usando un hook como
wp_headpara inyectar el script en páginas de producto. Requiere PHP básico. - Con un plugin de schema: Plugins como Yoast SEO, Rank Math o Schema Pro generan el markup automáticamente a partir de los datos del producto en WooCommerce. Esta es la opción más práctica si tenés un catálogo grande.
No importa el método que uses: el resultado final debe ser un bloque <script type="application/ld+json"> visible en el código fuente de cada página de producto.
Paso 4: Validar el Schema Antes de Publicar
Después de insertar el código, validalo en el Rich Results Test de Google. Pegá la URL de la página o el código directamente, y la herramienta te va a mostrar qué propiedades detectó, cuáles están incompletas y si hay errores que impiden que el rich snippet aparezca.
Un schema válido no garantiza que Google muestre el rich snippet de inmediato —puede tardar días o semanas en indexarse—, pero sí garantiza que no hay errores técnicos que lo bloqueen.
Checklist de Verificación Final
- ¿El bloque JSON-LD está presente en el
<head>de cada página de producto? - ¿El campo
pricerefleja el precio real y actualizado del producto? - ¿El campo
availabilitycoincide con el stock real? - ¿La URL de imagen es accesible públicamente y no devuelve error 404?
- ¿Validaste el schema con el Rich Results Test y no hay errores críticos?
- ¿Incluiste
brandyskupara completar la ficha técnica del producto? - ¿Si tenés reseñas, agregaste
AggregateRatingconratingValueyreviewCount?
Qué Revisar si Algo No Funciona
El schema está insertado pero el Rich Results Test no muestra nada. Estos son los puntos a revisar en orden:
- El bloque no está en el
<head>: Algunos constructores de página o plugins mueven el contenido del head. Verificá el código fuente real de la página (Ctrl+U en el navegador) y buscá el bloqueapplication/ld+json. - JSON mal formado: Un error de sintaxis —una coma de más, una llave sin cerrar— invalida todo el bloque. Pegá el JSON en JSONLint para detectarlo.
- Propiedades requeridas faltantes: El tipo
Productrequiere al menosname. Para que aparezca el rich snippet de precio,offersconpriceypriceCurrencyson obligatorios. - Datos inconsistentes con la página: Si el precio en el schema no coincide con el precio visible en la página, Google puede ignorar el markup o penalizarlo. Mantené ambos sincronizados.
- Página bloqueada para bots: Si tu página tiene
noindexo está protegida por contraseña, Google no puede indexar el schema aunque esté bien escrito.
Cómo Sacarle Más Partido al Schema de Producto
La implementación básica cubre precio y disponibilidad. Pero hay propiedades adicionales que amplían lo que Google puede mostrar:
- AggregateRating: Muestra las estrellas de valoración directamente en el resultado. Requiere
ratingValue(número entre 1 y 5) yreviewCount(cantidad de reseñas). Solo usalo si tenés reseñas reales; Google verifica la coherencia con el contenido de la página. - Review: Podés incluir reseñas individuales dentro del schema. Útil si tenés pocas reseñas pero muy detalladas.
- priceValidUntil: Indica hasta cuándo es válido el precio. Útil para promociones o precios temporales.
- gtin / mpn: Códigos de barras o números de parte del fabricante. Google los usa para cruzar tu producto con su base de datos de productos y mejorar la visibilidad en Google Shopping.
Actualizá el schema cada vez que cambie el precio o el stock. Un schema desactualizado no solo pierde efectividad: puede generar advertencias en Google Search Console bajo «Datos estructurados» si los valores declarados no coinciden con lo que el usuario ve en la página.
Schema Markup y Multicanalidad: Un Punto de Atención
Si tu tienda WooCommerce también vende en Mercado Libre, hay un detalle operativo que vale la pena considerar: el schema markup declara precio y disponibilidad en tiempo real, lo que significa que si el stock se agota en Mercado Libre y no se actualiza en WooCommerce, tu schema va a seguir mostrando «InStock» cuando el producto ya no está disponible.
Esa inconsistencia no solo afecta la experiencia del comprador que llega desde Google: también puede generar advertencias en Search Console. Mantener el stock sincronizado entre canales es, en ese sentido, parte de la higiene técnica del schema.
Para quienes operan en ambos canales, el plugin para sincronizar WooCommerce y Mercado Libre de WooSync mantiene el stock actualizado en ambas direcciones de forma automática, lo que reduce el riesgo de que el schema refleje datos incorrectos por quiebres de stock no registrados en WooCommerce.
El schema markup bien implementado es una de las palancas SEO con mejor relación esfuerzo-resultado para tiendas de e-commerce. No requiere cambiar el contenido de la página, no afecta el diseño y los resultados —en términos de CTR— son medibles en Google Search Console en pocas semanas. Si todavía no lo tenés activo en tus páginas de producto, este es el momento de implementarlo. Y si ya lo tenés, revisá que los datos estén actualizados: un schema correcto pero con precio desactualizado hace más daño que no tener schema.
Para tiendas que operan en WooCommerce y Mercado Libre simultáneamente, la sincronización de datos entre canales no es opcional: es la base que hace que el schema sea confiable. Conocé cómo funciona el plugin de sincronización entre Mercado Libre y WooCommerce y evaluá si encaja en tu operación actual.