Link Product Schema to Gallery Content

On product detail pages (PDPs), you can link gallery product references to your existing Product schema using the canonical and productId parameters. This enables search engines and AI crawlers to merge your product details with gallery UGC into unified rich results.


📗

The canonical and productId parameters are only required for PDP pages. Homepage and category pages do not need these parameters.

How It Works

The canonical parameter acts as a unique identifier (@id) that connects your Product schema with gallery product references. When a gallery item's tagged product matches the productId, the API injects the @id field using your canonical URL.

Sample Request

curl --location 'https://edge.curalate.com/v1/structured-data/content?q={"galleries":[{"dataSourceId":"aBcDeFgHiJkLmNoP","filter":"productId:PRD-12345"}]}&locale=en_US&canonical=https://www.example.com/products/hydra-glow-moisturizer%23product&productId=PRD-12345' \
--header 'Accept: text/javascript' \
--header 'User-Agent: Java-http-client/17.0.7' \
--header 'Bv-Forwarded-User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.1; +https://openai.com/gptbot'

Sample Response

The gallery response includes @id on matching products:

<script type="application/ld+json" id="bv-geo-jsonld-gallery-1-data">
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "name": "Visual Gallery",
  "numberOfItems": 10,
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "item": {
        "@type": "ImageObject",
        "name": "Summer essential found",
        "description": "Summer essential found. This lightweight moisturizer is perfect for hot days!",
        "contentUrl": "https://edge.curalate.com/v1/img/MnOpQrStUvWxYz123456=",
        "about": [
          {
            "@type": "Thing",
            "@id": "https://www.example.com/products/hydra-glow-moisturizer#product",
            "name": "Hydra Glow Lightweight Moisturizer SPF 30",
            "url": "https://www.example.com/products/hydra-glow-moisturizer"
          }
        ]
      }
    }
  ]
}
</script>

Your Product Schema

Your existing Product schema on the same page should use the same @id:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "@id": "https://www.example.com/products/hydra-glow-moisturizer#product",
  "name": "Hydra Glow Lightweight Moisturizer SPF 30",
  "image": "https://www.example.com/images/hydra-glow.jpg",
  "description": "Lightweight daily moisturizer with SPF 30 protection.",
  "brand": {
    "@type": "Brand",
    "name": "Example Beauty"
  },
  "offers": {
    "@type": "Offer",
    "price": "42.00",
    "priceCurrency": "USD"
  }
}
</script>

When both schemas share the same @id, search engines and AI crawlers merge them into a single entity — your product with its associated gallery UGC.


Did this page help you?