All posts
Guide

Squarespace Product Schema for AI Answers

Stop losing traffic to AI overviews. Learn how to add Product, Review, and Offer structured data in Squarespace so ChatGPT, Perplexity, and Google cite your

KKevin11 minutes read

Without Squarespace product schema, your product pages aren't just invisible to Google, they're invisible to ChatGPT, Perplexity, Gemini, and every AI engine pulling answers from the web. While your competitor's product gets cited in a ChatGPT comparison, your listing sits on page two, untagged and unnoticed. That's 0% AI visibility, and it's a direct leak of qualified traffic.

The fix? Structured data, specifically Product, Review, and Offer schema, engineered for how AI answers (not just blue links) read your site. AI engines rely on schema to understand product identity, attributes, pricing, and credibility. Without it, LLMs guess, omit, or, worse, pull a competitor's data.

Squarespace doesn't make this intuitive. Its built-in schema is thin, and product pages need manual intervention to surface in AI-generated comparisons. This guide gives you the exact JSON-LD, injection methods, and validation steps to get Squarespace Product schema working for AI answers, one field at a time.

Prerequisites

Before you add any code, confirm you have:

  • An active Squarespace store with products already added. If you haven't, start by adding products to your store. A product without a description or image will never rank, no matter the schema.
  • Access to Settings > Advanced > Code Injection. You'll need Administrator or Owner permissions on the site.
  • A basic understanding of JSON-LD (the schema format). You don't need to be a developer, but comfort with copy-pasting and replacing placeholder values is essential.
  • At least one product page URL to test and validate. Schema is injected page by page in Squarespace unless you use dynamic logic.

Why Product Schema Decides AI Visibility

AI engines don't crawl like traditional bots. They extract entities, attributes, and signals from structured data to build an internal knowledge graph. When a user asks, "compare the best standing desks under $500," ChatGPT might call a retrieval model that looks for Product schema items with offers, aggregateRating, and review. Without that markup, your product doesn't exist in that conversation.

Google's Search Generative Experience and Perplexity both lean on schema to populate product comparisons, price boxes, and star ratings. We track this at SearchFit, brands with complete product markup see citation rates 3x higher than those with missing offers or review. One B2B SaaS client went from zero mentions in ChatGPT to 12% of all product-related queries by fixing their schema alone.

Square's own schema is limited to a few metadata fields. It omits the extended properties (like hasMerchantReturnPolicy, shippingDetails, or review/aggregateRating) that LLMs use to decide which product to cite when the prompt asks for "best" or "cheapest." You're effectively invisible in product comparison rounds if you rely on Squarespace defaults.

Step 1: Access the Header Code Injection Point

Squarespace allows per-page header code injection on both Personal and Business plans. Using the header (not footer) ensures the JSON-LD loads early in the DOM, which is critical for LLM crawlers that often sample only the initial HTML.

  1. In the Home Menu, click Pages.
  2. Hover over the product page you want to optimize and click the gear icon for Page Settings.
  3. Click Advanced.
  4. In the Page Header Code Injection box, paste your JSON-LD script.
  5. Click anywhere outside the box to save.

Pro tip: Always validate your JSON-LD before saving. A single missing comma breaks all schema on the page. Copy-paste into Google's Rich Results Test first to catch syntax errors.

Never add schema to the site-wide header code injection unless you're dynamically serving different markup per page. Static site-wide schema will conflict with other pages and confuse AI crawlers.

Step 2: Build a Complete Product Schema JSON-LD Block

Here's the baseline template you'll adapt. Every field marked REQUIRED must be customized per product. The optional fields are what move the needle for AI visibility.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "REQUIRED: Product Name",
  "description": "REQUIRED: Product Description",
  "sku": "REQUIRED: Product SKU",
  "image": "REQUIRED: Full URL to product image",
  "offers": {
    "@type": "Offer",
    "url": "REQUIRED: Product Page URL",
    "priceCurrency": "USD",
    "price": "REQUIRED: Price as a number (e.g., 49.99)",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "REQUIRED: Average rating (e.g., 4.5)",
    "reviewCount": "REQUIRED: Number of reviews"
  },
  "review": [
    {
      "@type": "Review",
      "author": {
        "@type": "Person",
        "name": "REQUIRED: Reviewer Name"
      },
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": "REQUIRED: Rating (e.g., 5)"
      },
      "reviewBody": "REQUIRED: Review text excerpt"
    }
  ]
}
</script>

Why each piece matters for AI answers:

  • offers with price and availability: When a user asks "show me products under $100 that are in stock," LLMs filter based on this data. Missing price = exclusion from pricing comparisons.
  • aggregateRating and review: ChatGPT and Perplexity use review count and rating as trust signals. Products with aggregated ratings appear first in "best" queries. Include at least 5 reviews to clear the threshold many AI models look for.
  • image: AI interfaces like Gemini and Copilot often display a product image next to the citation. No image, no visual block.
  • sku / gtin / mpn: These identifiers help AI disambiguate your product from similar ones, especially when users search by model number.

You must fill all REQUIRED fields with exact data from that product's Squarespace page. For a dynamic approach, see Step 6.

