Skip to main content
Shopify guide

ImageObject Schema for Shopify Stores

By · Updated · 4 min read

How ImageObject Schema Works on Shopify

ImageObject on Shopify means adding or upgrading the image data inside your theme's existing JSON-LD blocks, usually nested inside Product schema on product.liquid or inside Article/BlogPosting schema on blog templates. Shopify's Liquid templating system controls what gets emitted server-side, which means the fix is almost always a template edit, a metafield, or an app rather than anything client-side.

The most common gap: Shopify 2.0 themes populate the Product schema's image field automatically, but usually as a bare URL pulled from product.featured_image rather than a full ImageObject with caption, license, and creator. That bare URL satisfies the minimum schema requirement but leaves real citation value on the table.

What Shopify Themes Emit by Default. And What They Miss

Default themes like Dawn and its siblings generate a Product JSON-LD block that includes name, description, sku, offers, and an image field populated from the product's featured image URL. Width, height, caption, license, and creator are not part of that default output. For inline diagrams inside blog articles or content pages, default themes emit no ImageObject at all. Every diagram added to a Shopify blog post needs its schema written by hand or through an app.

Collection pages follow the same pattern as product pages: any imagery on a /collections/ URL, such as a category banner, is rarely wrapped in ImageObject schema by default. Stores with strong collection-level imagery worth citing need to add that schema separately, since it sits outside the Product template entirely.

The Shopify App Ecosystem for Image Schema

A handful of structured-data apps in the Shopify App Store extend the default Product schema output with additional ImageObject fields, typically pulling caption text from the image's alt attribute and dimensions from the image's stored metadata. As with any schema app, check for duplicate blocks after installation. If the theme already emits an image field inside its own Product schema and the app adds a second, separate ImageObject block for the same photo, that duplication can trigger validation warnings.

Review app documentation for whether it injects schema through theme app extensions, which render server-side and are generally more reliable for crawling, or through client-side JavaScript, which depends on Googlebot's second-wave rendering and can introduce a short indexing delay.

Adding ImageObject Manually in Liquid Templates

Inside product.liquid or the relevant section file, the Product schema's image field can be rewritten from a bare {{ product.featured_image | image_url }} string into a nested ImageObject object with contentUrl set to that same URL, plus caption pulled from {{ product.featured_image.alt }}, and width and height pulled from Liquid's built-in image.width and image.height filters, which return the source file's real pixel dimensions. See schema markup for how this nests inside the wider Product block.

For license and creator, which have no Liquid-native equivalent, Shopify metafields are the right storage layer. A product-level metafield holding a license URL or photographer credit can be output into the same JSON-LD block with a standard Liquid metafield reference, giving every product page consistent, centrally editable values.

ImageObject for Inline SVG Diagrams on Shopify Blog Content

For diagrams embedded inline inside a Shopify blog article, add a standalone ImageObject JSON-LD block to that article's template with contentUrl pointing to the article's own canonical URL plus a fragment ID matching the diagram's HTML id, alongside a caption and description written specifically for what the diagram shows. This is separate from, and in addition to, any BlogPosting.image field covering the article's featured image.

Actionable Steps to Audit and Fix ImageObject Schema on a Shopify Store

Start with five representative URLs: the homepage, one product page, one collection page, one blog post with an inline diagram, and one FAQ or policy page with images. Run each through Google's Rich Results Test and note whether the image field resolves to a bare URL or a full ImageObject. For product pages, prioritize upgrading the featured image first since it carries the most weight for Merchant Center and Google Shopping eligibility, then work through inline diagrams on high-traffic blog content.

Frequently asked questions

Does Shopify automatically add ImageObject schema to product images?

Partially. Shopify 2.0 themes populate the Product schema image field with a URL pulled from the featured image, but that value is typically a bare URL string rather than a full ImageObject with caption, dimensions, and license. Stores that want the richer version need a theme edit or an app.

Can a schema app add full ImageObject data without touching theme code?

Most schema apps can, pulling caption text from the image's alt attribute and dimensions from stored image metadata. Check for duplicate image schema blocks after installation, since some themes already emit their own bare-URL image field inside Product schema.

Do I need to add ImageObject schema separately for each product photo?

For multi-image product pages, yes. The Product schema image property accepts an array of ImageObject entries, and each product photo (front view, lifestyle shot, dimensions diagram) should have its own entry with a caption specific to that view rather than a single generic caption reused across all images.

Does headless Shopify (Hydrogen) support ImageObject schema the same way?

No app shortcuts apply on Hydrogen. Schema.org JSON-LD needs to be added as a script component directly in the relevant React route file, with the same ImageObject properties (contentUrl, caption, width, height, license) as a standard Liquid theme, just written in JSX rather than Liquid.

Will adding ImageObject schema affect my Shopify page load speed?

No meaningfully. A JSON-LD block is a small amount of text inside a script tag that the browser does not render or execute as code. It has no measurable effect on Core Web Vitals or page load performance.

MG
Written by

Matt is the founder of RunOctopus. He built All Angles Creatures from zero to page-1 rankings in reptile feeder insects using exactly this method. Turning a hard, entrenched niche into RunOctopus's proof store for programmatic SEO and AI search citation.

Connect on LinkedIn →

See what Ollie would build for your store

Free architecture preview. No card required. Five minutes.

Generate Preview →