Integrations ★ Notion
Testimonials on Notion, without a script tag
Notion is the one platform on this list where the answer is no: its embed block takes a URL, never markup, so the tag itself has nowhere to run. What works is putting the tag one layer out — a Notion-site builder like Super that places custom code on the page, or an embed block showing a page you already control.
- Where the tag goes
- Not on Notion itself — the embed block accepts a URL, not markup. On a Notion site rendered by Super, in a code block that starts with super-embed:, placed where the section belongs.
- Plan needed
- No Notion plan runs custom code. On Super, custom code starts on the Personal Site plan at $16/month — it is not on Super's free plan.
01 Where the tag can go, and where it cannot
First the fact, so nothing downstream surprises you. Notion’s embed help says to paste
“the embed URL provided by the content’s source. For example, this should start
with https not <iframe” — a field that rejects an
iframe tag has no path for a script tag. Pasting the tag into a Notion code block just
displays it as text. There is no setting, on any plan, that changes this.
Route one: a Notion-site builder that places custom code. Super renders your Notion content as its own website, and loads the HTML from specially marked code blocks exactly where they sit — which is what this widget needs, because it draws itself at the spot its tag occupies:
-
In Notion, type
/codeto make a code block where the testimonials belong. -
Put
super-embed:on its first line, and the script tag on the line below. - Refresh the page in Super. The widget renders where the block sits.
Skip Super’s site-wide Head and Body code boxes for this. The widget renders at the exact spot its tag sits, so a tag filed into the page’s head has no visible spot to render at — the code block, placed where the section belongs, is the whole install.
Route two: an embed block showing a page you host. If any page you control already runs the tag — your main site, most likely — Notion will frame it: hover a new line, click +, choose Embed, paste that page’s URL, and drag the black bars to size it. Be clear-eyed about what this is: the widget runs on your page inside an iframe on the Notion page, in a fixed rectangle you size by hand. It works, and it is the only route that costs nothing — but it is showing the widget through Notion, not installing it on Notion.
02 Whose gate it actually is
On the Notion side there is nothing to buy. The docs for published Notion Sites enumerate everything a site can customize — share preview, theme, favicon, header, SEO title and description, and Google Analytics via a measurement-ID field — and custom code is not in the list on any plan. Even the paid extras point elsewhere: a custom domain is a separate add-on, and the “Built with Notion” watermark only turns off on one. Neither buys script execution.
The gate that exists is Super’s. Custom code appears on
Super’s Personal Site plan at $16/month and up; the free plan hosts a
site but carries no code features, and the super-embed: mechanism is likewise
“a native feature of paid plans”, in Super’s words. Super is not the only
Notion-site builder — if you use another, look for its convention for placing custom
HTML inside a page.
Sources
- Notion — Embed content on Notion pages
- Notion — Edit & customize your Notion Sites
- Notion — Notion Sites availability & pricing
- Super Help Center — Custom embeds on a Notion or Super page
- Super — Pricing
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 so this page gets fixed.
03 When the widget doesn’t show up
- You pasted the tag into a Notion code block and the page shows the code as text.
- That block displays code; it never executes it. Nothing is misconfigured, and no retry will change the outcome — on plain Notion this route does not exist. Use one of the two routes above.
- The embed block says Failed to Load.
- Notion documents it: “Some websites prohibit their content from being embedded elsewhere. If you receive a Failed to Load error, that’s why.” The page you point the embed at must allow being framed — if it is your own page, check it for frame-blocking headers before blaming Notion.
- A super-embed block prints as text, or nothing renders on the Super site.
-
Three checks: the Super plan (code features are paid — a free site skips the block
entirely), the block’s first line (exactly
super-embed:, tag on the next line), and a refresh of the page in Super after editing in Notion. Keep the tag in the block — Super’s generic advice to move misbehaving scripts into head code does not fit a widget that renders where its tag sits. - The embedded widget is cut off at the bottom.
- A Notion embed is a fixed rectangle you resize by hand — “drag the black bars that appear on the sides” — and it does not grow when new testimonials are approved. Re-drag it after the set grows, or pick a widget design with a fixed footprint, like a carousel or a single quote, and never think about it again.
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 Notion 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 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 Notion 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 a Super-rendered site or your embedded page would load. 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 prices all three routes: setup, upkeep, and page weight. Once you know the quotes are arriving, the layout patterns guide covers which shape to show them in, and getting permission first covers the part most sites skip.
The same tag, in another editor
- WordPress Custom HTML block
- Webflow Code Embed element
- Wix Embed HTML element
- Squarespace Code block
- Shopify Custom Liquid section
- Framer Embed component
- Ghost HTML card
- Carrd Embed element
- Bubble HTML element
- Kajabi Custom Code block
- Teachable Custom HTML block
- Podia Site-wide code field, or its native section
- Skool None — images and links only