Takazudo Modular Docs

Type to search...

to open search from anywhere

JSON-LD Structured Data (EN)

How JSON-LD structured data (schema.org) works on product pages

JSON-LD Structured Data

What is JSON-LD?

JSON-LD is a data format for communicating page content to search engines in a machine-readable way. Separately from the visual HTML, it conveys meaning like “this page is a product page”, “this is the price”, and “this is the availability status”.

The shared vocabulary used for this is schema.org. schema.org defines types like Product, Article, and BreadcrumbList, which search engines like Google read to understand page content.

From an SEO perspective, adding JSON-LD can:

  • Help Google understand product pages as product listings
  • Enable price and availability to appear as product snippets in search results
  • Reflect breadcrumb navigation in search results
  • Help article pages be recognized as Article content

In practice, JSON-LD is embedded in HTML like this:

<script type="application/ld+json">
  { ...JSON data... }
</script>

This is not displayed on the page. It’s “description data” for search engines, not for users.

JSON-LD Types Used on This Site

Takazudo Modular uses four main types:

TypeTarget PagesMain Content
ProductProduct detail pagesName, price, availability, image, brand, shipping, return policy
ItemListProduct listing pageProduct list (position, name, URL, image)
BreadcrumbListAll pagesBreadcrumb navigation hierarchy
ArticleArticle and guide pagesTitle, description, publish date, author

Product JSON-LD Details

Product is the most important type on this site. It tells Google “this page is a product page with sales information”.

Basic Fields

FieldContent
nameProduct name
urlCanonical product page URL
descriptionProduct description (optional)
imageProduct image URL (/images/p/{slug}/1200w.webp)
brandBrand name (Brand type)

Images are converted to absolute URLs even when passed as relative paths.

Offers

For products with a price, an offers block is output. This is especially important for “price” and “availability” in search results.

The offers block is only output when price exists. Products without a price will not have offers at all.

Availability Mapping

Availability is derived from mercariStatus:

mercariStatusOutput availabilityMeaning
Not set / otherhttps://schema.org/InStockIn stock
soldhttps://schema.org/OutOfStockSold out
discontinuedhttps://schema.org/OutOfStockDiscontinued
unavailablehttps://schema.org/OutOfStockUnavailable
incominghttps://schema.org/PreOrderComing soon / pre-order

Seller

The seller is fixed as Takazudo Modular.

Shipping Details

Shipping information is output for domestic Japan delivery:

ItemValue
Destination countryJP
Shipping rate0 JPY (included in product price)
Handling time1-3 business days
Transit time1-3 business days

For PreOrder (pre-order) items, the entire shippingDetails block is omitted. Pre-order items are not ready to ship yet, so including delivery timeframes would be inaccurate. Google’s structured data spec also requires deliveryTime whenever shippingDetails is present, so omitting the whole block is the correct way to signal “not yet shippable” — availability: PreOrder already conveys that to consumers.

Return Policy

The return policy is “no returns”:

{
  "@type": "MerchantReturnPolicy",
  "applicableCountry": "JP",
  "returnPolicyCategory": "https://schema.org/MerchantReturnNotPermitted"
}

Output Example

Here is a realistic Product JSON-LD output example from this site:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "ADDAC107 T-Networks",
  "url": "https://takazudomodular.com/products/addac107-t-networks-intro/",
  "description": "ADDAC107 T-Networks is a Eurorack module featuring 3 twin-peak filters.",
  "image": "https://takazudomodular.com/images/p/addac107/1200w.webp",
  "brand": {
    "@type": "Brand",
    "name": "ADDAC System"
  },
  "offers": {
    "@type": "Offer",
    "price": 27800,
    "priceCurrency": "JPY",
    "availability": "https://schema.org/InStock",
    "seller": {
      "@type": "Organization",
      "name": "Takazudo Modular"
    },
    "shippingDetails": {
      "@type": "OfferShippingDetails",
      "shippingDestination": {
        "@type": "DefinedRegion",
        "addressCountry": "JP"
      },
      "shippingRate": {
        "@type": "MonetaryAmount",
        "value": 0,
        "currency": "JPY"
      },
      "deliveryTime": {
        "@type": "ShippingDeliveryTime",
        "handlingTime": {
          "@type": "QuantitativeValue",
          "minValue": 1,
          "maxValue": 3,
          "unitCode": "DAY"
        },
        "transitTime": {
          "@type": "QuantitativeValue",
          "minValue": 1,
          "maxValue": 3,
          "unitCode": "DAY"
        }
      }
    },
    "hasMerchantReturnPolicy": {
      "@type": "MerchantReturnPolicy",
      "applicableCountry": "JP",
      "returnPolicyCategory": "https://schema.org/MerchantReturnNotPermitted"
    }
  }
}

For pre-order items (incoming), availability becomes PreOrder and the entire shippingDetails block is omitted.

ItemList

ItemList is used on the product listing page. It tells search engines “this page contains multiple products in an ordered list”.

Each product includes:

FieldContent
positionOrder in the list
nameProduct name
urlProduct detail page URL
imageOGP image URL

Only products with a detailHref are included.

BreadcrumbList is structured data for breadcrumb navigation. It communicates page hierarchy to search engines.

Example hierarchy for product pages:

  1. Home
  2. Brands
  3. Brand name
  4. Product name

For regular article pages, breadcrumbs are auto-generated by the component, with categories included as needed.

Article

Article is used for article and guide pages.

FieldContent
headlineArticle title
descriptionArticle description
imageOGP / hero image
datePublishedPublish date
dateModifiedLast modified date
authorTakazudo
publisherTakazudo Modular

The schemaType defaults to Article but can also be set to WebPage or AboutPage.

How to Verify

Google Rich Results Test

Enter a URL in the Rich Results Test to check:

  • Whether JSON-LD is correctly parsed
  • Whether the page is recognized as a Product
  • Whether price, availability, and image have no errors
  • Whether any required fields are missing

Google Search Console

Search Console shows how Google actually interprets your structured data:

  • Whether product pages are recognized as rich result candidates
  • Whether there are any errors or warnings
  • Whether structured data is correctly ingested after crawling

The recommended approach: first verify individual pages with Rich Results Test, then check site-wide status in Search Console.

Component Files

FilePurpose
src/astro/components/shared/product-json-ld.astroProduct structured data
src/astro/components/shared/product-list-json-ld.astroItemList structured data
src/astro/components/shared/breadcrumb-json-ld.astroBreadcrumbList structured data
src/astro/components/shared/article-json-ld.astroArticle structured data

Calling pages:

FilePurpose
src/astro/pages/products/[slug].astroProduct detail page (JA)
src/astro/pages/en/products/[slug].astroProduct detail page (EN)
src/astro/pages/products/index.astroProduct listing page
src/astro/pages/notes/[slug].astroArticle page

Summary

  • JSON-LD is “description data for search engines”
  • Invisible on-page but important for SEO
  • Product is the most important type for product pages
  • Price, availability, shipping, and return policy are explicitly declared
  • Availability is automatically mapped from mercariStatus
  • Pre-order items intentionally omit delivery timeframes
  • Use Rich Results Test and Search Console to verify