Step 3: Inject Product Schema into Individual Pages

Squarespace product pages are generated from the design template, so you cannot place schema directly into the product description editor without it being stripped. The only reliable method is header code injection per page.

After building your JSON-LD for a product, paste it into that page's header injection area. Repeat for each product you want visible in AI answers. This is tedious but necessary because Squarespace does not offer a global product schema variable system out of the box.

For sites with dozens of products, injecting manually isn't scalable. Use a developer to write a custom script that reads product details from the DOM (product name, price, image URL, etc.) and dynamically inserts JSON-LD into the header. This requires knowledge of Squarespace's JSON-T templates and is often more cost-effective than copying code for each product. A Squarespace schema guide like the one at JSON Schema App details this dynamic approach.

Warning: A single page can have multiple JSON-LD scripts, but never duplicate a type with conflicting data. If Squarespace injects its own Product schema (which it does minimally), your custom script must override or supplement it, not duplicate the @type. Use the Schema Markup Validator to check for duplication.

Step 4: Add Review and Offer Structured Data the Right Way

Product schema without review and offers is half-done. AI engines parse these sub-types independently, and they're often the deciding factor in comparative queries.

Review markup:

  • Always nest review inside the Product entity. Do not place it as a standalone script; that breaks the relationship.
  • If you have more than 50 reviews, embed the five most recent or most helpful. Schema.org allows listing individual reviews, but for AI visibility, a representative sample works.
  • For products that compete on quality, include reviewBody text that contains natural keywords. For example, a review body that says "best ergonomic chair for tall people" provides additional semantic context for LLMs.

Offer markup:

  • The price must be a number, no dollar signs, no commas.
  • availability must use the exact schema.org URI: https://schema.org/InStock, OutOfStock, or PreOrder. An incorrect URI nullifies the field.
  • Add priceValidUntil if your product goes on sale periodically. This tells AI models the offer is current, avoiding stale prices.
  • If you offer free shipping, add shippingDetails with freeShipping set to true. For B2B products, this can be a hidden differentiator in AI-generated comparisons.

Here's how an extended Offer block looks:

"offers": {
  "@type": "Offer",
  "url": "https://www.example.com/product",
  "priceCurrency": "USD",
  "price": "79.99",
  "priceValidUntil": "2025-12-31",
  "availability": "https://schema.org/InStock",
  "itemCondition": "https://schema.org/NewCondition",
  "shippingDetails": {
    "@type": "OfferShippingDetails",
    "shippingRate": {
      "@type": "MonetaryAmount",
      "value": "0",
      "currency": "USD"
    },
    "deliveryTime": {
      "@type": "ShippingDeliveryTime",
      "handlingTime": {
        "@type": "QuantitativeValue",
        "minValue": 1,
        "maxValue": 2,
        "unitCode": "d"
      },
      "transitTime": {
        "@type": "QuantitativeValue",
        "minValue": 3,
        "maxValue": 5,
        "unitCode": "d"
      }
    },
    "shippingDestination": {
      "@type": "DefinedRegion",
      "addressCountry": "US"
    }
  }
}

For a step-by-step walkthrough on adding this level of detail to Squarespace, Style Factory Productions' guide covers how to nest these properties and avoid breaking the script.

Step 5: Validate with Google Rich Results and Schema Validator

Validation is not optional. A single error can strip all your schema, leaving even basic search snippets dead. AI engines vary in how they handle malformed JSON-LD; some silently drop the page, others parse partial data. You can't afford either.

Run both these validators every time you add or edit schema:

  1. Google Rich Results Test - Tests eligibility for product rich results. Paste your URL or the code snippet directly. It will flag missing required properties and warnings. Fix all errors. Warnings are often okay but double-check any warning about offers or aggregateRating. Use it at Google's Rich Results Test.
  2. Schema Markup Validator - Tests against schema.org's specifications. This is more strict and will catch issues like invalid URLs in @id or missing @type. If your markup passes here, it's structured correctly for any consumer. Validate at Schema Markup Validator.

Common errors to watch for:

  • Mismatched quotes: if you copy-paste from a rich text editor, curly quotes break JSON. Use straight quotes only.
  • Missing commas between properties, especially after @context and @type.
  • Price as a string: "49.99" is invalid; it must be a number 49.99.
  • Wrong @type nesting: Review must be under Product, not top-level.

After validation, list your page URL in SearchFit's AI visibility tracker to monitor when ChatGPT and Perplexity start citing your product in answers. It typically takes 1-4 weeks for re-crawling and ingestion, but you can accelerate it by requesting indexing in Google Search Console.

Step 6: Scale with Dynamic Squarespace Product Schema

Copy-pasting JSON-LD for 50 products isn't sustainable. For e-commerce brands, build a dynamic injection script once that pulls product data from the page's DOM or Squarespace's JSON-T variables.

Squarespace's product pages expose certain data in attributes and visible elements: product title, SKU, price (formatted), and image URLs. A JavaScript snippet can extract these and build a JSON-LD object, then inject it into the head on load.

Here's a simplified version:

