seoDoes SEO Work for a Teachable School? Part 1: Getting Google to Look
Teachable schools don't come with a sitemap and you can't upload one. Here's how I got my school into Google Search Console anyway, and how I'm tracking whether it actually ranks.
"Does SEO actually work on Teachable?" is one of the questions I've been asked a lot over the years, and I've never had a proper answer. Mostly I've said something like "it can, but don't rely on it", which isn't very helpful.
I'm going to test it on my own school and write up what happens.
I've just rebuilt purplehippo.teachable.com from scratch. The centrepiece is a free course, Teachable, without the limits, and every lesson in it is open to the public. The whole point of the course is to show people what Teachable can do, and that only works if people can find it.
This is Part 1, the setup: getting Google to know the school exists and setting up a way to measure what happens. Part 2 will be the results, in about six to eight weeks, whatever they turn out to be. There may even be a part 3, with some tweaks and a further few weeks to check those results. So, stay tuned and we'll see if SEO is actually worth it or even possible with a Teachable school.
Where I started
Before changing anything I wanted a baseline.
Searching Google for site:purplehippo.teachable.com returned three pages. Search Console also told me the school was "first indexed by Google more than 10 years ago", which is true, it's been there since the old Teachable 1.0 days. But that old content isn't what I want people to find.
Searching for the obvious things, 'Teachable school demo', 'Teachable example' and 'Teachable showcase', didn't show the school anywhere. Searching for 'Teachable purplehippo' returned my main site, teachable.expert and an AI overview all about me (which was a bit unnerving), but not the new school.
One more thing before we start. The school is on the default purplehippo.teachable.com address, not a custom domain. From the schools I've worked on it's a fairly even split, probably leaning towards custom domains (I usually set one up as a free extra at the end of a project). I've kept mine on the default address on purpose. It's the harder case, since you're sharing a domain with thousands of other schools and not building on your own brand, so if it works here it should work at least as well on a custom domain. The steps below are the same either way. I checked a client's school on a custom domain and /sitemap.xml returns the same 404, so you still can't upload a sitemap there.
Step 1: Check for a sitemap (there isn't one)
A sitemap is a file that lists every page on your site, so Google doesn't have to find them all by following links. Most website platforms create one for you automatically.
Teachable doesn't. If you go to yourschool.teachable.com/sitemap.xml you'll get a 404. The school's robots.txt file (the file that tells search engines where they can and can't go) only blocks the admin areas and doesn't mention a sitemap at all.
So Google has only been finding pages on Teachable schools by following links to them. If nothing links to a lesson, Google probably doesn't know it's there.
Step 2: Add the school to Google Search Console
Google Search Console is Google's free tool for seeing how your site appears in search. You have to prove you own a site before it'll show you anything.
When you add a property, choose URL prefix and enter https://yourschool.teachable.com/. The other option, 'Domain', needs access to DNS settings for teachable.com, which none of us have.
To verify, pick the HTML tag method. Google gives you a single <meta> tag, and you paste it into the head section of your school's code snippets in Teachable's settings. If you already have Google Analytics or Google Tag Manager on the school, either of those also counts as verification.
Step 3: Write the sitemap yourself
Since Teachable won't make one, I wrote it by hand. It's a simple file, just a list of addresses:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://purplehippo.teachable.com/</loc>
<lastmod>2026-10-01</lastmod>
</url>
<url>
<loc>https://purplehippo.teachable.com/courses/3033045/lectures/66897988</loc>
<lastmod>2026-10-01</lastmod>
</url>
<!-- ...and so on, one <url> per page -->
</urlset>Mine has 60 pages: the homepage, the course sales page, /courses and all 59 lessons. Lesson addresses on Teachable look like /courses/COURSE-ID/lectures/LESSON-ID. The easiest way to get them all is to open the course curriculum and copy the links.
What I left out:
- Sign-in and checkout pages.
- Terms and privacy pages (nothing wrong with them, they're just not what I want people finding).
- Pages that aren't finished yet. Sending Google to a 'coming soon' page doesn't help anyone.
The important part is that any lesson you list needs to be public, or set as a free preview. If it isn't, Google gets the sign-in page instead of your lesson, and that won't rank for anything.
I wrote an article on how you can use liquid to generate a sitemap.
Step 4: Host it somewhere you control
You can't upload files to the root of a Teachable school, so there's nowhere on the school to put the sitemap.
Google does allow a sitemap on one site to list pages on a different site, as long as you've verified both sites in the same Search Console account. I already had my main site, purplehippo.io, in Search Console, so I put the file there.
purplehippo.io is an Astro site on Netlify, so that meant dropping sitemap-teachable.xml into the public/ folder and pushing it live. On WordPress you'd upload it to the site's root folder with FTP or your host's file manager. Give it a name that won't clash with your site's own sitemap, and open the address in a browser afterwards to make sure you see the XML and not your 404 page.
It doesn't affect your main site's SEO at all. Google judges each sitemap by the pages listed in it, and every page in mine is on the Teachable school.
Step 5: Submit it from the right property
I never knew you could submit a sitemap for another domain from an existing property, and Search Console doesn't make it obvious. In the school's property, the 'Add a new sitemap' box already has https://purplehippo.teachable.com/ filled in, so you can't enter an address on another site.
You have to switch to the property where the file lives (purplehippo.io in my case), go to Sitemaps, and submit it there. If that property is a 'Domain' property, you'll need to type the full address.
A day or so later it showed Success, 60 pages discovered. So the cross-site approach works for a Teachable school, which I wasn't completely sure it would.
Step 6: Give it a nudge
While you wait, use URL Inspection in the school's property on your most important pages and click 'Request indexing'. You only get a handful a day, so I started with the homepage, the sales page and a few of the strongest lessons.
A waiting game
Search Console saying nothing. A few days in, the Pages report still showed nothing indexed and there was barely any search data. Meanwhile one of my lessons was already showing on page one. Search Console is just slow with a new property. Performance data runs two to three days behind and the Pages report can take a week or two to fill in. Don't judge anything in the first fortnight.
How I'm measuring it
Checking Google by hand now and again isn't good enough. Results are personalised to your location and history, and it's easy to remember the good days. So I'm keeping a weekly log of:
- How many pages are indexed.
- Impressions, clicks and average position from Search Console's Performance report.
- Where the school appears for 20 searches I'm tracking.
- What I changed that week, so I can tell which change caused what.
The searches fall into a few groups. There are my original three 'proof' searches (Teachable school demo, example, showcase). There are specific problems the lessons answer, like 'teachable dark mode', 'teachable webhooks', 'teachable custom css' and 'teachable api v2'. And there are broader ones like 'can you customize teachable'.
A note on counting positions, since Google doesn't show them. I'm only counting the normal results (title, address and description) and skipping the AI overview, videos, 'People also ask' and ads. Search Console counts differently: each of those blocks takes up a position. So my count and Search Console's average won't match, and the gap between them says a lot about how much of the page Google now fills with its own content. I'm also noting whether the AI overview quotes one of my lessons, since that may end up mattering more than an ordinary ranking.
Early results (very early)
Before the sitemap had even been processed, a few lessons were already ranking:
- 'teachable dark mode': #2 (the Why Teachable has no dark mode lesson)
- 'teachable html block in lessons': #5 → NIL
- 'teachable custom css': #6
- 'teachable purplehippo': #14
The broad searches still show nothing. That's what I expected. 'Teachable example' is up against Teachable's own site and every review site out there. The specific searches, where a lesson answers one exact question better than anything else, look like where a Teachable school has a real chance.
'teachable purplehippo' is also up against my own domains (https://purplehippo.io) which came in at #1, so the lesson being down on page 2+ is not unexpected.
It's very early, so I'm not reading too much into it yet.
What's next
I'll keep the log going every week and write Part 2 in six to eight weeks with the actual numbers. That means what got indexed, what ranked, what didn't, and whether any of it brought people to the school.
In the meantime, if you want to do the same on your own school, everything above takes about an hour. And if you'd like a hand with it, get in touch.
Purple Hippo Web Studio
Need this built, not just documented?
We build custom Teachable integrations, webhook infrastructure, and B2B enrollment portals. Fixed scope, fixed price, no surprises.
Get in touch