Inicio Blog SEO
SEO

Schema markup en Shopify: guía técnica completa 2026

Qué schema genera Shopify automáticamente en Dawn, qué le falta y cómo añadir JSON-LD manualmente para conseguir rich results en Google.

Lionel Fenestraz · 22 de mayo de 2026 · 20 min de lectura · Actualizado: mayo de 2026
Compartir
Ejemplo de rich results en Google para una página de producto Shopify con valoración, precio y disponibilidad
En este artículo

La mayoría de tiendas Shopify con las que me siento a auditar el SEO tienen el mismo agujero en común: creen que no hacen nada con schema markup, y resulta que Shopify ya les está inyectando la mitad. El tema real no es “Shopify no trae schema”. El tema es que trae lo justo para el listing básico, deja fuera todo lo que podría moverte en rich results, y cuando añades apps encima acabas con JSON-LD duplicado que rompe el rendering en Google.

Según la documentación oficial de Google Search Central, el marcado Product correctamente implementado es la condición necesaria para aparecer en rich results de producto con estrellas, precio y disponibilidad. Google no inventa ese bloque visual: lo lee del JSON-LD de tu página. Si tu theme no lo emite, o lo emite mal, pierdes el espacio visual a favor del competidor que sí lo hace. Esta guía es el inventario técnico que te debería dar tu theme developer pero casi nunca entrega. Si vienes aquí tras leer la guía pilar de SEO para Shopify, esta es la profundización que falta.

Puntos clave

  • Shopify Dawn genera automáticamente Product, Offer y Organization en product.json.liquid, pero no emite FAQPage, HowTo, Article ni BreadcrumbList de forma fiable (Shopify.dev, 2025)
  • Las páginas de producto con Product + AggregateRating válidos son elegibles para rich results con estrellas, pero solo si las reseñas son de clientes verificados (Google Search Central, 2025)
  • El Rich Results Test de Google valida elegibilidad para funciones visuales; el Schema Markup Validator valida sintaxis pura
  • Duplicar schema (app + theme + otra app) es el error más frecuente que veo: Google puede ignorarlo todo si detecta conflicto
  • Una app de reseñas bien integrada suele salir más barata que pagar un developer por un snippet custom, si tu volumen de productos es alto

Contenido

  1. ¿Qué es schema markup y por qué Google lo premia con rich results?
  2. ¿Qué schema genera Shopify automáticamente en Dawn?
  3. ¿Qué schema NO genera Shopify y deberías añadir tú?
  4. ¿Cómo añadir JSON-LD a páginas custom con theme snippets?
  5. ¿Cuándo tiene sentido FAQPage en páginas de producto?
  6. Product + AggregateRating: ¿cuándo puedes usarlo sin riesgo?
  7. ¿Cómo validar tu schema antes de publicar?
  8. ¿Apps de schema o código propio? Lo que cambia en la factura
  9. Preguntas frecuentes
  10. El schema solo importa si la página lo respalda

¿Qué es schema markup y por qué Google lo premia con rich results?

Schema markup es vocabulario estructurado definido en Schema.org, un proyecto colaborativo fundado por Google, Microsoft, Yahoo y Yandex. La forma recomendada de implementarlo es JSON-LD, confirmada como formato preferido por Google Search Central. Sin ese marcado, Google entiende tu página como texto plano; con él, entiende que hay un producto, un precio y un stock.

El premio visible son los rich results: estrellas de valoración, rango de precios, disponibilidad, FAQ desplegables, miga de pan en el snippet. Google no los concede por decreto. Los concede si detecta marcado válido, contenido que se corresponde con lo marcado y una reputación mínima de la URL. Ese último punto se olvida mucho. Puedes tener el JSON-LD perfecto y seguir sin rich results porque a Google tu página le parece débil.

