---
title: "Teachable testimonial widget — the Custom HTML block"
description: "Teachable takes a testimonial widget in a Custom HTML block — one script tag. New schools ask support to enable the block; head Code Snippets are for pixels."
url: https://testymo.com/integrations/teachable
---

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

# Testimonials on Teachable, in a Custom HTML block

Teachable's page editor takes the tag in a Custom HTML block, on your school, sales or thank-you pages. The catch is not a plan: new schools get the block enabled by asking Teachable Support — a security default its docs state plainly. And the feature that sounds like the answer, Code Snippets, puts code in the page head, where no visible widget can render.

- **Where the tag goes** — A Custom HTML block in the page editor — Site → Pages, Edit the page, Add New Block, then Custom HTML. On a new school, ask Teachable Support to enable the block first.
- **Plan needed** — No plan gates the block; the gate is school age — new schools contact support to enable Custom HTML. The site-wide Code Snippets need Builder or above, and are head-only.

## 01 Where the tag goes in Teachable

Teachable calls it the **Custom HTML** block — in the current Page Editor 2.0, under the Basics block category — and its own form-embedding walkthrough is this exact motion: “add a Custom HTML block to your site, sales, or thank you page. Paste in the embed code”.

1. In your school admin, go to **Site → Pages** — school pages and product pages each have a tab (product pages are also reachable from the course or coaching product itself).
2. Click **Edit** on the page that should carry the testimonials.
3. Click **Add New Block** in the left sidebar and choose **Custom HTML**.
4. Paste the script tag in, check the page preview, then click **Add** — and **Update** on the editor to save the page.

**On a new school there is one step before step one.** Teachable’s docs: “In order to maintain best security practices, Custom HTML blocks are not enabled for new schools.” The remedy the same note gives is to log in and contact Teachable Support and ask for the block — a support message, not an upgrade.

Inside course lessons the same job has a different name: the lesson editor’s **Custom Code** block takes embed snippets there. A testimonial’s work is usually done on the public sales page, before anyone enrolls — but if you want proof inside the course too, that is the block to use.

The feature that sounds right and is not: **Site → Code Snippets**. Every field on that screen — Head Code Snippets, Logged In, Logged Out — injects “inside the head tag”, in its own words. That is the right place for pixels and chat loaders, and the wrong place for a widget that renders where its tag sits.

![Teachable's Code Snippets screen: CSS, Head Code Snippets, Logged In and Logged Out sections, each described as injecting inside the head tag on all pages](https://testymo.com/integrations/teachable-code-snippets.webp)

The Site → Code Snippets screen — note every section says “inside the head tag”. Screenshot from [Teachable’s Code Snippets help](https://support.teachable.com/en/articles/11682515-code-snippets-and-custom-css).

## 02 The gate that isn't a plan

**The block itself is not plan-gated.** Neither the Custom HTML block article nor the page-editor guide names a plan requirement, and the pricing page’s comparison table has no custom-HTML row at all. The documented gate is the one above: new schools have the block off by default and ask support to turn it on.

**Code Snippets are plan-gated:** “School owners on the Builder plan and above can add Meta tracking pixels, analytics tools, and other web services to their school using Code Snippets.” Builder is $89/month ($69 billed annually) between Starter and Growth — but since every snippet field is head-level, that gate matters for your analytics, not for this widget. The block is where the widget lives, on any plan that can get it enabled.

Sources

- [Teachable — Custom HTML Block Snippets](https://support.teachable.com/en/articles/11682505-custom-html-block-snippets)
- [Teachable — Create & Edit Your School and Product Pages](https://support.teachable.com/en/articles/11682502-create-edit-your-school-and-product-pages)
- [Teachable — Code Snippets and Custom CSS](https://support.teachable.com/en/articles/11682515-code-snippets-and-custom-css)
- [Teachable — Embed Forms and Other Content into Lessons](https://support.teachable.com/en/articles/11682457-embed-forms-and-other-content-into-lessons)
- [Teachable — Pricing](https://teachable.com/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](mailto:support@testymo.com) so this page gets fixed.

## 03 When the widget doesn’t show up

- **There is no Custom HTML option in the Add New Block list.** — Your school most likely counts as new — the block is disabled by default for security, and no plan change adds it. Log in and contact Teachable Support to have it enabled; the docs point exactly there.
- **You pasted the tag into Head Code Snippets and no widget appears.** — Those fields inject inside the `<head>` on every page, and nothing visible can render there. Move the tag into a Custom HTML block placed where the section belongs — the snippet fields are for code that works invisibly.
- **An older tutorial shows different blocks, or plans named Basic and Pro.** — It predates the current platform. Schools created after September 18, 2019 have only Page Editor 2.0 — the Add New Block flow described above — and the current plans are Starter, Builder and Growth. Where a tutorial and Teachable’s own help disagree, the help pages linked below are the authority.
- **Teachable Support says they cannot troubleshoot the code.** — Documented policy, not a brush-off: custom code is outside their support scope. The tag is one line, so there is little to troubleshoot on the Teachable side — and if the widget itself misbehaves, that is ours to fix, not yours.

## 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 Teachable 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 Teachable 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 Teachable. 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)
- [Squarespace Code block](https://testymo.com/integrations/squarespace)
- [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)
- [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=teachable)
