Product catalog schema.org markup

eCommerce Product Catalog can add schema.org Product structured data to each product page, so search engines can show your product name, image and price in the search results.

Enable product structured data

The markup is disabled by default. To turn it on, go to Products > Settings > General Settings, find the SEO Settings section, check Enable Structured Data and save the settings.

The data is added as JSON-LD in the page head. It is shown only on product pages that have a price, because search engines need a price for the product offer. If you disable prices in your catalog, no product structured data is added.

After you enable it, test a product page with Google’s Rich Results Test and check the reports in Google Search Console.

What the markup includes

  • Product: name, main image, short description (as plain text), SKU and MPN. If the product has no SKU or MPN, or these fields are disabled, the product ID is used instead.
  • Offer: product URL, price, currency, condition (new), availability (in stock) and a price valid for one year.
  • Seller: your site name.

Extensions can add more data. For example, Reviews Plus adds the product rating.

Breadcrumbs markup is separate. It is added by the Enable Catalog Breadcrumbs option in the Breadcrumbs Settings section.

Customize the structured data

The markup comes from the template file templates/template-parts/product-page/structured-data.php in the plugin folder. To change it, copy this file to the implecode folder in your theme: your-theme/implecode/structured-data.php. Your copy is used instead of the original and is not lost when the plugin updates. See custom product page template for more about template files.

You can also add properties without copying the template. Use these actions:

  • ic_structured_data: adds product properties
  • ic_structured_data_offers: adds offer properties
  • ic_structured_data_seller: adds seller properties

Each action receives the product ID. Print JSON properties followed by a comma (in ic_structured_data_seller, start with a comma instead), for example:

add_action( 'ic_structured_data', 'my_product_brand_schema' );
function my_product_brand_schema( $product_id ) {
	echo '”brand”: { “@type”: “Brand”, “name”: “My Brand” },';
}