<script>
(function() {
  var title = document.querySelector('.ProductItem-details-title').innerText;
  var description = document.querySelector('.ProductItem-details-excerpt').innerText;
  var priceText = document.querySelector('.product-price').innerText;
  var price = parseFloat(priceText.replace(/[^0-9.]/g, ''));
  var image = document.querySelector('.ProductItem-gallery-slides-item-image').src;
  var sku = document.querySelector('[data-product-sku]').getAttribute('data-product-sku');
  
  var schema = {
    "@context": "https://schema.org",
    "@type": "Product",
    "name": title,
    "description": description,
    "sku": sku,
    "image": image,
    "offers": {
      "@type": "Offer",
      "priceCurrency": "USD",
      "price": price,
      "availability": "https://schema.org/InStock",
      "url": window.location.href
    }
  };
  
  var script = document.createElement('script');
  script.type = 'application/ld+json';
  script.text = JSON.stringify(schema);
  document.head.appendChild(script);
})();
</script>

Pro tip: This script only covers basic Offer data. Extend it to include aggregateRating and review by pulling from visible review UI elements or a hidden JSON object on the page. For reviews, consider using a third-party service that injects structured data via a plugin, then extend the dynamic script to include that data.

For a detailed, start-to-finish guide on embedding such scripts in Squarespace, Marta Lebre's tutorial on adding schema markup to Squarespace provides exact code placement and debugging tips.

Warning: Dynamic injection via JavaScript may not be seen by all AI crawlers if they don't execute JS. While Google and ChatGPT now render JavaScript, some LLMs might only parse the initial HTML. To cover all bases, combine a static JSON-LD block for critical fields (name, image, offers) with the dynamic script for reviews and ratings, or pre-render the schema server-side using a Squarespace Developer Platform modification.

Pro Tips for AI-Citable Product Schema

  • Use sameAs to link to your product's pages on other platforms (e.g., Amazon, Etsy). This helps AI engines disambiguate and increases trust. For example: "sameAs": ["https://www.amazon.com/dp/YOUR_ASIN"].
  • Include brand with an @id reference if your brand is also defined elsewhere on the site as an Organization. This builds an entity-link graph that AI models use for brand-level queries.
  • Add isRelatedTo or isSimilarTo to connect complementary products. When a user asks for "a laptop stand and accessories," an AI might traverse these links.
  • Focus on review recency. If all your reviews are from three years ago, AI may deprioritize your product over one with fresher feedback. Add a few recent reviews and update the datePublished in the Review markup.
  • Monitor your schema health monthly. Schema drift, where product data changes but markup doesn't, is the top cause of AI visibility decay. Set a calendar reminder to validate high-value product pages.

Warnings: Schema Mistakes That Kill Visibility

  • Don't use Product schema on pages that aren't actual product detail pages. Category or collection pages must not have product markup. It confuses bots and can lead to manual actions in Google.
  • Avoid copying schema templates blindly. Ensure priceCurrency matches the actual currency used on the site. An EU site with USD will be ignored in euro-denominated queries.
  • Never hide schema in the footer. Some Squarespace guides suggest footer injection, but many AI crawlers truncate the page after the main content, missing footer scripts entirely.
  • Watch for size variant conflicts. If you offer multiple sizes with different prices, ensure each variant is represented as a separate Offer (using the offers array and sku differentiation) or use AggregateOffer. Otherwise, AI might cite the wrong price.

Tracking AI Citations and Answer Visibility

Adding schema is only half the strategy. You need to measure whether it actually gets your product cited. Traditional rank tracking tools don't monitor ChatGPT, Perplexity, Gemini, or Claude appearances. That's where SearchFit fits.

SearchFit continuously queries AI engines with your target product comparison prompts and reports back where your brand appears, what schema it sees, and which competitors are being cited. With this data, you can iterate: strengthen reviews, add more Offer details, or fix schema errors that are blocking citations. E-commerce teams we work with reduce the gap between schema implementation and first AI citation by an average of 12 days.

Pair your Schema Markup Validator results with SearchFit's Answer Engine Optimization dashboard to close the loop between markup and actual visibility.

Key Takeaways

  1. Product schema is no longer optional for AI visibility. If you're not marking up products, you're invisible in product comparison queries across ChatGPT, Perplexity, and Google SGE.
  2. Squarespace requires manual injection. Use per-page header code injection or dynamic JavaScript to add full Product, Review, and Offer data that goes beyond Squarespace's built-in thin schema.
  3. Reviews and Offers drive citations. Products with aggregate rating and accurate pricing/availability are up to 3x more likely to appear in AI answers.
  4. Validate obsessively. Use both Google Rich Results and Schema.org validators. A single JSON error can silently kill all structured data.
  5. Track what happens after implementation. AI visibility isn't predictable. Use a tool like SearchFit to monitor actual citations and iterate on underperforming products.

Stop feeding traffic to competitors who field-structured their product pages. Implement this Squarespace Product schema today, validate it, and start tracking your AI-sourced conversions.

Get SearchFIT Weekly

What we are learning about getting brands cited in AI search, in your inbox every week. Unsubscribe any time.