E-Commerce

BigCommerce Schema: Product, FAQ, Breadcrumb

F
Faris Khalil
Apr 16, 2026
19 min read

Google’s rich results depend on structured data. Without it, your BigCommerce product pages show plain blue links in search results. With it, they show star ratings, prices, stock status, and breadcrumb trails. The difference in click-through rate runs between 25% and 40%, depending on the SERP and the schema types you deploy.

BigCommerce’s Stencil framework ships with some built-in schema markup, but it’s incomplete. The default Product schema omits brand, gtin, mpn, and aggregateRating in most themes. Category pages have zero FAQ support. Breadcrumb schema is either missing or broken on custom templates. If you’re running a BigCommerce store and relying on the theme defaults, you’re leaving rich results on the table.

This guide covers every schema type a BigCommerce store needs: Product, FAQ, BreadcrumbList, Organization, LocalBusiness, and Review. Every section includes production-ready JSON-LD code blocks you can copy directly into your theme. We’ve deployed these patterns across dozens of stores through our BigCommerce development work, and the implementation details here reflect what actually works in Google’s rendering pipeline.

If you’re building out a broader SEO strategy alongside structured data, our BigCommerce SEO guide covers the full picture.

Why Structured Data Matters for BigCommerce Stores

Structured data tells search engines exactly what’s on a page. Product schema says “this page sells a specific item at a specific price from a specific brand.” FAQ schema says “this page answers these exact questions.” Without that explicit declaration, Google guesses. Google’s guesses are often wrong.

Rich results drive measurable business outcomes. A product listing with star ratings, price, and “In Stock” pulls more clicks than a plain listing every time. Breadcrumb trails in SERPs help users understand site hierarchy before they click. FAQ rich results expand your SERP real estate, pushing competitors further down the page.

BigCommerce stores compete against Shopify, WooCommerce, and custom builds. Shopify’s app ecosystem makes schema easy to bolt on. WooCommerce has Yoast and RankMath generating schema automatically. BigCommerce store owners need to handle schema at the theme level, which gives you more control but requires more technical work. That control is an advantage when you use it correctly.

The core BigCommerce SEO fundamentals still apply: crawlability, site speed, internal linking, and content. Structured data amplifies all of it by translating on-page content into a format Google can consume without ambiguity.

Product Schema: Full JSON-LD Implementation

Google recommends JSON-LD for all structured data. BigCommerce’s Stencil themes support JSON-LD injection through Handlebars templates. The default Cornerstone theme includes a basic Product schema, but it skips fields that Google explicitly recommends for rich result eligibility.

Here’s the complete Product schema with every recommended field. This block covers brand, gtin, sku, mpn, aggregateRating, and an Offer object with priceCurrency, price, availability, and itemCondition:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Heavy-Duty Industrial Caster Wheel 6-Inch",
  "image": [
    "https://cdn11.bigcommerce.com/s-abc123/images/stencil/1280x1280/products/450/1200/caster-wheel-main__55412.jpg",
    "https://cdn11.bigcommerce.com/s-abc123/images/stencil/1280x1280/products/450/1201/caster-wheel-side__55413.jpg"
  ],
  "description": "6-inch polyurethane industrial caster wheel rated for 1,200 lbs. Precision ball bearings, zinc-plated yoke, swivel lock.",
  "sku": "CW-6IN-HD-PU",
  "mpn": "CW6HDPU-2024",
  "gtin13": "0012345678901",
  "brand": {
    "@type": "Brand",
    "name": "CasterPro"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "83"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/heavy-duty-caster-wheel-6-inch/",
    "priceCurrency": "USD",
    "price": "34.95",
    "priceValidUntil": "2026-12-31",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "seller": {
      "@type": "Organization",
      "name": "Industrial Supply Co."
    }
  },
  "review": {
    "@type": "Review",
    "reviewRating": {
      "@type": "Rating",
      "ratingValue": "5",
      "bestRating": "5"
    },
    "author": {
      "@type": "Person",
      "name": "Mike R."
    },
    "reviewBody": "Solid build quality. Handles heavy loads on concrete floors without any wobble."
  }
}
</script>

A few critical details. The price value must be a number as a string, not formatted with dollar signs. The availability field uses full Schema.org URLs, not short strings. Google will reject “InStock” but accept “https://schema.org/InStock”. The priceValidUntil field is required if you want price shown in rich results. Set it to a future date and update it periodically.

