PERK-16 · PerkinElmer.com rebuild · Design foundation

Structured data design for the category and product templates

12 November 2026Sayan Mallick, SEO lead, AxelerantDraft for review

The structured data each of the two new templates outputs, and the content-model field each value comes from. It is the input the Build Standard's structured data section is waiting for, and the template tickets (PERK-31, PERK-32) build from it. Field names are the ones in the Build Standard, sections 2 and 3.

Category pagePage, breadcrumb and the list of instruments it shows
Product pagePage, breadcrumb and the product, with part number and specifications
CheckedAll four samples pass the Schema.org validator with no errors

What the live pages emit today

Every page on the existing Category Page type outputs the same single block: a CollectionPage whose only content is a two-item breadcrumb. Checked on 12 November on 11 chromatography pages, including the pages that are really product pages.

PageType emittedBreadcrumb in the markup
/category/chromatographyCollectionPagePerkinElmer › Chromatography Solutions: GC, LC & HPLC Systems
/category/gas-chromatographyCollectionPagePerkinElmer › Gas Chromatography
/category/liquid-chromatography-mass-spectrometry-lc-msCollectionPagePerkinElmer › QSight® 500 LC/MS/MS System
/category/clarus-nova-gc (a product)CollectionPagePerkinElmer › Clarus Nova GC system
/category/simplicitychrom-cds (a product)CollectionPagePerkinElmer › SimplicityChrom CDS Software

What that means for the design:

  • The breadcrumb is flat. It never shows the category level, so it does not match the new trail (Home › Chromatography › GC).
  • Product pages are typed as collections. There is no Product markup anywhere on www.
  • The page itself is not described. The block carries no name, description or image.
  • Nothing site-wide exists. The home page has no structured data, and no page has Open Graph tags.

The new templates keep the one thing the live pattern gets right, a single JSON-LD block per page built from page data, and replace the rest.

Rules for both templates

These apply to every page on the new Category and Product types.

  1. One block per page. A single <script type="application/ld+json"> holding one @graph. The new types must not also output today's CollectionPage block.
  2. In the page source. The block is in the HTML the server sends, not added by JavaScript after load.
  3. Every value comes from a field. Nothing is typed per page. The only fixed values are the ones listed below.
  4. Empty field, no property. If a field is empty, its property is left out. No empty strings and no placeholders. Software products have no part number, so they output no sku or mpn.
  5. Plain text only. HTML tags are stripped, entities decoded and line breaks collapsed before a value is output.
  6. Canonical URLs. Every URL is absolute, https, on www, with no trailing slash and no query string, and is the page's canonical URL.
  7. Stable identifiers. Each object's @id is the page URL plus a fixed suffix: #webpage, #breadcrumb, #listing, #product.
  8. The breadcrumb comes from the same data as the visible trail. The names and order in the markup are the names and order the visitor sees. The last item, the current page, carries no item URL, as Google's breadcrumb guidance allows.

Fixed values

ValueUsed for
PerkinElmerbrand.name on products
Home, https://www.perkinelmer.com/First breadcrumb item
eninLanguage, taken from the page's language

Category template

A category page outputs up to three objects: the page, its breadcrumb, and the list of instruments it shows.

ObjectPropertyComes fromOutput when
CollectionPageurl, @idThe page URL, generated from the Category fieldAlways
nameTitleAlways
descriptionMeta descriptionAlways
imageHero imageThe page has a hero image
inLanguagePage languageAlways
breadcrumbPoints to the BreadcrumbListAlways
mainEntityPoints to the ItemListThe page has an instrument listing
BreadcrumbListitemListElementCategory field: Home, then each level of the category tree, in orderAlways
each item's nameThe name shown in the visible trailAlways
each item's itemThat level's category page URLEvery item except the last
ItemListitemListElementThe products the Instrument listing section shows for this categoryThe page has an instrument listing
each item's name, urlThe product's Title and URLPer product
numberOfItemsCount of those productsWith the list
  • All products, not the first screen. The list holds every product the listing can show for the category, in its default A to Z order. Filters and paging do not change it.
  • Entry pages output no list. Chromatography Software and Chromatography Consumables have no instrument listing, so they output the page and the breadcrumb only.
  • Stat points, hero button, consumables link and page sections are not marked up. They have no matching schema property that search engines use.

Sample for Gas Chromatography. The image URL is illustrative; the other values are the Batch 1 values in the IA sheet.

