E-commerce

A product page that ranks: content, Product schema and duties

A product page ranks with its own content, real price and availability, and valid Product schema. Structure, price and safety duties, variants and real blocks.

A product page ranks when it holds something nobody else publishes: your own photos, measurements, materials, real availability and the full price. The description copied from the supplier is the reason the page never surfaces.

The page answers three different searches: the exact product name, the category it belongs to, and the problem it solves. One block of text covers none of them, but the page can with a title, specifications and a short question section. Without content of your own, no structured data compensates.

The structure that holds

BlockContentTypical mistake
H1Product name as customers search for itInternal code or model name
ImagesYour own photos, at least three, with width and height declaredSupplier image only
SpecificationsMeasurements, materials, compatibility, weightMarketing text with no data
PricePrice with taxes and delivery costsPrice that changes at checkout
AvailabilityReal state and quantity, kept currentStatic "in stock"
VariantsSelectors on the same pageOne page per combination
Delivery and returnsTerm, costs, 14 daysPointer to the terms page
QuestionsThree or four FAQs on use and compatibilityNone
Structured dataProduct with offers, price, availabilityProduct without offers

Product structured data

The JSON-LD block with type Product declares name, image, description, sku, brand, gtin or mpn, and an offers object with price, priceCurrency, availability, itemCondition, shippingDetails and hasMerchantReturnPolicy. Google asks for those fields for product results and Merchant Center listings, as the documentation read on 1 November 2026 states. A Product without offers produces nothing: price and availability are the data that matters. The step-by-step detail is in how to add schema markup.

Price, availability and duties

Directive 2011/83/EU, article 6(1)(e), requires the total price including taxes and delivery costs, or a statement that they may be payable, before the order: a page showing 29.90 euro and adding 6.90 at checkout breaks the rule and loses the order. Since 13 December 2024, Regulation (EU) 2023/988 on general product safety requires, for distance sales, the name and address of the manufacturer and of the responsible person in the Union: those are lines inside the page. An out-of-stock product keeps its address and becomes "out of stock, notify me": a 404 throws away the page history.

# la scheda dichiara un Product con un'offerta?
curl -s https://www.esempio.it/prodotti/tazza-ceramica | grep -o '"@type":"Product"'
curl -s https://www.esempio.it/prodotti/tazza-ceramica | grep -o '"price":"[^"]*"'

# prezzo e disponibilità sono nell'HTML iniziale?
curl -s https://www.esempio.it/prodotti/tazza-ceramica | grep -o '"availability":"[^"]*"'

# la scheda ha un canonical proprio
curl -s https://www.esempio.it/prodotti/tazza-ceramica | grep -o '<link rel="canonical" href="[^"]*"'

Blocks from the catalogue

A grid gallery from Shadcn Space for the photos, the table category with 13 blocks for specifications, the faq category with 24 blocks for compatibility questions, and CTA 01 from Shadcn UI Blocks for the restock notice. The licence is the one the publisher declares on the record, check it before use.

Variants and duplicates

One page per variant pays only when that variant has searches of its own: "ceramic mug 350 ml" yes, "ceramic mug 350 ml blue" almost never. Otherwise keep one page with selectors and a canonical pointing at itself. Pages generated for every combination are duplicates that burn crawl budget: a few complete pages beat three hundred empty ones.

The limitation to state

Structured data does not improve content: if the page is the supplier description copied over, markup will not surface it. Product results with a price need consistent data and a Merchant Center account. The EneUI catalogue holds no product data layer, only interface components, and photos have to be shot, not downloaded.

Where to continue

Structured data step by step is in how to add schema markup, the text shown in the result in a meta description that works, the whole shop in creating an ecommerce site. If the choice is between a platform and components, the comparison is in WordPress, Wix or React components.

Frequently asked questions

What makes a product page indexable?

Content nobody else publishes, a title using the name customers search for, and price and availability present in the HTML. If the price arrives only through JavaScript and the text is the supplier description, the page has little to tell a search engine.

Which fields belong in Product schema?

name, image, description, sku, brand and an offers object with price, priceCurrency and availability. Merchant Center listings also need gtin or mpn. A Product without offers produces no results, because price is the data the engine looks for.

One page per variant or one page with selectors?

One page with selectors, except when the variant has searches of its own. Every separate variant multiplies duplicates and burns crawl budget. If variants exist as pages, each needs its own content and a canonical pointing at itself.

What should happen to an out-of-stock product?

Keep the address and show "out of stock, notify me", with availability set to OutOfStock. A 404 loses the page history and the links pointing at it. If the product never returns, redirect to the category with a 301.

Must the price include shipping?

Yes, where it can be calculated: the rule asks for the total price with taxes and delivery costs, or a statement that they may be payable. If shipping depends on the country, state the rule and the minimum cost instead of revealing it at checkout.