Loading
Upcoming Mandatory Changes to Public Key Infrastructure (PKI)Read More
Salesforce Enforces New Security Requirements in Summer 2026Read More
Get Started with B2C Commerce
Table of Contents
Select Filters

          No results
          No results
          Here are some search tips

          Check the spelling of your keywords.
          Use more general search terms.
          Select fewer filters to broaden your search.

          Search all of Salesforce Help
          JSON-LD Examples by Scope

          JSON-LD Examples by Scope

          Use these B2C Commerce JSON-LD templates as starting points for each page meta tag scope.

          You can create a JSON-LD rule in any scope that page meta tags support. Each scope exposes different data to your ${...} tokens. Enter tokens without surrounding quotation marks; B2C Commerce quotes each resolved value as a JSON string. For the complete list of objects and operators available in each scope, see Meta Tag Syntax.

          Scope Pages Available data
          Product Detail Page Product detail pages (PDP) Product, ProductPrice, ProductImageURL, Category, Site
          Product Listing Page Category and product listing pages (PLP) Category, search refinements, Site
          Content Detail Page Content detail pages (CDP) Content, Folder, Site
          Content Listing Page Content folder and listing pages (CLP) Folder, Site
          Home Page Site home page Site

          These examples use common Schema.org types with a few product, category, content, and site attributes. Adjust the attributes to match your catalog and content, and validate the output.

          Product Detail Page

          Emit a Product for the product on the page.

          {
              "@context": "https://schema.org",
              "@type": "Product",
              "name": ${Product.name},
              "brand": ${Product.brand},
              "offers": {
                  "@type": "Offer",
                  "price": ${ProductPrice.min},
                  "priceCurrency": ${ProductPrice.currency}
              }
          }

          Product Listing Page

          Emit a CollectionPage for the category. A rule resolves against a single object, so you can't list each product on the page—describe the category instead.

          {
              "@context": "https://schema.org",
              "@type": "CollectionPage",
              "name": ${Category.displayName},
              "url": ${OriginalRequestURL}
          }

          Content Detail Page

          Emit an Article, or another appropriate type, for the content asset on the page.

          {
              "@context": "https://schema.org",
              "@type": "Article",
              "headline": ${Content.name},
              "url": ${OriginalRequestURL}
          }

          Content Listing Page

          Emit a CollectionPage for the content folder.

          {
              "@context": "https://schema.org",
              "@type": "CollectionPage",
              "name": ${Folder.displayName},
              "url": ${OriginalRequestURL}
          }

          Home Page

          Emit a WebSite for your storefront.

          {
              "@context": "https://schema.org",
              "@type": "WebSite",
              "name": ${Site.displayName},
              "url": ${OriginalRequestURL}
          }

          Fallbacks with Operators

          B2C Commerce omits the entire block if the resolved content isn't valid JSON. Use the ELSE operator to fall back to a value that's always present when a token can resolve empty. A product's localized name can be empty in some locales, but its ID is always set, so Product.ID is a safe fallback for the name:

          {
              "@context": "https://schema.org",
              "@type": "Product",
              "name": ${Product.name ELSE Product.ID},
              "offers": {
                  "@type": "Offer",
                  "price": ${ProductPrice.min},
                  "priceCurrency": ${ProductPrice.currency}
              }
          }

          Choose a fallback that's accurate data. Don't substitute a placeholder, such as a constant brand name, unless you are sure it's correct in all cases. Operators substitute a value, but they don't remove a whole "key": value line and its trailing comma, so for a field that's genuinely optional, leave it out of the template rather than fabricating a value.

           
          Loading
          Salesforce Help | Article