For stores with product variants, each variant needs its own Offer object. Wrap them in an array:

"offers": [
  {
    "@type": "Offer",
    "priceCurrency": "USD",
    "price": "34.95",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "sku": "CW-6IN-HD-PU-BLK",
    "name": "Black"
  },
  {
    "@type": "Offer",
    "priceCurrency": "USD",
    "price": "36.95",
    "availability": "https://schema.org/OutOfStock",
    "itemCondition": "https://schema.org/NewCondition",
    "sku": "CW-6IN-HD-PU-RED",
    "name": "Red"
  }
]

When a variant is out of stock, mark it OutOfStock individually. Don’t mark the entire product unavailable because one SKU is gone. Google handles multi-offer products correctly and will show the lowest available price in rich results. For more on optimizing your product pages beyond schema, see our BigCommerce product page SEO guide.

Stencil Handlebars Injection Method

Theme-level injection is the correct approach for BigCommerce schema. It outputs JSON-LD directly in the HTML source, which means Google sees it on the first crawl without executing JavaScript. This matters for crawl budget, rendering queue delays, and validation tool consistency.

Open your theme files. Navigate to templates/layout/base.html. This is the master layout file that wraps every page on the store. Schema injected here appears on every page load.

Use the {{inject}} Handlebars helper to pass data from Stencil’s context into a JSON-LD block. Here’s how to build dynamic Product schema that pulls real product data:

