---
title: "Squarespace testimonial widget — one Code block"
description: "Squarespace testimonial widget in one script tag: paste it into a Code block. Which plans run JavaScript, the Display Source toggle, and Safe Mode preview."
url: https://testymo.com/integrations/squarespace
---

[Integrations](https://testymo.com/integrations) ★ Squarespace

# Testimonials on Squarespace, in one Code block

Squarespace takes the tag in a Code block. Two things trip people up, and neither is the paste: the lower plans will not run JavaScript in a Code block at all, and a logged-in editor is often shown an empty block that visitors can see perfectly well.

- **Where the tag goes** — A Code block: hover the section, click Add block or +, click Code, then the pencil icon to paste.
- **Plan needed** — Core, Plus, Advanced, Business, Commerce Basic or Commerce Advanced. On other plans a Code block takes HTML and CSS but will not run JavaScript.

## 01 Where the tag goes in the Squarespace editor

Squarespace calls it a **Code block**, and it goes in the section where the testimonials belong.

1. Edit the page or post.
2. Hover over the section and click **Add block** or **+** to open the block menu, then click **Code**.
3. Open the block editor by clicking the **pencil** icon on the block.
4. Paste the script tag into the text field.
5. Leave **Display Source** switched **off**. That toggle exists to print code on the page as visible text; switched on, your visitors read the tag instead of seeing the testimonials.
6. Save, and view the published page.

Squarespace lays sections out on a grid, so drag the block to the width and position you want the testimonial section to occupy. The widget fills whatever the block is given.

## 02 Which Squarespace plans can run it

Squarespace splits Code blocks in two by plan, and the split is exactly where a widget lands. Its help center states: “Adding JavaScript or iframes to code blocks is available in the **Core, Plus, Advanced, Business, Commerce Basic, and Commerce Advanced** plans.”

Every other plan still gets Code blocks — “on all plans, code blocks support plain text, HTML, Markdown, and CSS code surrounded by `<style></style>` tags” — but a testimonial widget is a `<script>`, which is JavaScript, and on those plans it will not run. Nothing about the tag can change that: the gate is on the platform executing scripts, not on the widget.

If your plan is not on that list, the honest options are to move up to one that is, or to build the section from Squarespace’s own Quote blocks and maintain it by hand. The [full comparison of the three routes](https://testymo.com/blog/add-testimonials-to-website) prices that trade-off properly — hand-built blocks are genuinely fine for a small set of quotes that will not change often.

Sources

- [Squarespace — Code blocks](https://support.squarespace.com/hc/en-us/articles/206543167-Code-blocks)

Plan names and menu labels are the platform’s to change. If what you see differs from what is written here, the linked page is the authority — and [tell us](mailto:support@testymo.com) so this page gets fixed.

## 03 When the widget doesn’t show up

- **The block is empty while you are logged in.** — Almost always a false alarm, and Squarespace documents it: “as a security measure, sometimes your code won’t appear when you’re logged in, even if visitors can see it. If you can’t see the code you added to a code block, click **Preview in Safe Mode** to view the embedded item.” Do that, or open the live page in a private window, before changing anything.
- **The page shows the script tag as text.** — **Display Source** is switched on. Turn it off in the block editor and save; that toggle is for showing code to readers, not running it.
- **It renders nowhere, logged in or out.** — Check the plan against the list above. This is the one failure on Squarespace with no workaround at the widget end — on a plan that does not run JavaScript in Code blocks, no embed from anyone will appear.
- **You approved a new testimonial and the page has not changed.** — The widget is served with `cache-control: no-store`, so it is fetched fresh on every page load and cannot go stale behind a cache. If the set has not changed, the submission is still sitting in the approval queue — nothing appears publicly until you approve it, which is the point.

## 04 What the one tag actually does

The line you paste is a plain external script. There is no plugin, no app to install, no account to connect on the Squarespace side, and nothing to configure in the editor afterwards. Testymo generates the tag when you create a widget; the address in it is your widget’s own, and this is the live demo one:

```
<script src="https://testymo.com/w/demo.js" async></script>
```

The server builds that script per request: the rendering code and your approved testimonials arrive together in one response, so the page makes **one request and no follow-up fetches**. The demo tag printed above weighs 16.7 KB of JavaScript, about 6 KB over the wire. That figure covers the demo widget's eight quotes. The testimonials ride inside the script rather than arriving in a second request, so a wall carrying thirty of them weighs thirty quotes' worth of text — measure the embed you paste in, not this one. The [page-speed guide](https://testymo.com/blog/testimonial-widget-page-speed) has the method behind that number, and the case for measuring whatever you embed rather than trusting the category.

It renders into an open shadow root at the exact spot the tag sits, which makes the styling isolation work in both directions: your Squarespace theme cannot restyle the widget by accident, and the widget’s CSS cannot leak into your page. It sets no cookies, calls no third party, and reads nothing about your visitors. When you approve a new testimonial, it appears on the next page load — you never touch the site again.

## 05 The widget, running on this page

Everything below this line was drawn by that one script tag — the same file, on the same terms, that you would paste into Squarespace. Eight approved testimonials in the wall design, rendered as a free plan renders them, footer link and all.

## 06 Where to go next

An embed script is one of three ways to put testimonials on a site, and it is not always the right one — a handful of quotes that will not change for a year are better hand-coded. [The full guide to adding testimonials to a website](https://testymo.com/blog/add-testimonials-to-website) prices all three routes: setup, upkeep, and page weight. Once you know the quotes are arriving, [the layout patterns guide](https://testymo.com/blog/how-to-display-testimonials) covers which shape to show them in, and [getting permission first](https://testymo.com/blog/permission-to-use-testimonials) covers the part most sites skip.

The same tag, in another editor

- [WordPress Custom HTML block](https://testymo.com/integrations/wordpress)
- [Webflow Code Embed element](https://testymo.com/integrations/webflow)
- [Wix Embed HTML element](https://testymo.com/integrations/wix)
- [Shopify Custom Liquid section](https://testymo.com/integrations/shopify)
- [Framer Embed component](https://testymo.com/integrations/framer)
- [Ghost HTML card](https://testymo.com/integrations/ghost)
- [Carrd Embed element](https://testymo.com/integrations/carrd)
- [Notion Via Super, or an embed block](https://testymo.com/integrations/notion)
- [Bubble HTML element](https://testymo.com/integrations/bubble)
- [Kajabi Custom Code block](https://testymo.com/integrations/kajabi)
- [Teachable Custom HTML block](https://testymo.com/integrations/teachable)
- [Podia Site-wide code field, or its native section](https://testymo.com/integrations/podia)
- [Skool None — images and links only](https://testymo.com/integrations/skool)

The part before the tag

Pasting the script is the last step, and the easy one. Testymo is the rest: a testimonial form people actually finish, your approval on every word before it goes public, and the permission recorded alongside it. Free to start — no card, no view meters.

[Collect your first testimonial →](https://testymo.com/app?utm_source=integrations&utm_campaign=squarespace)
