New: SEO Blog Writer, a readable, checked blog post for your site every week. Pay once, download straight away.

See it
AI Skill Up
Browse skills

Product structured data for a digital product

How to mark up a digital download or software product with schema.org Product and Offer, which fields matter, what to ignore, and how to keep the price in sync.

Structured data tells search engines what a page is in a form they do not have to guess at. For a product page that means the name, the price, the currency and whether it can be bought now. Digital products fit the same model as physical ones, with a few fields that do not apply.

The minimum that is worth having

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Warm Storefront UI",
  "description": "A Claude Code skill for light, warm storefronts.",
  "image": "https://example.com/og/warm-storefront-ui.png",
  "brand": { "@type": "Brand", "name": "AI Skill Up" },
  "offers": {
    "@type": "Offer",
    "price": "99.00",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "url": "https://example.com/skills/warm-storefront-ui/"
  }
}

Put it in a script type="application/ld+json" in the page head. The url should be the canonical URL of the page, with the same trailing slash rule the rest of the site uses; we covered why in the trailing slash canonical mismatch.

Fields to leave out rather than invent

  • aggregateRating and review, until real buyers have left real reviews. Invented ratings break Google's guidelines and are simply untrue.
  • shippingDetails on a download. Search Console may warn; a warning is not an error.
  • sku and gtin, unless you actually have them.

One price, one place

The most common real problem is not the markup. It is a price that lives in three places: the page, the schema and the checkout, and one of them gets updated. Generate all three from one data file. On this site every price exists once, in the skills data, and the page, the JSON-LD and the payment product are checked against it.

Check it

Run the page through Google's Rich Results Test and the Schema Markup Validator. After deploy, Search Console reports structured data problems per type. Rich results are Google's decision, not a guarantee, but valid, accurate data is the part you control. The same rule applies to FAQ markup, which we cover in FAQ schema must match the page.

Warm Storefront UI is the design this store is built in, including the buy box whose price, schema and checkout all read from one entry.

Questions

Can a digital product use Product schema?

Yes. schema.org Product with an Offer describes anything sold, physical or not. For software there is also SoftwareApplication, which some sites use alongside or instead of Product.

Search Console warns about shippingDetails. Does it matter?

Missing shipping and return fields show as warnings for merchant listings, not errors. For a download there is nothing to ship; the page stays valid, and the warning can be left or answered with accurate return policy data.

What happens if the schema price differs from the page?

Google's guidelines require structured data to match what the visitor sees. A mismatch can cost you rich results, and it is the kind of error that appears when a price is typed in two places.

Or skip the afternoonand drop one in.