{{#if product}}
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "{{product.title}}",
  "image": "{{getImage product.main_image 'product_size'}}",
  "description": "{{stripTags product.description}}",
  "sku": "{{product.sku}}",
  "mpn": "{{product.mpn}}",
  {{#if product.brand}}
  "brand": {
    "@type": "Brand",
    "name": "{{product.brand.name}}"
  },
  {{/if}}
  {{#if product.num_reviews}}
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "{{product.rating}}",
    "reviewCount": "{{product.num_reviews}}"
  },
  {{/if}}
  "offers": {
    "@type": "Offer",
    "url": "{{product.url}}",
    "priceCurrency": "{{currency_selector.active_currency_code}}",
    "price": "{{product.price.without_tax.value}}",
    "priceValidUntil": "2026-12-31",
    {{#if product.availability}}
    "availability": "https://schema.org/InStock",
    {{else}}
    "availability": "https://schema.org/OutOfStock",
    {{/if}}
    "itemCondition": "https://schema.org/NewCondition"
  }
}
</script>
{{/if}}

The {{#if product}} conditional ensures this block only renders on product pages, not on category or content pages. The {{product.price.without_tax.value}} variable outputs the raw numeric price. Don’t use {{product.price.without_tax.formatted}}, because that includes the currency symbol and Google rejects it.

The {{stripTags}} helper removes HTML from the product description. JSON-LD doesn’t support HTML entities inside string values. Without stripping tags, you’ll get validation errors from escaped angle brackets and ampersands.

For the image field, use the {{getImage}} helper with a named image size from your theme’s config.json. The product_size dimension is typically 1280×1280, which meets Google’s minimum image requirements for rich results.

After editing the template, run stencil bundle and upload the updated theme through Storefront > My Themes in the BigCommerce admin panel. You can also push changes with stencil push if you have the CLI configured against your store’s API credentials.

Script Manager Alternative and Its Limitations

BigCommerce’s Script Manager lives at Storefront > Script Manager in the admin panel. It lets you inject JavaScript snippets on specific page types without editing theme files. Some agencies use it to add JSON-LD schema through a JavaScript-generated script tag. This works, but with caveats.

Script Manager injects code via JavaScript execution. The browser runs the script, which creates a <script type="application/ld+json"> element and appends it to the DOM. Google’s crawler renders JavaScript, so it can see the schema. The data gets indexed. Rich results appear. From a purely functional standpoint, it works.

Here’s a typical Script Manager implementation:

<script>
(function() {
  var schema = {
    "@context": "https://schema.org",
    "@type": "Product",
    "name": document.querySelector('[data-product-title]').textContent,
    "image": document.querySelector('.productView-image img').src,
    "offers": {
      "@type": "Offer",
      "priceCurrency": "USD",
      "price": document.querySelector('[data-product-price]').getAttribute('content'),
      "availability": "https://schema.org/InStock"
    }
  };
  var el = document.createElement('script');
  el.type = 'application/ld+json';
  el.textContent = JSON.stringify(schema);
  document.head.appendChild(el);
})();
</script>

The problem shows up during validation. Google’s Rich Results Test has two tabs: “HTML” and “rendered HTML.” Schema injected through Script Manager only appears in the “rendered HTML” tab. Schema injected at the theme level appears in both tabs. When you share a Rich Results Test result with a client or a colleague, the “HTML” tab showing no schema creates confusion and unnecessary troubleshooting.

There’s a reliability concern too. JavaScript-generated schema depends on DOM selectors. If your theme updates and a class name or data attribute changes, the schema breaks silently. No errors in the console. No warnings in BigCommerce. Just missing rich results that you might not notice for weeks.

Theme-level injection through Stencil Handlebars avoids both problems. The schema is in the raw HTML. Validation tools see it immediately. No DOM dependency. No rendering delay. Use Script Manager only when you don’t have theme file access, such as when a client’s contract restricts theme modifications.

FAQ Schema on Category Pages

BigCommerce doesn’t support FAQ sections on category pages out of the box. The category page template in Cornerstone renders the category name, description, subcategories, and product grid. There’s no FAQ field in the BigCommerce admin for categories. You need a custom Stencil partial to add FAQ content and its corresponding schema.

Create a new partial at templates/components/category/faq.html. This file holds both the visible FAQ content and the JSON-LD markup:

<div class="category-faq">
  <h2>Frequently Asked Questions</h2>

  <div class="faq-item">
    <h3>What load capacity do your industrial casters support?</h3>
    <p>Our industrial caster range covers load capacities from 200 lbs per caster up to 5,000 lbs per caster. The product listing for each model specifies its rated capacity, wheel diameter, and recommended floor type.</p>
  </div>

  <div class="faq-item">
    <h3>Do you offer bulk pricing for caster orders over 100 units?</h3>
    <p>Yes. Orders of 100 units or more qualify for tiered bulk pricing. Contact our sales team or request a quote through the product page for exact pricing on your specific model and quantity.</p>
  </div>

  <div class="faq-item">
    <h3>Can I use polyurethane casters on epoxy-coated warehouse floors?</h3>
    <p>Polyurethane wheels perform well on epoxy-coated floors. They won't mark or scratch the surface and provide better traction than nylon or hard rubber alternatives. For extremely smooth epoxy finishes, consider the non-marking gray polyurethane option.</p>
  </div>
</div>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What load capacity do your industrial casters support?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Our industrial caster range covers load capacities from 200 lbs per caster up to 5,000 lbs per caster. The product listing for each model specifies its rated capacity, wheel diameter, and recommended floor type."
      }
    },
    {
      "@type": "Question",
      "name": "Do you offer bulk pricing for caster orders over 100 units?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes. Orders of 100 units or more qualify for tiered bulk pricing. Contact our sales team or request a quote through the product page for exact pricing on your specific model and quantity."
      }
    },
    {
      "@type": "Question",
      "name": "Can I use polyurethane casters on epoxy-coated warehouse floors?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Polyurethane wheels perform well on epoxy-coated floors. They won't mark or scratch the surface and provide better traction than nylon or hard rubber alternatives. For extremely smooth epoxy finishes, consider the non-marking gray polyurethane option."
      }
    }
  ]
}
</script>

Include this partial in your category template at templates/pages/category.html by adding {{> components/category/faq}} after the product grid. The FAQ content displays below the products, and the FAQPage schema renders in the page source.

One thing to understand about this approach: the FAQ content is hardcoded in the template. If you run 50 categories, you don’t want 50 different partial files. A better pattern for stores with many categories is to store FAQ content in BigCommerce’s custom fields or a headless CMS, then loop through the data dynamically. For a store with 5 to 10 key categories, hardcoded partials work fine and keep the implementation simple.

FAQ schema on category pages is particularly effective for B2B stores. Wholesale buyers search with specific questions about MOQs, bulk pricing, and compatibility. Capturing those queries with FAQ rich results brings high-intent traffic directly to category pages. Our BigCommerce B2B SEO guide covers more strategies for ranking wholesale portals.

Google uses BreadcrumbList schema to display breadcrumb trails in search results instead of raw URLs. Instead of showing example.com/industrial-casters/heavy-duty-6-inch/, the SERP displays Home > Industrial Casters > Heavy Duty 6-Inch. It’s a small visual improvement that significantly increases click confidence.

BigCommerce’s Cornerstone theme renders visual breadcrumbs on product and category pages. But visual breadcrumbs and schema breadcrumbs are separate things. The HTML breadcrumb navigation doesn’t automatically generate BreadcrumbList JSON-LD. You need to add it explicitly.

Add this to your templates/layout/base.html file. The conditional checks ensure it only renders where breadcrumb data exists:

{{#if breadcrumbs}}
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {{#each breadcrumbs}}
    {
      "@type": "ListItem",
      "position": {{@index_plus_one}},
      "name": "{{this.name}}",
      "item": "{{this.url}}"
    }{{#unless @last}},{{/unless}}
    {{/each}}
  ]
}
</script>
{{/if}}

If your theme doesn’t expose @index_plus_one, you can use a custom Handlebars helper or hardcode the positions. Here’s a static version for a typical product page three levels deep:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://www.example.com/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Industrial Casters",
      "item": "https://www.example.com/industrial-casters/"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Heavy-Duty 6-Inch Caster Wheel",
      "item": "https://www.example.com/heavy-duty-caster-wheel-6-inch/"
    }
  ]
}
</script>

The position field must start at 1 and increment sequentially. Google ignores BreadcrumbList schema where positions are out of order or have gaps. The item URL for the last element (the current page) is optional. Google’s documentation says you can omit it for the final item, since the user is already on that page. In practice, including it doesn’t cause errors and keeps the data consistent.

A common failure mode: products assigned to multiple categories. BigCommerce lets you place a product in several categories. The breadcrumb trail should reflect the canonical category path, not an arbitrary one. Set the default category for each product in the BigCommerce admin at Products > [Product Name] > Storefront > Default Category. The breadcrumb Handlebars variable pulls from this assignment.

Organization Schema on the Homepage

Organization schema tells Google the basics about your business: name, logo, social profiles, and contact information. It belongs on the homepage only. Placing it on every page creates redundancy that doesn’t hurt rankings but clutters your structured data profile in Google Search Console’s enhancement reports.

Add this block to a conditional that checks for the homepage template. In Stencil, the homepage uses templates/pages/home.html. Insert the JSON-LD either in that template directly or in base.html with a conditional:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Industrial Supply Co.",
  "url": "https://www.example.com",
  "logo": "https://cdn11.bigcommerce.com/s-abc123/images/stencil/original/logo-industrial-supply__44821.png",
  "description": "Distributor of industrial casters, material handling equipment, and warehouse hardware since 1994.",
  "foundingDate": "1994",
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+1-800-555-0199",
    "contactType": "customer service",
    "availableLanguage": ["English", "Spanish"],
    "areaServed": "US"
  },
  "sameAs": [
    "https://www.facebook.com/industrialsupplyco",
    "https://www.linkedin.com/company/industrial-supply-co",
    "https://www.youtube.com/@industrialsupplyco",
    "https://twitter.com/indsupplyco"
  ],
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "4200 Commerce Blvd, Suite 110",
    "addressLocality": "Phoenix",
    "addressRegion": "AZ",
    "postalCode": "85040",
    "addressCountry": "US"
  }
}
</script>

