Every Squarespace Commerce fix we catalog
SEOLZ catalogs 22 fixes for Squarespace Commerce across 5 areas — SEO, answer-engine readiness, accessibility, security and site-health. Each lists the exact steps for Squarespace Commerce, with a link to the official docs.
SEO · 14 fixes
Catalog coverageModerate effort
Audit your XML sitemap and internal linking so that every product and category page is discoverable and crawlable by Google — not hidden behind JavaScript, pagination, or missing links.
On Squarespace Commerce
- Same steps as Squarespace above — Squarespace Commerce products are part of the same sitemap.
- Commerce › Products: confirm all products have a Status of 'Active' (not 'Unavailable') — unavailable products may be excluded from the sitemap.
<!-- CORRECT: Standard crawlable link -->
<a href="/products/blue-running-shoes">Blue Running Shoes</a>
<!-- WRONG: JavaScript-only — Googlebot cannot follow this -->
<span onclick="navigate('/products/blue-running-shoes')">Blue Running Shoes</span>Standard crawlable product link — use plain <a href> tags, never JavaScript-only click handlers, for navigation links that Google must follow.
Images missing alt bulkModerate effort
Add descriptive alt text to every product and content image at the template level so search engines and screen readers can understand all images on the page.
On Squarespace Commerce
- Go to Commerce → Products → open each product → click the main product image and any additional images → enter alt text in the 'Alt Text' input that appears.
- For bulk updates, use Squarespace's import/export (CSV) feature if available on your plan, or use the Squarespace API if you are on an Advanced Commerce plan to push alt text programmatically.
<!-- Informative product image — describe what the image shows -->
<img src="/images/red-running-shoes-side-view.jpg"
alt="Red canvas running shoes, side view, white rubber sole"
width="800" height="800">
<!-- Decorative image — empty alt tells screen readers to skip it -->
<img src="/images/divider-wave.svg"
alt=""
role="presentation"
width="1200" height="40">Correct alt text pattern for informative images vs. decorative images.
Meta description too longQuick win
Shorten your meta description to 150–160 characters so Google displays it in full instead of cutting it off with "…" in search results.
On Squarespace Commerce
- Go to Commerce → Inventory in your Squarespace dashboard.
- Click the product to open its editor → navigate to the SEO tab.
- Edit the 'Description' field to 150–160 characters, ensuring your key benefit and a call-to-action are included.
- Click 'Save'.
<meta name="description" content="Award-winning Bang & Olufsen headphones, speakers and TVs. Visit our Malaysia showroom at The Gardens Mall, Level 2. Free shipping on orders over RM500.">Place this inside the <head> element of every page. Replace the content value with your page-specific description (max 160 characters).
Missing canonicalModerate effort
Add a self-referencing canonical tag to every page so Google knows which URL is the definitive version of that content.
On Squarespace Commerce
- Squarespace Commerce product and category pages receive automatic canonical tags from Squarespace's platform — no extra configuration is needed.
- Confirm your preferred domain (www vs. non-www) is set as primary under Settings → Domains, as this determines what canonical URLs Squarespace outputs.
- Verify by viewing page source on a product page and searching for 'canonical'.
<link rel="canonical" href="https://www.yourstore.com/your-page/" />Paste this inside the <head> element of every page. Replace the href value with the full, absolute preferred URL of that specific page.
Missing h1Quick win
Add a single, descriptive H1 tag to every page that currently lacks one, clearly stating the page's main topic.
On Squarespace Commerce
- Product Title in Squarespace Commerce renders as the H1 on the product detail page — go to Commerce → Inventory → open each product and confirm the Title field is not blank.
- For category/tag landing pages, edit the page section heading block and set it to Heading 1 style.
- Verify with View Page Source after publishing.
<h1>Women's Running Shoes</h1>Place exactly one of these per page, as the first heading in the main content area.
Missing meta descriptionModerate effort
Write and add a unique meta description (120–160 characters) to every page that is missing one, so Google can display an accurate, compelling snippet in search results.
On Squarespace Commerce
- Same as Squarespace above. For product pages specifically: Commerce (left nav) → Products → click the product → 'SEO' tab → 'SEO Description' field.
<head>
<meta charset="UTF-8">
<meta name="description" content="Shop our full range of handmade leather wallets. Free shipping on orders over $50. Slim, durable & personalised — order yours today.">
<title>Handmade Leather Wallets | YourStoreName</title>
</head>Place this tag inside the <head> element of every HTML page. Keep the content between 120–160 characters.
Missing titleQuick win
Add a unique, descriptive title tag (30–60 characters) to every page that is missing one.
On Squarespace Commerce
- Go to Commerce → Inventory → select the product → open the 'SEO' tab → fill in 'SEO Title' (30–60 characters).
- If managing many products, note that Squarespace does not offer bulk SEO editing natively — update each product individually or use a third-party integration.
- Click Save.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Slim Bifold Leather Wallet | BrandName</title>
</head>
<body>
<!-- page content -->
</body>
</html>Place this inside the <head> element of every HTML page. Keep the text between 30–60 characters.
Multiple h1Moderate effort
Remove all but one H1 tag from each page so every page has exactly one clear, descriptive primary heading.
On Squarespace Commerce
- Product names in Squarespace Commerce are output as H1 by the built-in product template — do not duplicate this by adding an H1 in the product description field.
- In the product description editor, use Heading 2 and Heading 3 for any structured content — not Heading 1.
- If you have added a text block above or below the product block on the page that also uses Heading 1, edit that block and change it to Heading 2.
- Verify with DevTools after saving.
<!-- CORRECT: One H1 per page -->
<h1>Blue Running Shoes – Men's Lightweight Trainers</h1>
<!-- Major sections use H2 -->
<h2>Product Details</h2>
<p>Breathable mesh upper, responsive foam midsole...</p>
<h2>Customer Reviews</h2>
<!-- Sub-sections within a major section use H3 -->
<h3>Top Review: 5 Stars</h3>
<p>Best shoes I've ever bought!</p>
<!-- WRONG: Multiple H1 tags — do NOT do this -->
<!--
<h1>Blue Running Shoes</h1>
<h1>Product Details</h1>
<h1>Customer Reviews</h1>
-->Correct semantic heading structure for an ecommerce page — one H1, everything else H2 or lower.
Seo category emptyQuick win
Either populate the empty category with products, or add a noindex tag and remove it from your navigation so Google does not waste crawl budget on a page with no content.
On Squarespace Commerce
- Follow all Squarespace steps above — Squarespace Commerce uses the same Pages and Commerce product management UI.
- Access product categories via Commerce → Products and filter/tag management within each product's detail page.
<meta name="robots" content="noindex, follow">Place inside the <head> element of an empty category page to prevent Google from indexing it.
Seo product description missingModerate effort
Write and publish a 200–400 word product description covering what the product is, its key specs, who it's for, and how to use it.
On Squarespace Commerce
- Go to your Squarespace admin → Commerce → Products.
- Open the product and enter text in the 'Description' rich-text field on the 'Basic' tab.
- Use the 'SEO' tab to add a custom meta description.
- Save and verify on the live product URL.
<section class="product-description">
<h2>About This Product</h2>
<p>
The <strong>Trailblazer 500 Waterproof Hiking Boot</strong> is a lightweight,
full-grain leather boot built for all-day comfort on rugged mountain trails.
Its Gore-Tex membrane keeps feet dry in rain and creek crossings while the
Vibram outsole delivers confident grip on wet rock and loose scree.
</p>
<p>
Designed for day hikers and weekend backpackers who want reliable protection
without the weight of a mountaineering boot, the Trailblazer 500 strikes the
ideal balance between support and agility. The padded collar and gusseted
tongue prevent trail debris from entering the boot, and the cushioned EVA
midsole absorbs impact mile after mile.
</p>
<h3>Key Specifications</h3>
<ul>
<li><strong>Upper:</strong> Full-grain leather with Gore-Tex waterproof lining</li>
<li><strong>Outsole:</strong> Vibram Megagrip rubber</li>
<li><strong>Weight:</strong> 680 g / pair (size UK 9)</li>
<li><strong>Shaft height:</strong> Mid (ankle) cut</li>
<li><strong>Available widths:</strong> Standard and Wide</li>
</ul>
<h3>How to Use</h3>
<p>
Lace firmly for ankle support on uneven terrain. Break the boot in over two
or three shorter walks before a full-day hike. Apply a water-repellent spray
to the leather upper every 20–30 hours of trail use to maintain waterproofing.
</p>
</section>Minimum viable product description markup — paste inside your product page's <main> or article element.
Seo product image alt filenameModerate effort
Replace auto-generated filename-based alt text on product images with short, descriptive phrases that accurately describe what the image shows.
On Squarespace Commerce
- Go to Commerce → Inventory and open the product.
- Click a product image, then select 'Edit' or click the pencil icon.
- Fill in the 'Alt Text' field and click Apply.
- Save the product. Repeat for all product images and variants.
<!-- BAD: filename-based alt text -->
<img src="/images/IMG_4823_blue_v2.webp" alt="IMG_4823_blue_v2.webp">
<!-- BAD: empty alt text -->
<img src="/images/blue-sweater.webp" alt="">
<!-- GOOD: descriptive alt text -->
<img src="/images/blue-sweater.webp" alt="Blue cotton crew-neck sweater, front view">The correct pattern for a product image alt attribute — descriptive, specific, keyword-natural.
Seo product missing gtinModerate effort
Add a GTIN (and/or MPN) field to your Product structured data so Google can match your listings to its product knowledge graph for rich results and Google Shopping.
On Squarespace Commerce
- Same as Squarespace: use Code Injection (Settings → Advanced → Code Injection) or per-product Code Blocks to inject Product JSON-LD with GTIN.
- Squarespace Commerce does not expose a native GTIN/barcode field that maps to schema automatically, so manual JSON-LD injection per product (or a third-party SEO extension) is the practical path.
Seo product price not in htmlModerate effort
Render your product price in the server-generated HTML so Google and other crawlers can read it directly — without executing JavaScript.
On Squarespace Commerce
- Same as Squarespace above — Commerce product pages inherit server-rendered prices from the Squarespace product data model.
- Ensure the product has a price set in the Commerce → Products → [product] → Pricing field. A $0.00 or blank price in the database will result in no visible price in HTML.
- Validate with Google Rich Results Test.
Title too longQuick win
Shorten your page title tag to 60 characters or fewer so it displays fully — without truncation — in Google search results.
On Squarespace Commerce
- Go to Commerce → Inventory in your Squarespace dashboard.
- Open the product, select the 'SEO' tab, and update the 'SEO Title' to ≤60 characters.
- Click Save.
<head>
<meta charset="UTF-8">
<title>Running Shoes for Men | YourBrand</title>
</head>Place inside the <head> element of every HTML page. Keep the total character count at or under 60.
Answer Engine Optimization · 1 fixes
Missing schema webpageModerate effort
Add WebPage schema markup to every page so search engines and AI answer engines can precisely understand and describe your content.
On Squarespace Commerce
- Follow the same steps as standard Squarespace — use Page Header Code Injection for per-page WebPage schema and Site-wide Header Code Injection for Organization schema.
- For product pages in Squarespace Commerce, Squarespace auto-generates some Product schema; supplement with a WebPage block via page-level code injection if needed.
- Validate using Google's Rich Results Test.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebPage",
"name": "About Us | Acme Store",
"description": "Learn about Acme Store, our mission, and the team behind our products.",
"url": "https://www.example.com/about/",
"inLanguage": "en-US",
"datePublished": "2022-01-15",
"dateModified": "2024-06-01",
"isPartOf": {
"@type": "WebSite",
"name": "Acme Store",
"url": "https://www.example.com/"
},
"breadcrumb": {
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "About Us",
"item": "https://www.example.com/about/"
}
]
}
}
</script>Paste this inside the <head> element of any HTML page. Replace all placeholder values with real page data.
Accessibility (WCAG) · 2 fixes
Aria input field nameModerate effort
Add a descriptive accessible name (aria-label, aria-labelledby, or a visible <label>) to every ARIA input field so assistive technologies can identify it.
On Squarespace Commerce
- Follow the same steps as Squarespace above.
- For checkout form fields managed by Squarespace Commerce (billing/shipping), these are system-generated — contact Squarespace support to report the accessibility issue, or inject a JavaScript fix via Settings → Advanced → Code Injection → Footer using setAttribute('aria-label', '...') targeting the specific input.
<label for="customer-email">Email address</label>
<input type="email" id="customer-email" name="email" autocomplete="email">Option 1 (preferred): Visible label associated via 'for' + 'id'. Use this whenever a visible label fits the design.
Image altModerate effort
Add descriptive alt text to every meaningful image, and mark purely decorative images with an empty alt attribute or role="presentation".
On Squarespace Commerce
- Commerce → Inventory → [Product] → click the main product image or any additional image in the media section → the Media Library opens → fill in 'Alt Text' on the right → Save.
- For variant images, edit each variant under the Variants tab, then click the variant image to access its alt text field in the Media Library.
<!-- Meaningful image: describe the content -->
<img src="red-leather-bag.jpg" alt="Red leather crossbody bag with gold clasp" width="600" height="400">
<!-- Image used as a link: describe the destination/action -->
<a href="/sale">
<img src="summer-sale-banner.jpg" alt="Shop our summer sale — up to 40% off">
</a>
<!-- Decorative image: empty alt, screen readers skip it -->
<img src="decorative-swoosh.svg" alt="" role="presentation">
<!-- WRONG — never omit alt entirely on an <img> -->
<!-- <img src="product.jpg"> -->
<!-- WRONG — never use filename or generic words -->
<!-- <img src="IMG_4821.jpg" alt="image"> -->Correct patterns for meaningful, linked, and decorative images.
Security (OWASP) · 2 fixes
Info disclosure x powered byQuick win
Remove or suppress the X-Powered-By HTTP response header so your server stops advertising which technology stack, hosting platform, or software version powers your store.
On Squarespace Commerce
- Same as Squarespace above — no direct header control available to store owners.
- Review any custom code injected via Settings → Advanced → Code Injection for scripts that might be loading iframes or proxies emitting this header.
<!-- X-Powered-By is an HTTP response header set by the server, not in HTML markup.
Use the server-side code snippets below for your specific platform. -->There is no HTML tag for this — it is a server-side HTTP response header. Use the server/framework snippets below.
Missing referrer policyQuick win
Add a Referrer-Policy HTTP response header set to strict-origin-when-cross-origin to control what URL information browsers send when users navigate away from your store.
On Squarespace Commerce
- Same as Squarespace above — use Settings → Advanced → Code Injection → Header to add the meta tag site-wide: `<meta name="referrer" content="strict-origin-when-cross-origin">`.
- Cloudflare proxy + Modify Response Header rule is required for the real HTTP header.
<meta name="referrer" content="strict-origin-when-cross-origin">Add inside the <head> element of every HTML page as a fallback when HTTP header control is unavailable.
Site Lifecycle · 3 fixes
Domain expiryQuick win
Log in to your domain registrar, confirm your domain's expiry date, and enable auto-renew so your store never goes offline due to an expired domain.
On Squarespace Commerce
- Same as Squarespace: Dashboard → Domains → click domain → Domain Settings → Auto-Renew ON.
- Verify payment method at Account Menu → Billing → Payment Methods.
<!-- No HTML change required. Domain renewal is managed at your domain registrar's dashboard (e.g. GoDaddy, Namecheap, Cloudflare Registrar). Log in, find the domain, enable auto-renew, and confirm a valid payment method is on file. -->No code change is needed on your website — this fix is completed entirely in your registrar's dashboard. There is no markup or configuration file involved.
Html langQuick win
Add a lang attribute to your site's <html> tag that matches the primary language of your store's content.
On Squarespace Commerce
- Same as Squarespace: go to Settings → Language & Region → Site Language.
- Squarespace Commerce does not expose the <html> tag for direct editing; the lang attribute is injected automatically from your language setting.
- Verify after saving by viewing your storefront page source.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Your Store</title>
</head>
<body>
<!-- page content -->
</body>
</html>Place this as the very first tag in your HTML document, before <head>.
Ssl expiryQuick win
Renew your TLS/SSL certificate before it expires and enable automatic renewal so your store never goes offline or shows security warnings.
On Squarespace Commerce
- SSL is managed identically to standard Squarespace — auto-provisioned and renewed.
- Check status at Website → Website Tools → SSL and confirm HTTPS is active for your storefront domain.
<!-- SERVER-SIDE redirect is strongly preferred. Example nginx config snippet below. -->
<!-- nginx: force HTTPS -->
<!-- server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
} -->Verify your HTTPS redirect is in place at the server/app level. This meta-refresh is a last-resort fallback only — implement a proper server-side 301 redirect instead.