Squarespace has no plugin runtime, so Busymate AI reaches a Squarespace site through the universal embed — one script tag placed via a Code Block or Embed Block inside a page. Squarespace's own Code Injection (a site-wide header/footer script, the simplest path on WordPress/Ghost/BigCommerce) is a paid-plan feature on Squarespace — it is greyed out behind an upgrade prompt on the free trial and on the entry Personal plan, so start with the block-based path below if you're not sure which plan you're on.
Before you start
- A Squarespace site with editor access.
- Know your plan: Business plan or higher unlocks Code Injection (Settings → Advanced → Code Injection). Below that, a Code Block or Embed Block on each page is the free-tier path.
- Your site's Site Availability (Settings → Advanced → Developer Tools → Website Protection, or Settings → Website → Site Availability) must be Public for the embed to render for visitors — Password Protected or Private sites keep the whole page (and the embed with it) behind a gate. On a 14-day trial, "Public" is itself paid-plan-gated ("Upgrade to publish") — only Password Protected, Private, or (Enterprise) SSO Protected are selectable until the site is on a paid plan, independent of whether Code Injection is unlocked. Building the demo/knowledge/connector pieces below does not require publishing; a real visitor reaching the widget does.
- Your workspace open in the Console.
1. Add the embed
If your plan has Code Injection (Business or higher):
-
Open Settings → Advanced → Code Injection.
-
Paste the one script tag from your Console connection settings into Header:
<script src="https://busymate.ai/embed/v1.js" data-assistant="<your-workspace-slug>" data-label="Ask us" async></script>
-
Save. The floating widget now appears on every page — nothing else to configure for that part.
On a plan without Code Injection:
- Open the page you want the widget on (or repeat this on every page) in the Squarespace editor.
- Add a Code Block (or an Embed Block, which wraps the same idea) and paste the same script tag.
- Save and publish the page — a block's script only runs on the published site, not in the editor preview.
Either way, the widget needs your site to be Public to render for a real visitor — see "Before you start" above.
2. Register the page's own actions (WebMCP)
Alongside the embed script, a second small script can register the page's own actions — "view the class schedule," "book a session" — through the standard document.modelContext WebMCP surface, so the assistant can act instead of only answering. Drop it in the same Code Block/Embed Block or Code Injection panel, after the embed script tag. See Add page actions with WebMCP for the shape.
3. Teach it your content
Point a website source at your own Squarespace site URL — the same crawler every connection uses, reading your published pages and citing back to the page an answer came from.
4. Recognize signed-in customers
Squarespace's native Member Areas feature (on Business/Commerce plans) is the identified-visitor layer: register your own site (or a small backend you control) as an identity provider — see Recognize signed-in customers for the exact fields (issuer, JWKS URL, the launch endpoint) — then define window.BusymateAI.getIdentity before the embed <script> tag (the embed captures it once at load) so a signed-in customer is recognized without asking twice. Without Member Areas, register a small backend of your own as the identity provider for a fixed set of accounts instead.
5. Connect Commerce data (products, orders, inventory)
For a store or class-booking site, Busymate AI can answer from your real Commerce data — not just crawled page text — through a Squarespace Developer API key. Unlike Code Injection and Site Availability, minting this key is not plan-gated: it works on the 14-day trial.
- Open Settings → Advanced → Developer Tools → Developer API Keys.
- Generate Key, name it, and check the read scopes you need — typically Products, Inventory, Orders, Transactions, and Profiles (each shows a "Premium Feature" banner when checked, but generation still succeeds on a trial). Read Only is enough for the assistant to answer from your data; it never needs Read and Write.
- Copy the key immediately — Squarespace shows it exactly once — and store it via Console → Connections or the
create_app_secret MCP tool so it lands encrypted in the Vault, never in a chat log or file.
- Two endpoint quirks worth knowing before you wire a connector: the classic
GET /1.0/commerce/products only covers Physical/Digital/Gift Card products — a class/appointment Service product (Squarespace Scheduling) returns an empty list there even when real services exist. GET /1.0/commerce/inventory DOES list Service products (by SKU/descriptor/stock), so it is the practical read path for a services/classes business today. GET /1.0/commerce/orders and GET /1.0/profiles read real transactions/customers once your site has any — both are correctly empty on a fresh site.
Manage from any MCP client
Every step above is available from any MCP client on your own account:
claude mcp add --transport http busymate-ai https://busymate.ai/mcp
Troubleshooting
- The widget never appears — check Site Availability first (Password Protected/Private sites gate the whole page); then check the browser console for a blocked or 404'd request to
/embed/v1.js.
- The Code Injection panel is greyed out — that's a plan ceiling, not a bug: use a Code Block/Embed Block on each page instead, or upgrade the plan.
- A signed-in visitor is still treated as a guest —
getIdentity must be defined before the embed script tag runs; check it with window.BusymateAI.getIdentity() in the browser console.
- Knowledge answers feel stale — a website source re-crawls on its own schedule; re-index it manually from the Knowledge base page after publishing a change.
Verify
- Open your published, Public site in a private window: the floating widget appears and answers from your own pages, with citations.
- If you wired identity, sign in and ask the assistant something only a signed-in visitor should see — the reply recognizes that visitor.
- Ask it to hand off to a person — the conversation reaches your Inbox.
Next
- Teach your assistant your own content — pages beside whatever else you connect.
- Add page actions with WebMCP — let the assistant act on the page, not just answer.
- Recognize signed-in customers — the proof your
getIdentity bridge hands off, registered as an identity provider.
- Set up human handoff — staff the Inbox before visitors start asking to talk to someone.