The logo URL must point to the actual image file, not a page that contains the image. Google’s guidelines specify the logo should be a rectangle or square, at least 112×112 pixels, in JPG, PNG, GIF, SVG, or WebP format. BigCommerce’s CDN serves images from cdn11.bigcommerce.com, and these URLs work directly in the schema.

The sameAs array links your entity to social profiles. Google uses these connections to build your Knowledge Panel. Include every active social profile. Remove any that are inactive or abandoned, because dead links in sameAs can delay Knowledge Panel generation.

The contactPoint object is optional but useful. If you have multiple contact types (sales, support, returns), create separate ContactPoint objects in an array. Each one can have its own phone number and contactType value.

LocalBusiness Schema for Physical Locations

Stores with showrooms, warehouses open to the public, or retail locations need LocalBusiness schema in addition to Organization schema. LocalBusiness is a more specific type. It includes opening hours, geographic coordinates, and serves as the data source for Google Maps and local pack results.

If your BigCommerce store has one physical location, place this on the homepage alongside your Organization schema. For multi-location businesses, create individual location pages and add the schema to each one.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "@id": "https://www.example.com/#localbusiness",
  "name": "Industrial Supply Co. - Phoenix Showroom",
  "image": "https://cdn11.bigcommerce.com/s-abc123/images/stencil/original/showroom-exterior__22190.jpg",
  "url": "https://www.example.com/phoenix-showroom/",
  "telephone": "+1-602-555-0177",
  "email": "phoenix@example.com",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "4200 Commerce Blvd, Suite 110",
    "addressLocality": "Phoenix",
    "addressRegion": "AZ",
    "postalCode": "85040",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 33.3942,
    "longitude": -112.0270
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "07:00",
      "closes": "17:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday",
      "opens": "08:00",
      "closes": "13:00"
    }
  ],
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "214"
  }
}
</script>