La confusión que más me encuentro: creer que schema markup te da ranking. No lo hace. Es explícito en la documentación de Google que no es un factor de ranking directo. Lo que hace es aumentar la probabilidad de que, cuando ya rankees, tu snippet ocupe más pixels en la SERP y recibas un CTR mayor. Esa diferencia sí puede mover tráfico. Pero si no rankeas, más schema no te va a poner arriba.

Cápsula citable: Schema markup es vocabulario estructurado de Schema.org, implementado en formato JSON-LD según Google Search Central. No es un factor de ranking directo, pero habilita rich results (estrellas, precio, disponibilidad, FAQ) que aumentan la presencia visual del snippet en la SERP. Fuente: Google Search Central, 2025.


¿Qué schema genera Shopify automáticamente en Dawn?

Dawn es el theme de referencia gratuito de Shopify. Según la documentación de templates de producto de Shopify.dev, el archivo product.json.liquid monta por defecto un bloque Product con JSON-LD que incluye nombre, descripción, imagen, SKU, marca y al menos una Offer con precio, moneda y disponibilidad. Ese bloque lo emite el propio layout, no una app.

Schema de producto (Product + Offer)

Esto es lo que Dawn inyecta en cada página /products/*:

{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "Camiseta básica algodón orgánico",
  "url": "https://tu-tienda.com/products/camiseta-basica",
  "image": "https://cdn.shopify.com/s/files/1/.../camiseta-basica.jpg",
  "description": "Camiseta de algodón orgánico certificado GOTS.",
  "brand": {
    "@type": "Brand",
    "name": "Tu Marca"
  },
  "sku": "CAM-BAS-001",
  "offers": {
    "@type": "Offer",
    "price": "29.90",
    "priceCurrency": "EUR",
    "availability": "https://schema.org/InStock",
    "url": "https://tu-tienda.com/products/camiseta-basica"
  }
}

El código real que lo genera en Dawn está en el snippet snippets/product-media.liquid y en sections/main-product.liquid. Los valores se leen del objeto product de Liquid, así que si cambias nombre o precio en el admin, el JSON-LD se actualiza en el siguiente build.

Schema de organización (Organization)

En la home, Dawn emite un bloque Organization sencillo con nombre y logo, siempre que hayas cargado logo en theme settings. No emite sameAs con redes sociales a menos que lo añadas tú. Si tu ficha de Google Business o tu Knowledge Panel está construida sobre tus perfiles sociales, esto importa.

Lo que no es Schema pero parece serlo

Shopify emite también meta tags Open Graph y Twitter Cards. Son útiles para Facebook y X, pero no cuentan como structured data para Google. No confundas uno con otro cuando estés haciendo el inventario.

En auditorías a tiendas que arrastran themes personalizados antiguos (anteriores al lanzamiento de Dawn en 2021), es común encontrar schema con formato microdata en vez de JSON-LD, o bloques Product a los que les falta priceCurrency o availability. Google tolera microdata, pero el Rich Results Test suele quejarse más con esos themes. Si estás migrando a un theme OS 2.0, es el momento de limpiarlo.

Cápsula citable: Shopify Dawn inyecta por defecto JSON-LD con los tipos Product, Offer y Organization. El bloque Product en páginas de producto incluye nombre, imagen, SKU, marca, precio, moneda y disponibilidad, leídos del objeto Liquid product. Fuente: Shopify.dev, 2025.


¿Qué schema NO genera Shopify y deberías añadir tú?

Aquí está el vacío real. Dawn no emite FAQPage en ninguna plantilla por defecto, no emite HowTo (nunca lo ha hecho), y BreadcrumbList lo genera de forma inconsistente según el template. En páginas de blog (article.json.liquid) tampoco emite Article con todos los campos que Google pide para aparecer en Top Stories.

Inventario de huecos por tipo de página

PáginaGenera DawnFaltaImpacto si lo añades
ProductoProduct, OfferAggregateRating, Review, FAQPageEstrellas y FAQ en SERP
ColecciónNada fiableItemList, BreadcrumbListMejor contexto, poca visual
HomeOrganization mínimosameAs, WebSite con SearchActionSitelinks Searchbox
Blog postArticle parcialauthor completo, datePublished ISO, image estructuradaElegibilidad Top Stories
Página customNadaLo que necesite esa páginaDepende del contenido

¿Por qué faltan?

Schema.org tiene cientos de tipos. Shopify no puede presumir qué quieres marcar: no sabe si tu página de producto tiene un FAQ real, si tus reseñas son de clientes verificados, si tu blog es autoría periodística. Cargar schema que no corresponde al contenido es peor que no cargarlo: Google puede aplicar una acción manual por structured data spam, según la documentación oficial.

Por eso el approach sano es: decides tú qué marcar, basado en contenido real. Si no tienes FAQ de verdad en la página, no metas FAQPage. Si no tienes reseñas recolectadas por una app verificada, no metas AggregateRating inventado.

Un detalle que casi nunca aparece en los tutoriales: Google desde 2023 restringió drásticamente la elegibilidad de FAQPage rich results para sitios que no sean “autoridad oficial o gubernamental” en la mayoría de consultas, según la actualización de política de Google. Marcar tu FAQ sigue siendo útil para AI Overviews y para ChatGPT Search, pero esperar el panel clásico expandible en SERP ya no es realista para la mayoría de tiendas.


¿Cómo añadir JSON-LD a páginas custom con theme snippets?

El patrón sano es crear un snippet Liquid, renderizarlo solo donde aplique y pasar las variables desde el template. Según la documentación de Liquid de Shopify, render aísla variables y evita conflictos, a diferencia de include (deprecado). Esto te da un schema mantenible y no inyecta código muerto en páginas donde no aplica.

Paso 1: crear el snippet

En el editor de código del theme, crea snippets/schema-faq.liquid:

{%- comment -%} snippets/schema-faq.liquid {%- endcomment -%}
{%- if faq_items and faq_items.size > 0 -%}
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {%- for item in faq_items -%}
    {
      "@type": "Question",
      "name": {{ item.question | json }},
      "acceptedAnswer": {
        "@type": "Answer",
        "text": {{ item.answer | json }}
      }
    }{%- unless forloop.last -%},{%- endunless -%}
    {%- endfor -%}
  ]
}
</script>
{%- endif -%}

El filtro | json de Liquid escapa comillas, saltos de línea y caracteres unicode automáticamente. Si te saltas ese filtro y metes el texto crudo, el JSON se te va a romper en cuanto una respuesta tenga un apóstrofe.

Paso 2: llamar al snippet desde la plantilla

En templates/page.faq.json o en un bloque de sección:

{% assign faq_items = section.blocks | where: "type", "faq_item" %}
{% render 'schema-faq', faq_items: faq_items %}

Si tu página usa metafields, pasa faq_items: product.metafields.custom.faq.value. Si usa un bloque de theme, asigna el array desde section.blocks.

Paso 3: validar

Antes de publicar el theme, pega la URL de la página en el Rich Results Test. Si marca un error de sintaxis, casi siempre es: comilla sin escapar, coma final sobrante o un campo obligatorio vacío.

El error que vuelve una y otra vez en las auditorías es meter el JSON-LD dentro del bloque <head> de theme.liquid de forma global. Resultado: todas las páginas del site anuncian el mismo FAQ, incluido el checkout, el carrito y el 404. Google penaliza la inconsistencia. Renderiza el snippet solo donde tiene sentido.

Cápsula citable: Para añadir JSON-LD custom en Shopify, el patrón recomendado es crear un snippet Liquid con el filtro | json para escapar valores, renderizarlo con {% render %} solo en templates donde aplique, y validar con el Rich Results Test de Google. Fuente: Shopify.dev, 2025.


¿Cuándo tiene sentido FAQPage en páginas de producto?

Tiene sentido si el FAQ existe visiblemente en la página, responde preguntas reales de clientes y no se solapa con la descripción. Según la política de structured data de Google, todo contenido marcado como FAQPage debe ser visible para el usuario y no puede ser promocional ni contradictorio con la página.

Cuándo sí, cuándo no

  • Sí: un bloque con 4-6 preguntas reales sobre tallas, materiales, envío, devoluciones
  • Sí: preguntas que resuelven dudas antes de comprar y reducen consultas a soporte
  • No: un FAQ invisible, metido solo para el schema
  • No: preguntas copiadas de la página de envíos
  • No: contenido promocional disfrazado de FAQ (“¿Por qué somos la mejor marca?”)

Aunque el rich result clásico está restringido desde 2023, marcar el FAQ sigue dando dos beneficios medibles: mejora la comprensión de la página por sistemas de IA que resumen productos (AI Overviews, ChatGPT Search, Perplexity) y aumenta la probabilidad de aparecer como fuente citada en esas respuestas.

Código mínimo funcional

Reutilizando el snippet del apartado anterior, el resultado en una página de producto queda:

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "¿Cuál es la talla adecuada?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "La camiseta tiene corte regular. Si dudas entre dos tallas, elige la mayor para un fit relajado."
      }
    },
    {
      "@type": "Question",
      "name": "¿En cuánto tiempo llega el pedido?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Envío peninsular en 24-48h laborables. Internacional en 3-7 días."
      }
    }
  ]
}

Product + AggregateRating: ¿cuándo puedes usarlo sin riesgo?

Solo cuando las reseñas están recolectadas por un sistema verificable y se muestran en la página visible. Google pide explícitamente, en las guidelines de review snippet, que las reseñas sean de clientes reales, accesibles en la URL marcada y no autoenviadas por el propio negocio.

Qué apps cumplen en la práctica

Las apps de reseñas que se integran con Shopify (Judge.me, Loox, Yotpo, Okendo, Shopify Product Reviews) emiten todas su propio JSON-LD con AggregateRating cuando las instalas con el bloque de reseñas en la página de producto. No necesitas tocar código. Lo que sí tienes que revisar es que no haya duplicado con el schema nativo de Dawn.

El problema del doble schema

Veo esto constantemente: el theme emite Product con precio. La app de reseñas emite otro bloque Product con AggregateRating y repite nombre, imagen, oferta. Google detecta dos bloques Product en la misma URL y puede ignorar ambos. La solución estándar es fusionarlos en un único bloque.

Código que fusiona ambos en el snippet del theme (requiere que la app exponga los datos como metafield o variable Liquid):

{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "Camiseta básica algodón orgánico",
  "sku": "CAM-BAS-001",
  "brand": {"@type": "Brand", "name": "Tu Marca"},
  "offers": {
    "@type": "Offer",
    "price": "29.90",
    "priceCurrency": "EUR",
    "availability": "https://schema.org/InStock"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "128"
  }
}

Para que funcione sin duplicados, desactiva la emisión de schema de la app (la mayoría tienen un toggle en settings) y haz que el theme lea los datos agregados de la app vía metafield o API.

Cobertura de schema markup en Shopify Dawn por tipo de página Cobertura de schema Shopify Dawn: verde = nativo, rojo = falta Producto Product Offer AggregateRating FAQPage Colección ItemList BreadcrumbList Home Organization WebSite SearchAction Blog post Article (parcial) Author completo Página custom Nada por defecto Verde: emitido por Dawn | Ámbar: parcial | Rojo: debes añadirlo tú
Mapa de cobertura de schema markup en Shopify Dawn por tipo de plantilla. Fuente: inventario basado en Shopify.dev y revisión de código Dawn, 2025.

¿Cómo validar tu schema antes de publicar?

Con dos herramientas complementarias: el Rich Results Test de Google y el Schema Markup Validator de Schema.org. Hacen cosas distintas. Según la documentación de Google Search Central, el primero valida si tu página es elegible para funciones visuales en la SERP; el segundo valida sintaxis de Schema.org con independencia de si Google lo usa o no.

Workflow de validación en dos pasos

Primero, pega la URL (o el código si es todavía staging) en Rich Results Test. Te dice qué rich result eres elegible para recibir y qué errores bloquean esa elegibilidad. Errores típicos: priceCurrency ausente, image en formato relativo en vez de absoluto, availability con string no válido.

Segundo, si la página pasa Rich Results pero el schema es más amplio (incluye tipos que Google no usa pero otros agentes sí, como Product con material, color extendido, weight), valídalo en Schema Markup Validator. Te dice si tu JSON es sintácticamente válido y si los tipos existen en el vocabulario.

Qué hacer después de publicar

Pasados 2-3 días, revisa Google Search Console en la sección “Mejoras” o “Enhancements”. Ahí aparecen los tipos detectados, el número de URLs por estado y los errores específicos. Si una URL sale como “Válida con advertencias”, arregla las advertencias: no bloquean pero limitan el rendimiento.

Un cliente del sector cosmética llegaba con 400 productos y AggregateRating en todos. Después de pasar Rich Results Test URL por URL durante una auditoría, descubrimos que la app de reseñas estaba emitiendo reviewCount: 0 en los productos sin reseñas, y Google ignoraba todo el schema por ese campo vacío. Filtramos la emisión para que solo apareciera en productos con al menos 3 reseñas. El rich result apareció en las SERP en menos de dos semanas.


¿Apps de schema o código propio? Lo que cambia en la factura

Depende del volumen, la complejidad del catálogo y la vida útil del theme. Según la marketplace oficial de Shopify, existen decenas de apps de schema markup, con precios mensuales que van de gratis a 30-50 euros al mes. Un snippet custom escrito por un developer Shopify certificado suele costar entre 300 y 800 euros en la mayoría de agencias europeas, según tarifarios publicados.

Ventajas de apps

  • Cero código para el merchant
  • Actualización automática cuando cambian las reglas de Google
  • Integración plug-and-play con reseñas, FAQ, variantes
  • Soporte incluido

Ventajas de código propio

  • Coste único, no recurrente
  • Control total sobre el output
  • Sin riesgo de que la app inyecte JS que ralentice la página
  • No depende de que la app siga activa en 3 años

Cuándo elegir cada opción

  • Catálogo pequeño (menos de 50 productos) y theme que no vas a cambiar pronto: código propio
  • Catálogo grande, reseñas activas, poco tiempo técnico: app de reseñas con schema integrado
  • Sitio con developer interno: código propio casi siempre gana
  • Tienda sin recursos técnicos: app, aunque sea gratis como JSON-LD for SEO

El híbrido más sano que veo funcionar: app solo para reseñas (que lo hacen bien porque también gestionan el UI), y código propio en snippets/schema-*.liquid para FAQ, BreadcrumbList y Article. Así no pagas recurrencia por lo que no la necesita.

Cápsula citable: El coste comparado de implementar schema en Shopify oscila entre apps mensuales de 0-50 euros y desarrollo custom de 300-800 euros pagado una sola vez, según tarifarios publicados. El híbrido recomendado es app para reseñas y snippets Liquid propios para FAQ y BreadcrumbList. Fuente: Shopify App Store, 2025.


Preguntas frecuentes

¿Shopify genera schema markup automáticamente en todos los themes?

Lo genera en Dawn y en la mayoría de themes OS 2.0 del theme store oficial, pero no en todos los themes custom ni en themes antiguos heredados. El bloque garantizado es Product en páginas de producto y Organization en home si has cargado logo. Todo lo demás depende del theme. Revisa tu product.json.liquid o pásale el Rich Results Test a una URL de producto antes de asumir cobertura.

¿Puedo añadir schema sin tocar código del theme?

Sí, con una app de schema markup del Shopify App Store. Apps como JSON-LD for SEO, Smart SEO o Schema Plus añaden FAQ, BreadcrumbList, Article y AggregateRating sin editar Liquid. El riesgo es la duplicación con el schema nativo y con apps de reseñas, que puede anular el efecto. Si usas app, desactiva los tipos que ya emite tu theme para evitar conflictos.

¿Por qué no aparecen mis estrellas en Google aunque tenga schema válido?

Tener schema válido es necesario, no suficiente. Según Google Search Central, Google concede el rich result de estrellas solo si considera que la URL tiene suficiente reputación y las reseñas provienen de un sistema verificable. Para tiendas nuevas o con pocas reseñas, pueden pasar semanas o meses antes de que las estrellas aparezcan, aunque el schema esté perfecto.

¿El schema markup ayuda con ChatGPT, Perplexity y AI Overviews?

Sí, más de lo que ayudaba con Google tradicional. Los sistemas de IA generativa extraen datos estructurados para citar productos, precios y respuestas. Marcar tu contenido con Product, FAQPage y Article aumenta la probabilidad de que esos sistemas te citen como fuente. Es el motivo principal para seguir invirtiendo en FAQ schema aunque el rich result clásico esté restringido desde la actualización de 2023.

¿Cómo evito duplicar schema entre theme y apps?

Haz un inventario: abre View Source en una página de producto, busca application/ld+json y cuenta cuántos bloques hay. Si hay más de uno con @type: Product, tienes duplicado. La solución es desactivar la emisión en la app (settings de la app) o en el theme (comentar el snippet), dejando solo una fuente. Nunca las dos. El Rich Results Test señala el duplicado explícitamente.


El schema solo importa si la página lo respalda

El schema markup es uno de los pocos elementos del SEO técnico donde la relación entre esfuerzo e impacto visible es alta y directa. No te sube rankings, pero cuando rankeas, amplía el terreno que ocupa tu snippet. En un ecommerce Shopify esa diferencia se nota rápido: estrellas, precio visible, disponibilidad, FAQ, migas de pan. Cada uno de esos elementos reduce la fricción del clic.

Lo que no cambia es el principio subyacente: Google premia schema que se corresponde con contenido real. Marcar lo que no existe en la página es pedir una penalización. Lo que funciona es inventariar lo que Dawn te da gratis, identificar los huecos en tu caso concreto, y cerrarlos con snippets propios o una app bien configurada. Sin duplicados. Validado antes de publicar. Revisado en Search Console después.

Si tu tienda está en ese punto en que sabes que hay schema, pero no sabes si está completo ni si los apps lo están rompiendo, una auditoría técnica te ahorra semanas de prueba y error. Reserva 30 minutos sin compromiso y te digo qué tiene tu Shopify hoy y qué le falta.

Auditoría SEO gratuita
Tu web pierde clientes cada día. Descubre por qué — gratis.

Recibe una auditoría SEO personalizada de tu web en menos de 48h. Sin compromiso — solo los puntos exactos donde estás perdiendo visibilidad y cómo arreglarlo.

Lionel Fenestraz — Consultor Google Ads & Meta Ads
Lionel Fenestraz
Consultor PPC & CRO Freelance · Google Partner · CXL Certified · Google Ads Search Certified
Más de 7 años gestionando campañas de Google Ads y Meta Ads para marcas de vacation rental, B2B y ecommerce. Trilingüe (ES/EN/FR). Trabajo directamente en tu cuenta — sin intermediarios.
Primera llamada gratuita

¿Tu cuenta de ads podría
rendir mejor?

30 minutos para revisar tu situación y decirte exactamente qué cambiaría. Sin pitch, sin propuesta de venta.

¿Hablamos? Elige tu hora →
30 min · Google Meet · Sin compromiso