/category/chromatography/gc
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "CollectionPage",
      "@id": "https://www.perkinelmer.com/category/chromatography/gc#webpage",
      "url": "https://www.perkinelmer.com/category/chromatography/gc",
      "name": "Gas Chromatography (GC)",
      "description": "PerkinElmer gas chromatography systems for volatile and semi-volatile compounds: Clarus Nova, Clarus 690 and Arnel analyzers for labs worldwide.",
      "image": "https://www.perkinelmer.com/sites/default/files/example/gc-hero.jpg",
      "inLanguage": "en",
      "breadcrumb": { "@id": "https://www.perkinelmer.com/category/chromatography/gc#breadcrumb" },
      "mainEntity": { "@id": "https://www.perkinelmer.com/category/chromatography/gc#listing" }
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://www.perkinelmer.com/category/chromatography/gc#breadcrumb",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.perkinelmer.com/" },
        { "@type": "ListItem", "position": 2, "name": "Chromatography", "item": "https://www.perkinelmer.com/category/chromatography" },
        { "@type": "ListItem", "position": 3, "name": "GC" }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://www.perkinelmer.com/category/chromatography/gc#listing",
      "numberOfItems": 4,
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Arnel petrochemical analyzers", "url": "https://www.perkinelmer.com/product/arnel-petrochemical-analyzers" },
        { "@type": "ListItem", "position": 2, "name": "Clarus 690 GC", "url": "https://www.perkinelmer.com/product/clarus-690" },
        { "@type": "ListItem", "position": 3, "name": "Clarus Nova GC", "url": "https://www.perkinelmer.com/product/clarus-nova" },
        { "@type": "ListItem", "position": 4, "name": "GC 2400 System", "url": "https://www.perkinelmer.com/product/gc-2400" }
      ]
    }
  ]
}

Product template

A product page outputs three objects: the page, its breadcrumb, and the product. Instruments and software use the same design; software simply has fewer fields filled.

ObjectPropertyComes fromOutput when
ItemPageurl, @idThe page URL, /product/{name}Always
nameTitleAlways
descriptionMeta descriptionAlways
inLanguagePage languageAlways
breadcrumbPoints to the BreadcrumbListAlways
mainEntityPoints to the ProductAlways
BreadcrumbListitemListElementMain category: Home, each level of that category's tree, then the productAlways
each item's nameThe name shown in the visible trailAlways
each item's itemThat level's category page URLEvery item except the last
ProductnameTitleAlways
descriptionShort descriptionAlways
imageImages: every image, as a list of URLsAlways
sku, mpnPart number, the same value in bothThe product has a part number
brandFixed: a Brand named PerkinElmerAlways
categoryMain category, written as its path, e.g. Chromatography > GCAlways
additionalPropertySpecifications: one PropertyValue per row, label as name, value as valueThe product has specifications
urlThe page URLAlways

What is left out, and why

  • No price or offer. Product pages carry no price; buying goes through Request a Quote. Markup must describe what is on the page, so there is no offers.
  • No ratings or reviews. The pages have none, and they must not be invented.
  • Also listed in, Applications, Resources, hero button, consumables link and page sections are not marked up. Applications could be added later as additionalProperty rows if PerkinElmer wants them exposed.

Sample for GC 2400 System. The short description, image URLs and specification row are illustrative, because they are read from the shop. The other values are the Batch 1 values in the IA sheet.

/product/gc-2400
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "ItemPage",
      "@id": "https://www.perkinelmer.com/product/gc-2400#webpage",
      "url": "https://www.perkinelmer.com/product/gc-2400",
      "name": "GC 2400 System",
      "description": "PerkinElmer GC 2400 System: smart, simplified, sustainable gas chromatography with a detachable touchscreen for industrial, environmental and pharma labs.",
      "inLanguage": "en",
      "breadcrumb": { "@id": "https://www.perkinelmer.com/product/gc-2400#breadcrumb" },
      "mainEntity": { "@id": "https://www.perkinelmer.com/product/gc-2400#product" }
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://www.perkinelmer.com/product/gc-2400#breadcrumb",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.perkinelmer.com/" },
        { "@type": "ListItem", "position": 2, "name": "Chromatography", "item": "https://www.perkinelmer.com/category/chromatography" },
        { "@type": "ListItem", "position": 3, "name": "GC", "item": "https://www.perkinelmer.com/category/chromatography/gc" },
        { "@type": "ListItem", "position": 4, "name": "GC 2400" }
      ]
    },
    {
      "@type": "Product",
      "@id": "https://www.perkinelmer.com/product/gc-2400#product",
      "url": "https://www.perkinelmer.com/product/gc-2400",
      "name": "GC 2400 System",
      "description": "Example short description, as read from the shop for this product.",
      "image": [
        "https://www.perkinelmer.com/sites/default/files/example/gc-2400-1.jpg",
        "https://www.perkinelmer.com/sites/default/files/example/gc-2400-2.jpg"
      ],
      "sku": "N6400000",
      "mpn": "N6400000",
      "brand": { "@type": "Brand", "name": "PerkinElmer" },
      "category": "Chromatography > GC",
      "additionalProperty": [
        { "@type": "PropertyValue", "name": "Technology Type", "value": "GC" }
      ]
    }
  ]
}

