A chat widget on Squarespace needs Code Injection, and at the time of writing (October 2026) that is included on the Core, Plus and Advanced plans and some legacy billing plans, but not on Basic. If your plan includes it, paste the widget's script tag into the Footer box and it loads on every page. If you're on Basic, you'll need to change plan first.
Squarespace has renamed and reshuffled its plans more than once, so here is how to check yours, where the code should go, and why it sometimes seems not to work when it does.
Which plans include Code Injection
Squarespace's help center article on code injection says it is available in the Core, Plus, Advanced and some legacy billing plans. Its pricing page, at the time of writing, shows three plans side by side (Basic, Core and Advanced) and lists Code Injection on Core and Advanced only. The pricing page describes the feature as adding code that affects your entire site or a single page, "like Meta Pixel or live chat services".
The quickest way to check your own site is to open your billing panel and read the plan name. If it says Basic, Code Injection isn't included. If it's an older plan name you don't recognise, open the Code Injection panel and see whether you can save code there.
Two plan changes are worth knowing about:
- Downgrading switches it off. Squarespace's premium features article says that on a downgrade to Basic, Code Injection is disabled. The code stays in the panel for reference but no longer affects your site, so your chat widget quietly disappears.
- Trials include it. Squarespace says that during the 14-day trial you get most premium features, including site-wide and per-page code injection. The only exception it lists is code injection on the lock screen.
Header or Footer: where the widget goes
The Code Injection panel has a Header box and a Footer box. Squarespace says Header code is injected into the head of every page, and Footer code is injected before the closing body tag on every page.
Use the Footer box for a chat widget. The reason is loading order. A script in the head is fetched before the page content is drawn, so a slow third-party file can hold up everything above it. In the footer, your page renders first and the chat button appears a moment later, which is what you want.
SpideyChat's widget would work from the Header box too. If the page body doesn't exist yet when the script runs, it waits for the document to finish loading before it adds the button. It's simply slower for your visitors, so there's no reason to choose it.
Showing chat on some pages only. Squarespace also has page-level code injection, reached from the gear icon on an individual page. That adds code to that page's header area. Put the snippet there instead of in the site-wide Footer box if you only want chat on, say, your pricing and contact pages.
Why you can't see it after saving
This catches almost everyone on Squarespace. Squarespace's help center says injected code doesn't display in the site editor preview, although it does appear to visitors. Its custom code article adds that some code may not appear for you while you're logged in, even when visitors can see it.
So the test is always the same: open your live site in a private or incognito window. If the chat button shows there, the install worked.
If it still doesn't show:
- Check the snippet. View the page source and search for widget.js. You should find one script tag with your bot ID in its data-bot-id attribute. If you're not sure which ID is yours, see find your bot ID.
- Rule out another script. Squarespace has a safe mode for troubleshooting. Its help center says that adding /safe after /config in your editing address temporarily disables scripts.
- Read the browser console. SpideyChat writes a line starting with [SpideyChat] when something is wrong, such as a missing bot ID or a website that isn't on the license. Our troubleshooting checklist explains each message.
Squarespace says custom code is outside the scope of its own support, so the widget vendor is the right first contact if none of this helps.
Changing the widget without touching Squarespace again
Once the snippet is in the Footer box, you rarely need to open Code Injection again. The script tag only carries your bot ID. The widget fetches the chatbot's colour, greeting and settings from SpideyChat each time a page loads, so a change you make in the SpideyChat dashboard shows on the live site without re-pasting anything. The same goes for training: when you add a document or re-crawl your pages, the answers change, not the code.
The trial domain trap
If you install during a Squarespace trial, the first address the widget loads on is usually your built-in domain, which ends in squarespace.com. Squarespace says trial sites are private, but you'll still visit yours while building it.
A SpideyChat chatbot registers the first website it loads on. Your custom domain, once connected, is a different website. On the Free plan, which covers 1 website per chatbot, the custom domain would then be turned away and the widget would remove itself there. Before launch, open License & websites on your chatbot's page and add your real domain, or remove the built-in address. Starter covers 3 websites and Pro 10, and subdomains of a listed website are included. There's more on this in chatbot not loading on a new domain or staging site.
Before you paste anything
Confirm your plan includes Code Injection, put the script tag in the Footer box, and test in a private window. The Squarespace integration page has the install steps, and you can run a free test of the assistant against your site from there before you change a single setting.