CSI Teachable Replacement App
BlogContactFAQFeaturesHow it worksIntegrationsSecurityUse cases
Join the waitlist
CSI Teachable Replacement AppJoin the waitlist
CSI Teachable Replacement App
HomeBlogContactFAQFeaturesHow it worksIntegrationsSecurityUse cases
Join the waitlist



CSI Teachable Replacement App
BlogContactFAQFeaturesHow it worksIntegrationsSecurityUse cases
TermsPrivacyData Processing

© 2026 CSI Teachable Replacement App

HOW IT WORKS

From Teachable export to live SSO-gated platform in four stages

No spreadsheets. No copy-paste. The platform connects directly to your Teachable school, reconstructs every course structure, re-hosts every asset, and makes the result available the moment your learners sign in with their existing identity provider.

STAGE 01 — CONNECT & DISCOVER

Point it at your Teachable school. It maps everything.

An admin enters the Teachable school URL and credentials in the import wizard. The platform authenticates, establishes a persistent scraping session, and crawls the course catalog — returning every course title, slug, and publication status as a selectable list. Credentials are AES-256 encrypted at rest and never appear in logs or API responses.

  • Secure credential entry with AES-256 encryption

  • Full course catalog discovery in one pass

  • Admin selects which courses to import before anything downloads

Import jobs dashboard showing active and past Teachable import jobs
  1. STEP 01 — AUTHENTICATE

    Session established with Teachable

    The import worker submits admin credentials to Teachable's login form, captures the authenticated cookie session, and holds it open for the full crawl. Rate limiting is enforced automatically to avoid triggering CAPTCHA or IP blocks.

  2. STEP 02 — EXTRACT

    Course structure and content pulled in full

    For each selected course the scraper walks the curriculum editor, recording every section title, lesson title, lesson type, and ordering. It then fetches each lesson page to extract HTML body text, embedded video iframes, image tags, and attachment download links.

  3. STEP 03 — MIGRATE ASSETS

    Every image and file re-hosted under your org

    The pipeline downloads each image and document from Teachable's CDN and re-uploads them to Vercel Blob under your organization's path prefix. Identical files are deduplicated by content hash. All CDN references in lesson content are rewritten to point to the new signed URLs.

  4. STEP 04 — MATERIALIZE

    Imported content becomes live platform content

    HTML extracted from Teachable is converted to the platform's TipTap/ProseMirror JSON format — preserving headings, paragraphs, bold/italic, lists, and code blocks. The final step writes courses, sections, lessons, and attachments to production tables through the same schema used by the manual course builder.