The geo coordinates must be accurate. Grab them from Google Maps: right-click your location, click the coordinates to copy. Incorrect coordinates cause your listing to appear in the wrong local pack, or not at all.

The openingHoursSpecification array accepts grouped days. Monday through Friday with the same hours go in one object. Saturday with different hours gets its own object. If you’re closed Sunday, omit it entirely. Don’t add a Sunday entry with empty hours, because Google interprets that as “open but hours unknown.”

The @id field acts as a unique identifier for this entity. Use your homepage URL with a hash fragment. When Google encounters the same @id across multiple pages, it merges the data into a single entity. This prevents duplicate LocalBusiness entries in Google’s knowledge graph.

For multi-location BigCommerce stores, build individual pages for each location (e.g., /locations/phoenix/, /locations/dallas/) and add location-specific LocalBusiness schema to each page. The parent Organization schema on your homepage ties them together through the @id relationship.

Review and Rating Schema

Product reviews generate the star ratings you see in Google’s search results. BigCommerce stores using native reviews or third-party apps like Yotpo, Judge.me, or Stamped.io need to ensure the review data makes it into the Product schema’s aggregateRating and review fields.

Google’s guidelines on review schema are strict. Reviews must be about the specific product on the page. Reviews about the seller, shipping experience, or general store satisfaction don’t qualify. If you mix seller reviews with product reviews in your schema, Google can issue a manual action penalty against your rich results.

The aggregateRating object summarizes all reviews:

"aggregateRating": {
  "@type": "AggregateRating",
  "ratingValue": "4.7",
  "bestRating": "5",
  "worstRating": "1",
  "reviewCount": "83",
  "ratingCount": "97"
}

Note the distinction between reviewCount and ratingCount. A reviewCount is the number of written reviews. A ratingCount is the total number of ratings, including those without written text. If your review app allows star-only ratings without text, ratingCount will be higher than reviewCount. Google accepts both fields and uses whichever is provided.

Individual reviews go in the review array within your Product schema:

"review": [
  {
    "@type": "Review",
    "reviewRating": {
      "@type": "Rating",
      "ratingValue": "5",
      "bestRating": "5"
    },
    "author": {
      "@type": "Person",
      "name": "Mike R."
    },
    "datePublished": "2025-11-14",
    "reviewBody": "Solid build quality. Handles heavy loads on concrete floors without any wobble."
  },
  {
    "@type": "Review",
    "reviewRating": {
      "@type": "Rating",
      "ratingValue": "4",
      "bestRating": "5"
    },
    "author": {
      "@type": "Person",
      "name": "Sarah T."
    },
    "datePublished": "2025-09-22",
    "reviewBody": "Good caster for the price. Mounting holes aligned perfectly with our existing setup. Took off one star because the swivel lock is stiff out of the box."
  }
]

Google requires the author field to be a Person or Organization type. Plain string values for the author name still appear in some older documentation examples, but Google’s updated schema validation flags them as warnings. Use the typed object to stay compliant.

Third-party review apps often inject their own schema. If you’re adding review schema manually through your theme and also running Yotpo or Stamped.io, you’ll get duplicate review schema on the page. Google handles duplicates by merging them, but it creates “Duplicate structured data” warnings in Search Console. Check the page source after installing any review app and disable the app’s schema output if you’re handling it at the theme level, or vice versa.

For stores running BigCommerce’s native product reviews, the data is accessible through Stencil’s Handlebars context. You can pull {{product.rating}} and {{product.num_reviews}} directly into your schema template. Third-party apps usually require their own API calls or embed scripts that handle schema independently.

Testing Workflow: Three Tools, Specific Order

Deploying schema without testing is like pushing code without QA. You need three tools, and you need to use them in the right sequence. Each one catches different classes of errors.

Step 1: Google Rich Results Test

