PublishedVerifiedEvery 6 weeksSources5 namedAuthored bySquareRank Team
Code Injection · § 2.10.1 · How-to
Add JSON-LD via Squarespace Code Injection — the per-schema patterns
JSON-LD is Google's recommended structured data format2 and Squarespace's Code Injection panel is the install path for it. Site-wide schema (Organization, single-location LocalBusiness) goes in Settings > Advanced > Code Injection > Header. Per-page schema (Article, Service, Product, Event) goes in Page Settings > Advanced > Page Header Code Injection, which requires Business plan or above. The blocks below are the production-ready patterns; the validation workflow runs in Google's Rich Results Test against the live URL.
This leaf ships four working blocks: Organization for the homepage, Article for a blog post, LocalBusiness for a service page, and a Core-plan workaround for sites that cannot use per-page injection. Each block has been validated against Google's Rich Results Test before publication. The Pillar 3 schema library covers the full set of twelve schema types; this leaf focuses on the four most common Code Injection installs.
§01The pattern
The Code Injection JSON-LD pattern
Every JSON-LD block on Squarespace follows the same shape: an HTML script tag with type='application/ld+json', a JSON object inside, and the entire block pasted into the Header field of the relevant Code Injection panel. The outer wrapper is always the script tag; the inner content is always valid JSON; the JSON's '@context' is always 'https://schema.org'; the '@type' is whatever schema you are installing. Get any of those four invariants wrong and the parser silently ignores the block.
Google's structured data documentation2 recommends head placement: "We recommend placing the JSON-LD inside the <head> element of the page." Squarespace's Header injection field interpolates directly into the head, so the recommendation lines up cleanly with the panel's design. The Footer field interpolates near the end of the body, which parses correctly but is slower for crawlers; avoid it for schema.
§02Organization
Site-wide Organization injection (the homepage)
Organization schema identifies your brand as an entity to Google, ChatGPT, Perplexity, and the Knowledge Graph. The block belongs in Settings > Advanced > Code Injection > Header — site-wide, because the brand is the brand on every page. Required properties are name and url; recommended properties are logo, sameAs (your social profile URLs), and contactPoint. The pattern below is production-ready for a single-brand site.
<!-- Organization schema for your brand. Fires on every page. --><scripttype="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"Your Brand","url":"https://yourbrand.com","logo":"https://yourbrand.com/logo.png","sameAs": [
"https://www.linkedin.com/company/yourbrand","https://www.instagram.com/yourbrand/","https://www.youtube.com/@yourbrand"
]
}</script>
Replace the placeholders with your real values. The sameAs array is the entity-linking signal that the Pillar 1 ChatGPT and Perplexity leaves discuss in depth; include every public profile that represents the brand. Validate the block in Google's Rich Results Test against the homepage URL before walking away.
§03Article
Per-page Article injection (a blog post)
Article schema completes the structured data Squarespace's default Article emission omits: full author and publisher blocks, datePublished and dateModified ISO strings, and the image array. The block belongs in Page Settings > Advanced > Page Header Code Injection on the individual blog post (Business plan or above). Required properties are headline, author, publisher, datePublished; recommended are image and dateModified. The pattern below validates against Google's Rich Results Test for the Article rich result.
<!-- Article schema. Paste into the specific blog post's Page Header. --><scripttype="application/ld+json">{"@context":"https://schema.org","@type":"Article","headline":"Your blog post title here","author":{"@type":"Person","name":"Author Name","url":"https://yourbrand.com/author/"},"publisher":{"@type":"Organization","name":"Your Brand","logo":{"@type":"ImageObject","url":"https://yourbrand.com/logo.png"}},"datePublished":"2026-05-18","dateModified":"2026-05-18","image":"https://yourbrand.com/featured-image.jpg"}</script>
Required properties per Google's documentation3: headline, author, publisher, datePublished. The block above includes the recommended additions (image, dateModified) that produce richer SERP and AIO citation cards. Update dateModified whenever you edit the post; freshness signals are read by both classical Search and AI Overviews.
§04LocalBusiness
LocalBusiness on the service page
LocalBusiness schema identifies your business as a physical entity with an address, phone, and hours. For a single-location business, the block belongs site-wide in Settings > Advanced > Code Injection > Header. For multi-location businesses, ship per-location LocalBusiness blocks on each location page via Page Settings > Advanced > Page Header. Required properties are name, address, and either geo coordinates or telephone. The pattern below covers a single-location service business.
HTML / JSON-LDSingle-location LocalBusiness — site-wide Header injection
<scripttype="application/ld+json">{"@context":"https://schema.org","@type":"LocalBusiness","name":"Your Business Name","image":"https://yourbusiness.com/storefront.jpg","telephone":"+1-555-555-1212","address":{"@type":"PostalAddress","streetAddress":"123 Main Street","addressLocality":"Austin","addressRegion":"TX","postalCode":"78701","addressCountry":"US"},"url":"https://yourbusiness.com","openingHours":"Mo-Fr 09:00-17:00"}</script>
Required properties per Google's documentation4: name, address, and either geo or telephone. The block above includes openingHours which Google uses for the "Open now" indicator in local results. For multi-location businesses, drop the site-wide block, build a location page per location, and inject a LocalBusiness block on each.
§05Core-plan fallback
The Core-plan fallback when per-page injection is unavailable
The Core plan permits site-wide Code Injection but blocks the per-page panel. Per-page schema like Article therefore cannot use its native placement on Core. The workaround is a single site-wide Header block that contains a JavaScript snippet which conditionally injects the right schema based on the current URL. Functional, brittle, and an argument for upgrading to Business — but it works.
HTML / JSCore-plan workaround: conditional schema injection by URL
After every injection, open Google's Rich Results Test (https://search.google.com/test/rich-results) and paste the live URL the schema applies to. The tool fetches the rendered HTML, parses every structured data block, and reports validation errors plus rich-result eligibility. A clean validation shows no errors, no warnings (except 'recommended properties missing' which are non-blocking), and a 'Page is eligible for rich results' confirmation. Run Schema.org's validator in parallel for structural correctness independent of rich-result eligibility.
The most common validation failure is the curly-quote contamination discussed in the cluster hub. The second-most-common is a missing or malformed image URL: the image property must be a fully qualified URL (https://yourbrand.com/image.png), not a relative path. The third is forgetting to update the author URL when the founder page moves.
The post-injection checklist
0
errors permitted by Google's Rich Results Test — every error blocks rich-result eligibility.
Schema is not set-and-forget. Update Organization sameAs when you add a social profile. Update LocalBusiness hours when you change hours. Update Article dateModified whenever you meaningfully edit the post (typo fixes do not count; new sections do). Update Product price and availability whenever they change. Stale schema is a passive ranking-and-AIO penalty: the engine reads the structured data, notices it contradicts the page content, and lowers its trust in the page as a citation candidate.
For Article specifically, the dateModified field is the freshness lever AI Overviews and ChatGPT read most directly. A post you updated meaningfully in May 2026 should carry a May 2026 dateModified, not its original 2023 datePublished. Update both the JSON-LD and any visible "last updated" date on the page so the signals line up. The Article schema leaf in Pillar 3 covers the freshness pattern in detail.