Validation

The markup is checked on UAT before PerkinElmer's QA, on four pages that between them cover every case: one category page with a listing, one entry page, one instrument and one software product.

CheckHowPass when
One block, in the sourceView the page source with JavaScript offExactly one JSON-LD block, and no old CollectionPage-only block
Valid schemaPaste the block into the Schema.org validatorNo errors and no warnings
Values match the fieldsCompare each property with the page's fields, using the tables aboveEvery value matches; no hand-typed values
Empty fieldsSoftware product, entry page, a page with no hero imageNo sku, mpn or additionalProperty; no ItemList; no image
BreadcrumbCompare the markup with the visible trailSame names, same order; last item has no URL
Google's viewPaste the block into the Rich Results TestBreadcrumbs detected and valid

UAT is not public, so both tools are used in paste-code mode. After go-live the same checks are repeated on the live URLs, and the Breadcrumbs report in Search Console is watched for the new pages.

Results on the samples in this document, 12 November

The design itself was run through both tools before build, using the two samples above plus two variants: a software product and an entry page.

SampleSchema.org validatorGoogle Rich Results Test
Category page with listing
Gas Chromatography
0 errors, 0 warningsBreadcrumbs valid
Instrument
GC 2400 System
0 errors, 0 warningsBreadcrumbs valid Product snippets invalid
Software product
SimplicityChrom CDS
0 errors, 0 warningsNot run
Entry page
Chromatography Software
0 errors, 0 warningsNot run

These results cover the design. The built pages still need the checks in the first table, because they test the wiring to the fields.

What to expect from Google's tools on product pages

Google shows a product rich result only when the markup has a price, a review or a rating, and these pages have none (Google's product snippet rules). The Rich Results Test confirms it on the GC 2400 sample: the product item is reported invalid with one critical issue, "Either offers, review, or aggregateRating should be specified".

Expect the Product snippets report in Search Console to list the product pages the same way after go-live. That is the known result of this design and not a build defect.

What the markup delivers

The breadcrumb trail in Google's desktop results, and product facts (name, part number, brand, category, specifications) that search engines and AI systems can read without parsing the page.

It does not deliver price or star snippets. A product list is not one of the list types Google shows as a carousel, so the ItemList produces no visible feature either.

Points to confirm

For Kalai, before PERK-31 and PERK-32 build from this.

  1. Breadcrumb names. The IA sheet uses short names (Home › Chromatography › GC › GC 2400). The Build Standard says the Title feeds the last item, and its example uses long names (Gas Chromatography › GC 2400 System). The markup follows whatever the visible trail shows, so this needs settling once, in PERK-27. The samples above use the IA sheet's names.
  2. A crumb with no page. Software has no page yet, so the IA sheet shows it as plain text. Google needs a URL on every item except the last, so the recommendation is to leave that crumb out of the markup and keep it in the visible trail.
  3. The full instrument list. The ItemList needs every product for the category, whatever the paging and filters show. If that is costly to build, drop the ItemList; nothing Google shows depends on it.
  4. Product markup with no price. Google's tools will flag it, as described under Validation. The recommendation is to keep it and tell PerkinElmer in advance, so a Search Console notice is not read as a fault.
  5. Where today's block comes from. The current CollectionPage block must not appear on the new types. Pages staying on the old type, such as Mass Spectrometry and Hyphenated Technology, keep it unchanged.

Outside the two templates

Not part of PERK-16; noted so they are not lost.

  • FAQ markup is left out. Google retired FAQ rich results in May 2026, so FAQPage markup would show nothing in Google. It can be added later from the FAQ section if PerkinElmer wants it for other search engines.
  • Organization and WebSite markup. The home page has none. It belongs site-wide, once, and would let the product brand point to a single PerkinElmer entity.
  • Open Graph tags. No page has them today. The Build Standard already says the meta title and description feed social sharing, so the templates should output og:title, og:description and og:image from those fields and the hero or first product image.