URL: https://search.google.com/test/rich-results. Paste your live URL or a code snippet. This tool tells you which rich results your page is eligible for. It validates against Google’s specific requirements, not the broader Schema.org specification. A property can be valid Schema.org but still not trigger a rich result because Google doesn’t support it yet.

The Rich Results Test renders JavaScript before analyzing the page. Check both the “HTML” tab and the “rendered HTML” tab. If your schema only appears in “rendered HTML,” it was injected via JavaScript (likely Script Manager). If it appears in both, it’s in the raw source (theme-level injection).

Common errors you’ll catch here: missing required fields, incorrect URL formats for availability, prices formatted as “$29.99” instead of “29.99”, and image URLs that 404.

Step 2: Schema Markup Validator

URL: https://validator.schema.org/. This tool validates against the full Schema.org vocabulary, not just Google’s subset. It catches structural issues the Rich Results Test ignores: missing recommended properties, incorrect nesting, type mismatches, and deprecated property names.

Run this second because it’s stricter. Passing the Rich Results Test but failing the Schema Markup Validator means your schema works today but might break when Google expands its parsing. Fix all errors and as many warnings as practical.

Step 3: Google Search Console URL Inspection

After deploying, use the URL Inspection tool in Google Search Console. Enter the specific URL. Click “Test Live URL.” This shows you exactly what Google sees when it crawls and renders your page. It confirms that the schema is accessible to Googlebot, not just to your browser.

URL Inspection also reveals rendering issues. If Googlebot can’t execute your JavaScript, or if a CDN blocks rendering resources, the schema won’t appear here even if it looks fine in the Rich Results Test. This is your production validation step.

Run all three tools in this order. The Rich Results Test confirms eligibility. The Schema Markup Validator catches specification issues. URL Inspection confirms production functionality. Skipping any one of them leaves a gap in your validation coverage.

After initial deployment, monitor the Enhancements section in Google Search Console. Navigate to Search Console > Enhancements > Products (or FAQ, Breadcrumbs, etc.). This dashboard shows valid items, items with warnings, and items with errors across your entire site. New schema errors typically surface here within 3 to 7 days of deployment.

Frequently Asked Questions

Does BigCommerce add structured data automatically?

BigCommerce’s Cornerstone theme includes basic Product schema, but it omits several fields Google recommends for rich result eligibility: brand, gtin, mpn, and aggregateRating. Other schema types like FAQPage, BreadcrumbList, and Organization are not included. You need to add them manually through Stencil theme files or Script Manager.

Can I add FAQ schema to BigCommerce category pages without custom development?

No. BigCommerce’s admin panel doesn’t have an FAQ field for category pages. You need to create a custom Stencil partial (templates/components/category/faq.html) that contains both the visible FAQ content and the FAQPage JSON-LD. This requires editing theme files and redeploying the theme through stencil push or the admin panel’s theme upload.

Should I use Script Manager or theme files for schema markup?

Theme files are the better option. Script Manager injects schema through JavaScript, which means the markup only appears in the rendered HTML, not in the raw page source. Google can still read it, but validation tools like the Rich Results Test display it differently, and DOM selector changes in theme updates can silently break your schema. Theme-level injection is more reliable and easier to validate.

How do I prevent duplicate review schema on BigCommerce?

Third-party review apps (Yotpo, Stamped.io, Judge.me) often inject their own Product and AggregateRating schema. If you’re also adding review data through your Stencil theme, you’ll get duplicate schema on the same page. Check the app’s settings for a toggle to disable its schema output. Alternatively, remove your manual review schema and let the app handle it. Don’t run both simultaneously.

How long does it take for rich results to appear after adding schema?

After deploying valid schema, submit the URL through Google Search Console’s URL Inspection tool and request indexing. Google typically processes the updated page within 2 to 14 days, depending on your site’s crawl frequency. High-traffic stores with frequent crawling see rich results faster. New stores or pages with low crawl priority can take up to 4 weeks. Monitor the Enhancements report in Search Console for confirmation.

Ready to automate your marketing?

Deploy 7 AI agents per client. Research, strategy, content, SEO, and sales on autopilot.

Get Started
FK
Faris Khalil
Founder and lead developer at Digital Roxy. Builds custom e-commerce stores on Shopify, WordPress, and BigCommerce. Specializes in platform migrations, headless architecture, and AI-driven marketing systems for agencies.