Squarespace provides basic structured data, but it is not enough if you want rich results in Google or visibility in AI search. This guide gives you the exact JSON-LD code to add, tells you which pages need it, and shows you exactly where to paste it in Squarespace.
Every template below is ready to copy-paste. Replace the placeholder values with your own information.
Where to Add Schema Code in Squarespace
Squarespace has two places to inject code, and the distinction matters:
Global Code Injection (Site-Wide)
Go to Settings → Advanced → Code Injection → Header. Code placed here appears on every page of your site. Use this for:
- Organization schema (same on every page)
- WebSite schema (same on every page)
- Social profile links (same everywhere)
Per-Page Code Injection
Open any page in the editor, click the gear icon (Page Settings) → Advanced → Page Header Code Injection. Code placed here appears only on that specific page. Use this for:
- Article schema (only on blog posts or articles)
- FAQ schema (only on pages with FAQ content)
- Service schema (only on service/landing pages)
- Product schema (only on product pages)
Important limitation: Squarespace does not offer per-post header code injection for blog posts. Blog posts can only use global Code Injection. This means Article schema must be added globally with dynamic detection (a plugin handles this) or you accept that it will reference the same data on every blog post.
For static pages (About, Services, Contact, landing pages), per-page injection works perfectly and is the recommended approach.
Organization Schema (Global)
Add this to Settings → Advanced → Code Injection → Header. Replace all placeholder values.
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Your Business Name",
"url": "https://yourdomain.com",
"logo": "https://yourdomain.com/images/logo.png",
"description": "Brief description of what your business does",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Street",
"addressLocality": "City",
"addressRegion": "State",
"postalCode": "12345",
"addressCountry": "US"
},
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+1-555-555-5555",
"contactType": "customer service",
"email": "hello@yourdomain.com"
},
"sameAs": [
"https://www.linkedin.com/in/yourprofile/",
"https://twitter.com/yourhandle",
"https://www.facebook.com/yourpage",
"https://github.com/yourusername"
]
}
What each field does:
- name: Your registered business name
- url: Your homepage URL
- logo: Direct link to your logo image (at least 112x112px)
- address: Physical business address (omit if online-only)
- contactPoint: Phone and contact email
- sameAs: Links to your social profiles (helps Google connect your brand)
WebSite Schema (Global)
Add this alongside your Organization schema in the global Header injection. This enables sitelinks searchbox in Google.
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "Your Business Name",
"url": "https://yourdomain.com",
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://yourdomain.com/search?q={search_term_string}"
},
"query-input": "required name=search_term_string"
}
}
Note: The search URL template may need adjustment depending on your Squarespace search page URL structure. For most Squarespace sites, /search?q={search_term_string} works.
Article Schema (Per-Page for Static Pages)
For blog posts, Squarespace already adds basic Article schema. But for landing pages or custom article-style pages, add this via page-specific Code Injection (gear icon → Advanced → Page Header Code Injection):
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Your Article Title Here",
"description": "A 2-3 sentence summary of the article content",
"author": {
"@type": "Person",
"name": "Mark Recabo",
"url": "https://yourdomain.com/about/"
},
"publisher": {
"@type": "Organization",
"name": "Your Business Name",
"logo": {
"@type": "ImageObject",
"url": "https://yourdomain.com/images/logo.png",
"width": 200,
"height": 60
}
},
"datePublished": "2026-06-12",
"dateModified": "2026-06-12",
"image": {
"@type": "ImageObject",
"url": "https://yourdomain.com/images/article-featured.jpg",
"width": 1200,
"height": 630
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://yourdomain.com/this-page-url/"
}
}
Replace the date fields with your actual publish and modification dates in YYYY-MM-DD format. Update dateModified whenever you make significant edits.
For blog posts: Since per-post code injection is not available, your options are: (1) add Article schema globally and accept it applies to all pages, or (2) use a schema plugin that dynamically generates correct Article schema per blog post.
FAQ Schema (Per-Page)
Add this via per-page Code Injection on any page that has FAQ content. Replace the example questions and answers with your own. Add or remove question/answer pairs as needed.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is Squarespace?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Squarespace is a website builder and hosting platform that allows users to create professional websites without coding. It includes templates, e-commerce tools, and built-in SEO features."
}
},
{
"@type": "Question",
"name": "Do I need to add schema markup manually on Squarespace?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Squarespace adds basic schema automatically, but it is limited. Adding comprehensive schema markup manually or with a plugin helps your pages appear as rich results in Google and improves AI search visibility."
}
},
{
"@type": "Question",
"name": "Where do I paste schema code in Squarespace?",
"acceptedAnswer": {
"@type": "Answer",
"text": "For site-wide schema like Organization, use Settings → Advanced → Code Injection → Header. For page-specific schema like FAQ or Article, open the page editor, click the gear icon → Advanced → Page Header Code Injection."
}
},
{
"@type": "Question",
"name": "Can I add schema to individual blog posts?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Squarespace does not support per-post header code injection. For blog post schema, you need to use global Code Injection with dynamic detection or a schema plugin that handles this automatically."
}
}
]
}
Rules for FAQ schema:
- Each question must be a real question your visitors ask
- Answers should be 2-4 sentences (600 characters max)
- Include at least 2 questions, but 4-8 is the sweet spot
- FAQ content must be visible on the page (do not hide it)
- Do not add FAQ schema to pages that do not actually contain FAQs
BreadcrumbList Schema (Per-Page)
Helps Google understand your page hierarchy. Add via per-page Code Injection.
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://yourdomain.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Services",
"item": "https://yourdomain.com/services/"
},
{
"@type": "ListItem",
"position": 3,
"name": "This Page Title",
"item": "https://yourdomain.com/this-page-url/"
}
]
}
Adjust the breadcrumb trail to match your actual site structure. Include every level from homepage down to the current page.
Service Schema (Per-Page for Service Pages)
For service or landing pages, add this via per-page Code Injection.
{
"@context": "https://schema.org",
"@type": "Service",
"name": "Service Name",
"description": "Detailed description of what this service includes",
"provider": {
"@type": "Organization",
"name": "Your Business Name",
"url": "https://yourdomain.com"
},
"areaServed": {
"@type": "Country",
"name": "Worldwide"
},
"url": "https://yourdomain.com/services/this-service/",
"image": "https://yourdomain.com/images/service-image.jpg"
}
Quick Reference: Which Schema Goes Where
| Schema Type | Location | Injection Method |
|---|---|---|
| Organization | Every page | Global Code Injection |
| WebSite | Every page | Global Code Injection |
| Article | Blog posts, articles | Global (limitation) or plugin |
| FAQPage | Pages with FAQs | Per-page Code Injection |
| BreadcrumbList | All pages | Per-page Code Injection |
| Service | Service pages | Per-page Code Injection |
| Product | Product/download pages | Per-page Code Injection |
How to Validate Your Schema
Always validate after adding schema code:
- Schema.org Validator — Enter your URL. Check for errors (red) and warnings (yellow). Fix errors immediately.
- Google Rich Results Test — Enter your URL. This shows which rich results you are eligible for. Not all schema types produce visible rich results, but they still help search engines understand your content.
- Wait 1-2 weeks then check Google Search Console → Performance. Rich results often take time to appear.
Common Mistakes to Avoid
Adding FAQ schema without visible FAQ content. Google can penalize structured data that does not match visible page content. If you add FAQ schema, the FAQ section must be visible on the page (not hidden behind tabs or accordions that require interaction to reveal).
Syntax errors in JSON-LD. One missing comma or bracket breaks the entire block. Always validate at Schema.org before saving. Use JSONLint to check syntax.
Adding the same schema type twice. If Squarespace already adds Article schema to blog posts, do not add another Article schema block globally. Duplicate schema types confuse Google. Use a plugin that intelligently merges or replaces existing schema.
Forgetting to update dateModified. When you edit a page, update the dateModified field in your schema. Stale dates signal neglect to search engines.
Adding schema types that do not match the page. Do not add Product schema to a blog post. Do not add LocalBusiness schema if you do not have a physical address. Mismatched schema can be ignored or penalized.
Manual vs Plugin: Which Approach?
Manual approach works if: You have a simple site with 5-10 pages. You only need Organization + WebWebsite schema globally. You do not mind that blog posts get generic Article schema.
A plugin is better if: You want correct Article schema on every blog post (with the right headline, date, and author for each post). You want BreadcrumbList schema generated automatically. You want to avoid maintaining JSON code across dozens of pages. You want a validator built in.
A Squarespace schema generator plugin handles all of this automatically. It detects page types, generates correct schema per page, and includes a browser console validator. Install once, structure everything.
Related: Squarespace SEO Checklist | Meta Titles & Descriptions Guide