console
0.1s→ POST /sign_in credentials supplied
0.4s✓ Session cookie captured
0.6s Rate limiter armed — 1 req/s max concurrency
1.2s→ Crawling curriculum: 4 sections, 31 lessons
2.8s→ Extracting lesson HTML, video iframes, attachments
4.1s✓ Structure skeleton complete — ready for asset pass
4.3s→ Downloading 47 assets from Teachable CDN
5.9s Dedup check: 6 assets skipped (already exist)
7.2s✓ 41 assets re-hosted — all URLs rewritten
7.4s→ Converting HTML → TipTap JSON for 31 lessons
8.6s→ Writing to production: courses, sections, lessons
9.1s✓ Import complete — courses live and enrollable
IMPORT-JOBCourse catalog discovery completed — 12 courses found0.4s
ASSET-WORKER31 of 47 assets re-hosted to org/acme/* prefix4.2s
SSO-SESSIONSAML assertion validated for user@acme.com — session created0.1s
PROGRESS-APILesson completion recorded — enrollment 79% complete0.2s
DEDUP-CHECK6 assets matched existing content hash — skipped upload1.1s
AUDIT-LOGAdmin published course Onboarding Foundations — enrolled 34 members0.3s
RATE-LIMITERTeachable scrape throttled — 1 req/s enforced, no CAPTCHA triggered2.0s
IMPORT-JOBCourse catalog discovery completed — 12 courses found0.4s
ASSET-WORKER31 of 47 assets re-hosted to org/acme/* prefix4.2s
SSO-SESSIONSAML assertion validated for user@acme.com — session created0.1s
PROGRESS-APILesson completion recorded — enrollment 79% complete0.2s
DEDUP-CHECK6 assets matched existing content hash — skipped upload1.1s
AUDIT-LOGAdmin published course Onboarding Foundations — enrolled 34 members0.3s
RATE-LIMITERTeachable scrape throttled — 1 req/s enforced, no CAPTCHA triggered2.0s
IMPORT-JOBCourse catalog discovery completed — 12 courses found0.4s
ASSET-WORKER31 of 47 assets re-hosted to org/acme/* prefix4.2s
SSO-SESSIONSAML assertion validated for user@acme.com — session created0.1s
PROGRESS-APILesson completion recorded — enrollment 79% complete0.2s
DEDUP-CHECK6 assets matched existing content hash — skipped upload1.1s
AUDIT-LOGAdmin published course Onboarding Foundations — enrolled 34 members0.3s
RATE-LIMITERTeachable scrape throttled — 1 req/s enforced, no CAPTCHA triggered2.0s
IMPORT-JOBCourse catalog discovery completed — 12 courses found0.4s
ASSET-WORKER31 of 47 assets re-hosted to org/acme/* prefix4.2s
SSO-SESSIONSAML assertion validated for user@acme.com — session created0.1s
PROGRESS-APILesson completion recorded — enrollment 79% complete0.2s
DEDUP-CHECK6 assets matched existing content hash — skipped upload1.1s
AUDIT-LOGAdmin published course Onboarding Foundations — enrolled 34 members0.3s
RATE-LIMITERTeachable scrape throttled — 1 req/s enforced, no CAPTCHA triggered2.0s

Ready to see your Teachable content in a platform your team actually owns?

Join the waitlist and be among the first organizations to migrate without lifting a spreadsheet.

Questions? Email us at sf-core-org-support-csi-teachable-replacement-app@saas-factory.ai

STAGE 02 — MONITOR PROGRESS

Watch the import in real time. No refresh required.

The import monitor shows the current pipeline stage, assets migrated, errors encountered, and an estimated completion indicator — all live. If an asset fails to download or a lesson parse errors out, the job continues; failed items are logged with full error detail and the import completes with a partial success status so you can fix and retry without starting over.

  • Live pipeline stage and asset count display

  • Per-lesson error log — no silent failures

  • Partial success: one bad attachment never aborts the whole course

STAGE 03 — CONFIGURE SSO

Your learners keep the credentials they already have.

An admin configures the organization's identity provider — OIDC or SAML 2.0 — through the SSO settings UI. Each tenant stores its own entity IDs, metadata URLs, certificate fingerprints, and attribute mappings independently. Sessions expire in line with the IdP token lifetime; stale sessions are forced to re-authenticate rather than left open indefinitely.

  • OIDC and SAML 2.0 — Okta, Azure AD, ADFS and compatible providers

  • Per-tenant configuration — each org's IdP is fully isolated

  • Connection test button verifies config before saving

STAGE 04 — LEARNERS TAKE OVER

SSO in. Course catalog visible. Progress tracked from lesson one.

Learners authenticate via your SSO link and land on the course catalog — a branded grid showing every published course with their enrollment and progress status. Every lesson completion is recorded with a timestamp. Progress bars update in real time. When the final lesson is marked complete, a course completion record is written and visible on the learner's dashboard.

  • Branded catalog — logo and primary colour configured per tenant

  • Lesson completion with timestamp; progress percentage recalculated live

  • Prev/next navigation marks current lesson complete on advance

[ ADMIN LAYER ]

Behind the scenes: what admins see after go-live

Member directory

Every SSO-authenticated user listed by name, email, last login, and course enrollment count. Verify who has access at a glance.

Per-course progress report

Completion percentage, lessons finished, and enrollment date for every learner in a course. Spot who's stuck before they drop off.

[ FAQ / HOW IT WORKS ]

Common questions about the migration and delivery process

Full import history with status and source URL
Background jobs dashboard showing import pipeline progress
Session lifetime tied to IdP token — no indefinite access
Admin dashboard showing organization settings and SSO configuration

Attachment downloads tracked — admins see what resources learners access

  • CSV export of learner progress for offline HR reporting

  • Learner course catalog showing enrolled courses with progress bars

    CSV export

    Download learner name, email, enrollment date, completion percentage, and completed lesson list as a flat file — ready for your HR system.

    Less painful than you might expect. The import pipeline authenticates with your Teachable school, crawls your full course catalog, and lets you select which courses to bring over before a single byte moves. It extracts section and lesson hierarchy, scrapes full lesson content (video embeds, rich text, images, attachments), re-hosts every asset under your organization's private storage, and replaces all Teachable CDN URLs with the new ones automatically. A real-time progress monitor shows you exactly which pipeline stage is running, how many assets have migrated, and flags any partial failures — without aborting the whole job if one file hits an error. Your credentials are encrypted with AES-256 at rest and never appear in logs or API responses.
    Each organization connects its own identity provider independently — configurations for one tenant never touch another. The platform supports both OIDC and SAML 2.0, covering Okta, Azure AD, ADFS, and any standards-compliant IdP. Admins configure their provider through a dedicated UI that accepts a discovery URL or SAML metadata, maps attributes, and runs a connection test before saving. Sessions expire in alignment with your IdP's token lifetime; when a token goes stale, learners are forced to re-authenticate rather than coasting on an indefinite session.
    No on both counts. Every learner-facing page performs an org-membership check and redirects anyone outside the organization to the SSO login flow before a course title is rendered. The multi-tenant data model partitions every table by organization ID, so queries are structurally scoped to the authenticated tenant — there is no query path that reaches across organizations. Asset downloads are served via short-lived signed URLs generated server-side on each page render, so there are no permanent public links to share or guess. Role-based access control keeps the course builder, enrollment management, and reporting pages off-limits to non-admin members.
    Admins get three layers of visibility. First, an organization-wide dashboard widget showing total enrollments, completion rates, and active learner counts across all courses — a quick health check without opening individual reports. Second, a per-course progress table listing every enrolled learner with their completion percentage, lessons completed count, and enrollment date, so you can spot who is stuck or inactive. Third, a full CSV export of that learner progress data for offline analysis or HR reporting. On top of that, an immutable audit log records significant admin actions — SSO config changes, enrollment edits, course publishing, import job starts — giving you an accountability trail for compliance reviews.
    Video embeds from YouTube, Vimeo, Wistia, and Loom are explicitly allowed via Content Security Policy headers on lesson pages; iframe sources outside those providers are blocked. For downloadable files — PDFs, images, any lesson attachment — every download is served through a server-side signed URL with a short expiration window, so there are no permanent public asset links. The platform also records a timestamped event each time a learner downloads an attachment, giving admins visibility into which resources are actually being accessed rather than just uploaded.
    Organization admins can upload a logo and set a primary brand color that applies across all learner-facing pages: the course catalog, lesson player, and dashboard. Routing supports either a subdomain (yourcompany.platform.com) or a path prefix without requiring a separate deployment per tenant. Course URLs are built from auto-generated slugs derived from course titles, with uniqueness enforced per organization and support for custom slug overrides. Deep white-label theming beyond logo and brand color is not currently listed as a shipped feature — contact us for details on roadmap plans.