ARTICLE CONTENT:
Complete Guide: Migrating from Teachable to AccessAlly
📊 Migration Complexity: HIGH (Platform Change)
⏱️ Estimated Time: 35-55 hours (professional help recommended)
🛠️ Technical Level: Advanced – Requires WordPress + AccessAlly expertise
💰 Cost Impact: Variable – depends on CRM choice and current Teachable plan
Why This Migration Is Complex
Migrating from Teachable to AccessAlly is NOT like switching CRMs. This is a complete platform migration involving:
- Platform Change: Moving from all-in-one SaaS (Teachable) to WordPress-based solution (AccessAlly)
- Infrastructure Setup: Setting up WordPress hosting, domain, SSL, email deliverability
- CRM Selection: Choosing and configuring a separate CRM (ActiveCampaign, Ontraport, Keap, Kit, etc.)
- Content Recreation: Manually rebuilding all courses, lessons, and content in WordPress
- Member Data Migration: Moving student accounts, purchases, access levels, and progress
- Email Setup: Configuring transactional and marketing email systems
- Payment Gateway: Setting up Stripe/PayPal integration separately
- Sales Page Rebuild: Recreating all sales and marketing pages in WordPress
Unless you have WordPress development experience and AccessAlly expertise, we strongly recommend hiring professional migration assistance. This is not a beginner-friendly DIY project. Budget 35-55 hours minimum for DIY or expect $2,500-$7,000 for professional migration services.
Why Migrate from Teachable to AccessAlly?
Common reasons for migrating despite the complexity:
- Cost Savings: Teachable costs $39-$249/month + 5-10% transaction fees. AccessAlly + hosting + CRM can cost $50-$150/month with NO transaction fees
- Eliminate Transaction Fees: Teachable’s 5-10% transaction fee adds up fast. AccessAlly has zero transaction fees
- Ownership & Control: Own your WordPress site and data vs. being locked into Teachable’s platform
- Flexibility: WordPress offers unlimited customization options vs. Teachable’s templates
- Advanced Features: AccessAlly offers more sophisticated membership/course logic than Teachable
- Integration Options: WordPress has 60,000+ plugins for any functionality you need
- Better Marketing Tools: AccessAlly integrates with powerful CRMs for advanced marketing automation
- Exit Strategy: Reduce dependency on a single SaaS vendor
What You’ll Lose (Teachable Features Not in AccessAlly)
Be realistic about what you’re giving up:
- All-in-One Simplicity: Teachable handles hosting, security, backups, updates automatically
- Built-in Course Player: Teachable’s course player works perfectly out of the box – AccessAlly requires configuration
- Course Compliance: Teachable automatically handles SCORM compliance (if needed for corporate training)
- Student Messaging: Teachable’s built-in student communication features (you’ll need separate plugin)
- Course Certificates: Automatic certificate generation (AccessAlly requires plugin)
- Built-in Quizzes: Teachable’s quiz engine (use LearnDash Quiz or similar)
- 24/7 Platform Support: Teachable’s support team vs. managing your own WordPress site
- Teachable Analytics: Built-in comprehensive analytics (you’ll piece together with plugins)
- Automatic Course Backups: Teachable backs up everything – you’ll manage WordPress backups
What You’ll Need Before Starting
✅ Required Services & Accounts
- WordPress Hosting:
- Managed WordPress host recommended: WP Engine, Kinsta, Flywheel, Cloudways
- Minimum specs: 2GB RAM, SSD storage, PHP 8.0+, MySQL 5.7+
- Budget: $30-$100/month depending on traffic
- Domain Name:
- Transfer from Teachable or register new domain
- SSL certificate (usually included with hosting)
- AccessAlly License:
- Professional or higher plan (supports full course features)
- Price: Starting at $83/month annually
- CRM Selection: Choose ONE of the following:
- ActiveCampaign: $29-$149/month – Best for advanced automation
- Ontraport: $79-$297/month – All-in-one CRM + automation
- Keap (Infusionsoft): $159-$229/month – Full CRM/sales features
- Kit (ConvertKit): $25-$259/month – Simple, creator-focused
- Drip: $39-$1,899/month – E-commerce focused
- AccessAlly Managed: $97-$497/month – Easiest setup (AccessAlly handles it)
- Payment Gateway:
- Stripe account (recommended) OR PayPal Business
- Cannot transfer existing subscriptions from Teachable’s payment system – see subscription migration section
- Email Sending Service: Choose ONE of the following:
- SendGrid: Transactional emails (free up to 100/day)
- Mailgun: Transactional emails (pay-as-you-go)
- Amazon SES: Very cheap, requires technical setup
- OR use CRM for all emails (if your CRM supports transactional emails)
📋 Technical Requirements
- WordPress admin skills (creating pages, installing plugins, basic troubleshooting)
- Basic HTML/CSS knowledge (for styling content after migration)
- Spreadsheet skills (for CSV data transformation)
- Understanding of DNS (for domain switching)
- Familiarity with FTP or hosting control panel
If you don’t have the technical skills listed above, DO NOT ATTEMPT THIS MIGRATION ALONE. Contact AccessAlly for professional migration services or hire a WordPress developer with AccessAlly experience. DIY migration without proper skills will result in broken access, lost content, and frustrated students.
📋 Complete the Pre-Migration Checklist
Before proceeding, work through the complete Pre-Migration Checklist. Key items include:
- Teachable data export (students, courses, content, analytics)
- Audit of current student count, courses, and revenue
- Data mapping spreadsheet (Teachable courses → AccessAlly structure)
- WordPress hosting setup and testing
- Staging environment for migration testing
- Downtime plan and student communication strategy
- Backup plan in case migration fails
Phase 1: Planning & Infrastructure Setup (8-12 hours)
Step 1: Choose Your CRM
Unlike Teachable (all-in-one), AccessAlly requires a separate CRM for student management and email marketing. This is a critical decision that affects your entire migration.
CRM Selection Guide:
| CRM | Best For | Pros | Cons | Price |
|---|---|---|---|---|
| AccessAlly Managed | Simplest transition, non-technical users | Zero CRM setup, AccessAlly handles it | Less flexibility, higher cost at scale | $97-$497/mo |
| ActiveCampaign | Advanced automation, segmentation | Powerful automations, affordable | Complex interface, learning curve | $29-$149/mo |
| Ontraport | All-in-one CRM + marketing | CRM features, membership sites | Expensive, overkill for some | $79-$297/mo |
| Kit (ConvertKit) | Creators, simple email marketing | Easy to use, creator-focused | Limited custom fields, no CRM | $25-$259/mo |
| Keap | Sales teams, CRM + automation | Full CRM, pipeline management | Expensive, complex setup | $159-$229/mo |
Recommendation for Teachable users:
- If you value simplicity: AccessAlly Managed Contacts (easiest transition)
- If you want power + affordability: ActiveCampaign (most popular choice)
- If you need full CRM: Ontraport or Keap
- If you’re a solo creator: Kit (simplest email marketing)
Step 2: Set Up WordPress Hosting & Install AccessAlly
- Sign up for managed WordPress hosting (WP Engine, Kinsta, or similar)
- Install WordPress (usually one-click installer in hosting control panel)
- Install essential plugins:
- AccessAlly (your license)
- SSL certificate (usually included with hosting)
- Backup plugin (UpdraftPlus, BackupBuddy, etc.)
- Security plugin (Wordfence, Sucuri, etc.)
- Choose a WordPress theme:
- Use AccessAlly-compatible theme (Astra, GeneratePress, Kadence recommended)
- Or use page builder (Elementor, Beaver Builder, Divi)
- Configure basic WordPress settings:
- Set permalinks to “Post name” (Settings → Permalinks)
- Disable comments (if not needed)
- Set timezone correctly
- Test site performance and security before proceeding
Step 3: Set Up Your CRM and Connect to AccessAlly
- Create CRM account (based on Step 1 choice)
- Complete basic CRM setup:
- Configure sender email and domain authentication
- Set up email deliverability (SPF, DKIM, DMARC records)
- Test email sending
- Connect CRM to AccessAlly:
- Go to AccessAlly → Settings → General
- Select your CRM
- Enter API credentials (varies by CRM)
- Test connection
- Verify connection works by creating a test contact
CRM setup resources:
Step 4: Configure Payment Gateway (Stripe or PayPal)
- Create or connect Stripe/PayPal account
- In AccessAlly, go to Settings → Payment Integration
- Choose payment processor (Stripe recommended)
- Enter API credentials:
- Stripe: API Keys from Stripe Dashboard → Developers → API Keys
- PayPal: API credentials from PayPal Developer Dashboard
- Configure webhook URLs (AccessAlly provides these)
- Test mode first: Use test API keys to verify setup works
- Complete test purchase to verify end-to-end payment flow
- Switch to live mode when testing passes
Teachable’s payment system is proprietary. You CANNOT automatically transfer active subscriptions from Teachable to Stripe/PayPal. You have two options:
- Grandfather existing subscriptions: Let current subscribers stay on Teachable payments until they cancel, move new sales to AccessAlly
- Request student re-subscription: Offer free months or incentive for students to cancel Teachable subscription and re-subscribe through AccessAlly (risky – expect churn)
See Step 13 for detailed subscription migration strategies.
Step 5: Export All Data from Teachable
Teachable provides limited export capabilities. You’ll need to export data from multiple places.
Student Data Export:
- Go to Teachable → Users → Students
- Click Export (top right)
- Download CSV
- This includes: Email, Name, Enrollment Date, Courses Enrolled, Progress
- Note: Teachable limits export to 5,000 students at a time – export in batches if needed
Course Sales/Enrollment Export:
- Go to Teachable → Sales → Reports
- Export “Orders” report
- Includes: Student email, Course purchased, Date, Price, Payment status
- This helps map which students have access to which courses
Content Export (CRITICAL – Manual Process):
- Course Content: Teachable does NOT export course content – you’ll manually copy/recreate
- Screenshot course structure (sections and lectures)
- Copy text content to Google Docs or Word for each lecture
- Download all course videos:
- Go to Library → Videos
- Download each video file
- Note: Download quality may be lower than original upload
- Download course PDFs and attachments from each lecture
- Sales Pages:
- Screenshot each sales page layout
- Copy sales copy to document
- Download sales page images
- Email Campaigns:
- Teachable has limited email features – document any automated emails
- Copy welcome email templates
Teachable does NOT provide bulk content export. You MUST manually copy each lecture’s text, download videos, and download attachments. For a course with 50 lectures, this alone can take 10-15 hours. Budget extra time for content extraction.
Analytics/Reports Export:
- Go to Teachable → Analytics
- Export key reports for reference:
- Revenue reports
- Student enrollment trends
- Course completion rates
- Email performance (if using Teachable emails)
- Save PDFs or screenshots of reports for historical reference
Step 6: Map Teachable Courses to AccessAlly Structure
Teachable’s course structure is different from AccessAlly. You need to map how Teachable courses translate to AccessAlly products and access rules.
Create a mapping spreadsheet using the Data Mapping Reference Guide.
| Teachable Structure | AccessAlly Equivalent | Access Rules | CRM Tags Needed |
|---|---|---|---|
| Teachable Course | AccessAlly Module (course structure) | Tag-based access | “Course: [Name]” |
| Teachable Section | AccessAlly Module Section (grouping) | Same as course tag | Inherited from course |
| Teachable Lecture | WordPress Post in Module | Inherited from module | Same as course |
| Teachable Pricing Plan | AccessAlly Order Form + Product | Price + tag assignment | Tag assigned on purchase |
| Teachable Coaching Bundle | Multiple products/tags | Multiple tags assigned | All included course tags |
AccessAlly product structure concepts:
- Modules: AccessAlly’s course structure (like Teachable courses)
- Posts: Individual course lessons (like Teachable lectures)
- Access Rules: Tag-based (purchase assigns tag, tag grants access)
- Release Schedules: Time-based content unlocking (drip content)
- Completion Tracking: Track student progress through courses
Step 7: Plan Content Recreation Strategy
You’ll manually recreate all courses and pages in WordPress. Plan your approach:
Option 1: Recreate Everything from Scratch (Cleanest)
- Start with blank WordPress site
- Recreate each course using AccessAlly modules
- Rebuild pages with your WordPress theme/page builder
- Pros: Clean, optimized, no Teachable artifacts
- Cons: Most time-intensive (25-35 hours for content alone)
Option 2: Hybrid Approach (Recommended)
- Recreate critical pages from scratch (homepage, sales pages)
- Copy/paste course content (text, images) into WordPress posts
- Reformat using WordPress editor
- Pros: Faster than full recreation (18-25 hours)
- Cons: Some formatting cleanup needed
Option 3: Minimal Viable Migration (Fastest)
- Copy/paste all content as-is
- Minimal formatting cleanup
- Improve design iteratively after launch
- Pros: Fastest (12-18 hours)
- Cons: Site may look rough initially
Step 8: Create Tag Taxonomy in Your CRM
Plan your tag structure before importing students. AccessAlly uses tags to control access.
Recommended tag categories:
- Product Tags: Assigned on purchase, grant access
- Example: “Course: Course Name”, “Bundle: Bundle Name”
- Status Tags: Track student lifecycle
- Example: “Status: Active”, “Status: Cancelled”, “Status: Refunded”
- Progress Tags: Track course progress (optional)
- Example: “Progress: Module 1 Complete”, “Progress: Course Complete”
- Segmentation Tags: Marketing segments
- Example: “Segment: Beginner”, “Interest: Marketing”
Create tags in your CRM before importing students. This ensures tags exist when you assign them during migration.
Phase 2: Content Migration & Setup (18-28 hours)
Step 9: Recreate Course Structure in AccessAlly
Build your course structure using AccessAlly modules before importing students.
- Create an AccessAlly Module for each Teachable course:
- Go to AccessAlly → Modules → Add New
- Name it matching your Teachable course
- Set access rule: “Has tag: Course: [Course Name]”
- Create WordPress posts for each lecture:
- Copy content from Teachable lecture
- Paste into WordPress post editor
- Reformat using Gutenberg blocks or page builder
- Upload and embed videos (host on Vimeo, Wistia, or YouTube)
- Add lesson to AccessAlly Module
- Configure lesson progression:
- Set completion buttons (AccessAlly “Mark Complete” feature)
- Configure drip schedule if applicable (release dates or intervals)
- Set prerequisites (Lesson 2 requires Lesson 1 complete, etc.)
- Create module navigation:
- Use AccessAlly’s module navigation block
- Show progress bar
- Previous/Next lesson buttons
- Test course flow:
- Create test student with course tag
- Navigate through lessons
- Test completion tracking
Video hosting options:
- Vimeo Pro/Plus: $12-$75/month – privacy controls, no ads
- Wistia: $19-$99/month – marketing features, detailed analytics
- YouTube (Unlisted): Free – but no privacy, shows YT branding
- Self-host: Not recommended – huge bandwidth costs
Step 10: Recreate Sales Pages and Website Structure
- Homepage: Recreate using your WordPress theme or page builder
- Sales pages: Rebuild course sales pages
- Copy sales copy from Teachable
- Recreate design in WordPress
- Add AccessAlly order forms (see Step 11)
- About/Contact pages: Standard WordPress pages
- Student dashboard: Create landing page for logged-in students
- Show available courses
- Link to module pages
- Use AccessAlly’s member dashboard widgets
- Navigation menus:
- Create WordPress menus (Appearance → Menus)
- Different menus for logged-in vs. logged-out users
Step 11: Create Order Forms for Products
AccessAlly uses custom order forms that integrate with your payment gateway and CRM.
- Go to AccessAlly → Order Forms → Add New
- Configure product details:
- Product name and description
- Price and billing frequency (one-time, subscription, payment plan)
- Payment gateway (Stripe or PayPal)
- Set post-purchase actions:
- Assign tag: “Course: [Course Name]” (this grants access)
- Create WordPress user: If not already a student
- Send welcome email: Configure in CRM automation
- Redirect: Thank you page or course dashboard
- Customize form fields:
- Email (required)
- Name (required)
- Payment details
- Optional: Phone, address, custom fields
- Style form to match your site design
- Embed form on sales page using shortcode
- Test purchase flow end-to-end:
- Complete test purchase
- Verify payment processes
- Verify tag assigned in CRM
- Verify WordPress user created
- Verify access to course
Map each Teachable pricing plan to an AccessAlly order form.
Step 12: Set Up Email Deliverability
Unlike Teachable (built-in email), you must configure email sending separately.
Two types of emails to configure:
- Transactional Emails: Purchase receipts, password resets, system notifications
- Option 1: Use SendGrid/Mailgun/Amazon SES + WP Mail SMTP plugin
- Option 2: Use your CRM if it supports transactional emails
- Marketing Emails: Newsletters, campaigns, sequences
- Sent from your CRM (ActiveCampaign, Kit, Ontraport, etc.)
Configure WordPress transactional emails:
- Install WP Mail SMTP plugin
- Connect to SendGrid, Mailgun, or Amazon SES
- Configure SMTP settings (provided by email service)
- Test email sending (plugin has test feature)
- Verify password reset and purchase receipt emails work
Configure CRM marketing emails:
- Set up domain authentication in CRM (SPF, DKIM, DMARC records)
- Verify sender email
- Test broadcast email send
- Check spam score and deliverability
Poor email setup = emails go to spam = students can’t access purchases. Test email deliverability thoroughly before launch. Use tools like Mail-Tester.com to check spam score. Ensure SPF, DKIM, and DMARC records are properly configured.
Phase 3: Student Data Migration (6-10 hours)
Step 13: Handle Active Subscriptions
This is the most complex part of Teachable → AccessAlly migration. Teachable uses proprietary payment processing, so active subscriptions cannot automatically transfer.
Strategy 1: Grandfather Existing Subscriptions (Recommended)
- Keep Teachable active temporarily (consider downgrading plan)
- Existing subscribers stay on Teachable payment system
- Grant them access in AccessAlly site using their tags
- Configure Zapier/Make to sync:
- When enrollment created in Teachable → add tag in CRM
- When enrollment cancelled in Teachable → remove tag in CRM
- New purchases happen on AccessAlly site (Stripe/PayPal)
- Over time, existing subscribers naturally churn/cancel
- Eventually all students on AccessAlly payment system
- Cancel Teachable when last legacy subscriber cancels
Pros: No student disruption, no churn risk, clean student experience
Cons: Maintain Teachable + AccessAlly simultaneously (6-18 months), ongoing sync complexity
Strategy 2: Request Student Re-Subscription (High Risk)
- Email all active subscribers announcing migration
- Offer incentive to re-subscribe (e.g., “Cancel Teachable, get 2 free months on new site”)
- Provide clear instructions:
- Cancel Teachable subscription
- Sign up on new site (use unique URL with coupon)
- Risk: 20-40% may not complete re-subscription (churn loss)
- Mitigation: Generous incentive, excellent communication, personal outreach
Pros: Clean break from Teachable, simplified system
Cons: High churn risk, student frustration, revenue loss
Step 14: Prepare Student Import CSV
Transform your Teachable student export into AccessAlly import format.
Required columns for AccessAlly import:
email– Email address (required)first_name– First namelast_name– Last nametags– Comma-separated list of CRM tag names- Any custom fields you created in CRM
CSV transformation steps:
- Open Teachable student export in Excel or Google Sheets
- Cross-reference with Orders export to map course enrollments
- Map Teachable courses to AccessAlly tags:
- If student enrolled in “Course Name” → add “Course: Course Name” to tags column
- If student has active subscription → add “Status: Active” to tags column
- If student cancelled → add “Status: Cancelled” to tags column
- Create tag conversion formulas:
// Example: If "Course" column contains "Course Name", append "Course: Course Name" to tags =IF(ISNUMBER(SEARCH("Course Name", D2)), "Course: Course Name, ", "") & E2 - Consolidate tags into single comma-separated column
- Remove sensitive data (Teachable subscription IDs, payment info)
- Validate email addresses (remove invalid/test emails)
- Save as new CSV: “teachable-to-accessally-import.csv”
Step 15: Import Students via Migration Wizard
- On staging site first, go to AccessAlly → Migration Wizard
- If you don’t see Migration Wizard, download and activate the plugin (instructions)
- Click “Import from CSV”
- Upload your prepared CSV file
- Map CSV columns:
- email → Email
- first_name → First Name
- last_name → Last Name
- tags → Tags (comma-separated)
- Choose import options:
- Create users in WordPress: Check (creates WP accounts)
- Create users in CRM: Check (creates CRM contacts)
- Add tags: Check (applies product/access tags)
- Send confirmation email: UNCHECK (students already opted in)
- Start import
- Monitor progress: ~100-200 students per minute
- Review import log for any errors
What happens during import:
- WordPress user account created for each student
- Contact created in CRM with email, name, tags
- CRM Subscriber ID stored in WordPress user meta (critical for linking)
- Tags applied in CRM (grants access to courses)
Step 16: Verify Student Access
Test that imported students can access their purchased content.
- Pick 5-10 test students from different course enrollments
- For each student:
- Verify WordPress user exists
- Verify CRM contact exists with correct tags
- Verify Subscriber ID stored in WP user meta
- Test login (use password reset to set password)
- Verify they can access their courses
- Verify they CANNOT access courses they didn’t purchase
- Fix any access issues before proceeding
The #1 issue with platform migrations is incorrect access rules. Students get frustrated when they can’t access content they paid for. Test access thoroughly with real student accounts before launching.
Step 17: Rebuild Automations in CRM
Teachable has limited email automation. Recreate what exists and improve in your new CRM.
Common automations to create:
| Automation Type | CRM Implementation |
|---|---|
| Welcome sequence | CRM sequence/automation triggered by course tag |
| Post-purchase emails | Tag trigger automation |
| Course completion emails | Tag-based automation (AccessAlly adds completion tag) |
| Cart abandonment | CRM automation + AccessAlly abandoned cart tracking |
| Re-engagement campaigns | CRM broadcast or automation based on engagement tags |
Steps to create automations:
- Document each Teachable email (if any automated emails exist)
- Identify triggers: What starts the automation? (enrollment, completion, etc.)
- Identify actions: What happens? (send email, assign tag, wait, etc.)
- Create in CRM using your CRM’s automation builder
- Test each automation:
- Trigger the automation with a test contact
- Verify emails send
- Verify tags apply
- Verify timing is correct
Phase 4: Testing & Go-Live (5-7 hours)
Step 18: Comprehensive Testing on Staging
Test EVERYTHING before touching live Teachable site:
✅ Student Access Testing
- Test login for 5-10 students (different course enrollments)
- Verify correct course access for each enrollment
- Verify restricted content blocks non-students
- Test password reset flow
- Test student dashboard navigation
✅ Purchase Flow Testing
- Complete test purchase for each course
- Verify payment processes (Stripe/PayPal)
- Verify WordPress user created
- Verify CRM contact created with tag
- Verify access granted immediately
- Verify purchase receipt email sent
- Verify welcome automation triggers
✅ Course Functionality Testing
- Navigate through course lessons
- Test video playback
- Test downloadable resources
- Test lesson completion tracking
- Test drip content release (if applicable)
- Test prerequisites (can’t skip ahead)
✅ Email Testing
- Test transactional emails (purchase receipt, password reset)
- Test welcome sequence triggers
- Test broadcast email sending
- Check spam score (Mail-Tester.com)
- Verify unsubscribe links work
✅ Subscription Testing (If Applicable)
- Test subscription purchase
- Verify recurring billing set up in Stripe/PayPal
- Test subscription renewal webhook
- Test subscription cancellation
- Verify access removed on cancellation
- Test failed payment handling
✅ Performance & Security Testing
- Test site speed (GTmetrix, Google PageSpeed)
- Test mobile responsiveness
- Test SSL certificate (site loads over HTTPS)
- Test security (no admin username “admin”, strong passwords)
- Test backup system (restore from backup)
Step 19: Plan DNS and Domain Cutover
Switching from Teachable domain to WordPress hosting requires DNS changes.
Option 1: Use Same Domain (Recommended)
- Your domain currently points to Teachable
- Change DNS A record to point to WordPress hosting IP
- DNS propagation takes 1-48 hours (usually < 6 hours)
- During propagation, some users see old Teachable site, some see new WordPress site
- Coordinate go-live during low-traffic window
Option 2: Use New Domain (Safest but SEO Hit)
- Launch AccessAlly site on new domain (e.g., learn.yourdomain.com)
- Keep Teachable site running during transition
- Add redirects from old Teachable pages to new site
- Eventually point main domain to WordPress
- Pros: No downtime during transition
- Cons: SEO impact, student confusion about URL change
DNS cutover steps (Option 1 – same domain):
- Get WordPress site IP address from hosting provider
- Access domain registrar DNS settings
- Change A record:
- Old: Points to Teachable IP
- New: Points to WordPress hosting IP
- Lower TTL to 300 seconds (5 minutes) 24 hours before switch
- Make DNS change during scheduled downtime window
- Monitor DNS propagation: Use whatsmydns.net to check
- Once propagated, test site on live domain
Step 20: Go Live
Launch day checklist:
- 24-48 hours before:
- Email students announcing migration and downtime window
- Provide timeline and what to expect
- Offer support contact in case of issues
- Day of launch:
- Put Teachable site in maintenance mode (or make announcement banner)
- Final Teachable data export (capture any students added since last export)
- Import any new students to AccessAlly
- Make DNS change (point domain to WordPress)
- Monitor DNS propagation
- Once propagated, test live site thoroughly
- Announce launch to students (site is live)
- First 2 hours after launch:
- Monitor support emails/tickets closely
- Watch for login issues, access problems, payment errors
- Have team ready to respond to student questions
- Fix critical issues immediately
Step 21: Post-Migration Verification
Work through the complete Post-Migration Verification Checklist. Key items for Teachable → AccessAlly:
✅ Student Data Integrity (First 24 Hours)
- Verify total student count matches Teachable
- Spot-check 20 random students for correct access
- Verify Subscriber IDs properly stored in WordPress
- Check for duplicate accounts (merge if found)
- Verify student progress/completion data (note: won’t transfer from Teachable)
✅ Access & Permissions (First 48 Hours)
- Test login for multiple student types
- Verify access to all purchased content
- Verify restricted content blocks non-students
- Test course navigation and lesson progression
- Verify drip content releases on schedule
✅ Purchase & Payment Flow (First Week)
- Monitor new purchases closely
- Verify payment processing (check Stripe/PayPal dashboard)
- Verify student creation on purchase
- Verify access granted immediately
- Verify purchase receipt emails send
- Test subscription renewal (wait for first renewal)
- 🚨 CRITICAL: Test failed payment handling
✅ Email Deliverability (First Week)
- Monitor email deliverability rates
- Check spam complaints (should be < 0.1%)
- Verify transactional emails (receipts, password resets)
- Verify marketing emails (broadcasts, sequences)
- Test email across multiple providers (Gmail, Outlook, Yahoo)
✅ Automations & Sequences (First 2 Weeks)
- Verify welcome sequences trigger for new students
- Verify post-purchase automations fire correctly
- Verify course completion automations work
- Monitor automation errors in CRM
- Fix any automation issues immediately
Step 22: Monitor & Support (First 30 Days)
Day 1-7: High Alert Mode
- Monitor support tickets/emails constantly
- Respond to student issues within 2 hours
- Watch for patterns (same issue reported multiple times?)
- Fix critical bugs immediately
- Document workarounds for non-critical issues
Day 8-14: Stabilization
- Reduce monitoring to 2-3 times per day
- Start addressing non-critical issues
- Gather student feedback on new site
- Make minor improvements based on feedback
Day 15-30: Optimization
- Analyze student engagement (are they using the site?)
- Optimize slow-loading pages
- Improve course content formatting
- Refine automations based on data
- Plan content/feature improvements
After 30 days:
- If no major issues, consider canceling Teachable (if using grandfathered subscriptions, keep for now)
- Export final Teachable data for records
- Celebrate successful migration!
Troubleshooting Common Issues
Issue 1: Students Can’t Log In
Symptoms: Students report “Invalid username or password” errors
Causes:
- WordPress user not created during migration
- Email address doesn’t match (typo in import CSV)
- Password not set (first-time WordPress login requires password reset)
- User account exists but is disabled
Solution:
- Search for user in WordPress → Users
- If user doesn’t exist: Re-import that student via Migration Wizard
- If user exists: Send password reset email (Users → hover over user → Send Password Reset)
- If still failing: Check email address matches exactly (case-sensitive)
- Verify user role is set (should be “Subscriber” or custom role)
Issue 2: Students Can’t Access Purchased Content
Symptoms: Logged-in student sees “You don’t have permission” on course pages
Causes:
- Access tag not assigned in CRM
- Subscriber ID not linked correctly
- Access rule misconfigured in AccessAlly
- Tag name mismatch (typo or wrong tag)
Solution:
- Check CRM: Does student have correct course tag?
- Check WordPress user meta: Is Subscriber ID stored correctly?
- Check AccessAlly module settings: Is access rule correct?
- Test: Manually add tag to student in CRM, see if access grants
- If access grants with manual tag, issue is with tag assignment during purchase/import
- If access still doesn’t grant, issue is with Subscriber ID linking
Issue 3: Purchase Completes But Access Not Granted
Symptoms: Student completes purchase, payment processes, but can’t access course
Causes:
- Order form not configured to assign tag
- Tag name in order form doesn’t match access rule
- CRM connection broken
- WordPress user created but tag not synced to CRM
Solution:
- Check order form settings (AccessAlly → Order Forms → edit form)
- Verify “Assign Tag” action is configured correctly
- Verify tag name matches exactly (case-sensitive)
- Test CRM connection (AccessAlly → Settings → Test Connection)
- Check recent purchase in CRM – did contact get created with tag?
- If not, re-configure order form and test purchase again
Issue 4: Videos Not Playing
Symptoms: Video embed shows error or black screen
Causes:
- Video not uploaded to video host (Vimeo, Wistia)
- Video set to private without proper embed settings
- Incorrect embed code
- Video host account expired or over quota
Solution:
- Verify video exists in video host account
- Check video privacy settings (should allow embed on your domain)
- Re-copy embed code from video host
- Test embed code on simple HTML page
- If still failing, try different video host or different embed method
Issue 5: Emails Going to Spam
Symptoms: Students report not receiving purchase receipts or welcome emails
Causes:
- Email authentication not configured (SPF, DKIM, DMARC)
- Sending from unverified domain
- Email content triggers spam filters
- Poor sender reputation (new domain/IP)
Solution:
- Verify email authentication records in DNS (use MXToolbox to check)
- Verify sender domain in CRM and email service
- Test email with Mail-Tester.com (aim for 9/10 or 10/10 score)
- Remove spam trigger words from email content
- Ensure all emails have unsubscribe link
- Warm up sender reputation (send to engaged list first, gradually increase volume)
Issue 6: Subscription Renewal Fails to Extend Access
Symptoms: Student’s subscription renews in Stripe/PayPal, but access expires in AccessAlly
Causes:
- Webhook not configured in Stripe/PayPal
- Webhook URL incorrect
- Webhook firing but AccessAlly not processing
- Subscription ID not linked to WordPress user
Solution:
- Check Stripe/PayPal webhook settings
- Verify webhook URL matches AccessAlly-provided URL (AccessAlly → Settings → Payment Integration)
- Check webhook logs in Stripe/PayPal (recent events)
- Test webhook by triggering subscription event
- Check AccessAlly logs for webhook processing errors
- Verify subscription ID stored in WordPress user meta
- If webhook failing, contact AccessAlly support with error logs
Migration Timeline & Downtime
Total Time Estimate: 35-55 hours (professional help: 2-3 weeks)
| Phase | Time (DIY) | Time (Professional) | Downtime? |
|---|---|---|---|
| CRM Selection & Setup | 3-4 hours | 1-2 hours | ❌ No |
| WordPress Hosting & AccessAlly Setup | 2-3 hours | 1 hour | ❌ No |
| Payment Gateway Configuration | 2-3 hours | 1 hour | ❌ No |
| Teachable Data Export & Mapping | 3-5 hours | 2-3 hours | ❌ No |
| Course Content Recreation | 12-22 hours | 8-15 hours | ❌ No (build on staging) |
| Video Migration & Hosting | 4-8 hours | 3-5 hours | ❌ No |
| Sales Pages & Website Rebuild | 4-7 hours | 3-5 hours | ❌ No |
| Order Forms & Payment Setup | 2-3 hours | 1-2 hours | ❌ No |
| Email Deliverability Setup | 2-3 hours | 1 hour | ❌ No |
| Student Data Import | 2-4 hours | 1-2 hours | ❌ No (staging) |
| Automation Setup | 2-4 hours | 1-2 hours | ❌ No |
| Testing (Staging) | 3-5 hours | 2-3 hours | ❌ No |
| DNS Cutover & Go-Live | 2-3 hours | 2-3 hours | ✅ Yes (DNS propagation: 1-6 hours) |
| Post-Launch Verification | 2-3 hours | 2-3 hours | ❌ No |
Recommended Downtime Window: 4-6 hours during DNS propagation (choose weekend or low-traffic period)
Teachable vs AccessAlly: What You’re Giving Up and Gaining
What You Lose (Teachable Advantages)
- All-in-One Platform: Teachable handles hosting, security, backups, updates automatically
- Zero Technical Maintenance: No WordPress updates, plugin conflicts, or server management
- Built-in Course Player: Teachable’s course player works perfectly without configuration
- Teachable Support: Support team available vs. managing your own WordPress site
- Automatic Compliance: Teachable manages PCI, security compliance
- Built-in Analytics: Comprehensive analytics dashboard
- Student Certificates: Automatic certificate generation
- Quiz Engine: Built-in quiz and assessment features
- Course Backups: Automatic daily backups of all content
- No CRM Learning Curve: Single platform to learn vs. WordPress + AccessAlly + CRM
What You Gain (AccessAlly Advantages)
- Eliminate Transaction Fees: Teachable charges 5-10% per sale – AccessAlly has ZERO transaction fees
- Cost Savings: $100-$200/month savings (Teachable $39-$249/mo + fees vs AccessAlly + hosting + CRM $50-$150/mo)
- Ownership & Control: You own your WordPress site, data, and content
- Unlimited Students: Teachable limits students by plan tier – AccessAlly doesn’t
- Unlimited Customization: WordPress + 60,000 plugins = any feature you can imagine
- Better SEO Control: WordPress SEO plugins are more powerful than Teachable SEO
- Advanced Course Logic: AccessAlly’s access rules and prerequisites are more sophisticated
- CRM Power: Choose a powerful CRM (ActiveCampaign, Ontraport) vs. Teachable’s basic email
- Theme Freedom: Any WordPress theme vs. Teachable’s template limitations
- Exit Strategy: Not locked into a single vendor platform
- Community/Developer Support: Massive WordPress community for help and resources
Should You Migrate? Decision Framework
Stay with Teachable if:
- You value all-in-one simplicity over cost savings
- You lack technical skills and don’t want to hire help
- Transaction fees don’t significantly impact your revenue
- You don’t want to manage WordPress hosting, updates, security
- Your school is thriving and you don’t want to risk migration issues
- You’re under 100 active students (migration complexity may not be worth it)
Migrate to AccessAlly if:
- Transaction fees are eating into your profit margins (5-10% adds up!)
- Cost savings of $100-$200/month matter to your bottom line
- You want ownership and control of your platform
- You’ve hit Teachable’s student or course limits
- You have WordPress skills OR budget to hire professional help
- You need more advanced course logic and access rules
- You want powerful CRM automation vs. Teachable’s basic email
- You need custom features that Teachable doesn’t offer
Alternative: Consider other platforms:
- Thinkific: Similar to Teachable but lower transaction fees
- Kajabi: More expensive but more features than Teachable
- LearnDash/LifterLMS: WordPress course plugins (cheaper than AccessAlly but less powerful)
Frequently Asked Questions
Q: Can I keep Teachable and AccessAlly running simultaneously during transition?
A: Yes, this is actually the recommended approach for subscription migration (Strategy 1 in Step 13). Keep Teachable active for existing subscriptions while new purchases happen on AccessAlly. Use Zapier/Make to sync enrollment status between platforms. Gradually phase out Teachable as legacy subscriptions cancel naturally.
Q: What happens to student progress/completion data from Teachable?
A: Teachable does not export course progress data. Student completion tracking will start fresh in AccessAlly. Communicate this to students during migration announcement. You can manually mark courses as complete for returning students if needed, but there’s no automated way to transfer progress.
Q: Can I transfer Teachable’s affiliate program to AccessAlly?
A: Teachable’s affiliate data doesn’t export automatically. You’ll need to:
- Set up affiliate program in AccessAlly or use plugin like AffiliateWP
- Manually export affiliate list from Teachable
- Re-create affiliate accounts in new system
- Notify affiliates of new tracking links
- Grandfather any owed commissions from Teachable
Q: How do I handle Teachable’s certificate features?
A: Teachable’s automatic certificates won’t transfer. Options:
- AccessAlly Certificates: AccessAlly has built-in certificate features (configure in module settings)
- LearnDash Certificates: If using LearnDash for quizzes, use their certificate system
- Third-party plugins: WordPress has many certificate plugins
You’ll need to recreate certificate templates – Teachable templates don’t export.
Q: What about Teachable’s built-in quiz features?
A: AccessAlly has basic quiz features, but for advanced assessments use:
- LearnDash Quiz Addon: Advanced quizzes with AccessAlly integration
- Gravity Forms + Quiz Add-On: Custom quizzes with grading
- H5P: Interactive content plugin including quizzes
You’ll need to manually recreate quizzes – Teachable quizzes don’t export.
Q: Can I migrate just one course first to test AccessAlly?
A: Yes, but not seamlessly. You’d need to:
- Set up full WordPress + AccessAlly + CRM stack (can’t skip this)
- Migrate one course content to AccessAlly
- Import only students who enrolled in that course
- Run both platforms simultaneously (Teachable for other courses, AccessAlly for test course)
- Use subdomain for AccessAlly test (e.g., learn.yourdomain.com)
This approach is complex and only makes sense for large course libraries (5+ courses). For most schools, full migration is simpler.
Q: How do I handle Teachable’s custom domain?
A: If you’re using a custom domain with Teachable:
- You can transfer the same domain to WordPress hosting
- Change DNS A record to point to WordPress instead of Teachable
- This maintains your SEO and branding
- See Step 19 for detailed DNS cutover instructions
If using Teachable subdomain (yourschool.teachable.com), you’ll need to register your own domain for WordPress.
Q: What if I use Teachable’s email marketing features heavily?
A: Teachable’s email is basic compared to dedicated CRMs. Process:
- Export/screenshot all email templates from Teachable
- Recreate templates in your CRM (ActiveCampaign, Kit, etc.)
- Your CRM will have better email features than Teachable
- Set up automations/sequences in CRM
- Test deliverability (CRMs often have better deliverability than Teachable)
Q: Can I keep using Teachable’s payment processing?
A: No, you cannot use Teachable Payments with WordPress/AccessAlly. You must set up your own Stripe or PayPal account. The advantage: you eliminate Teachable’s 5-10% transaction fees. See Step 4 for payment gateway setup and Step 13 for subscription migration strategies.
Need Help?
Professional Migration Services:
- AccessAlly Migration Services: Full-service migration from Teachable to AccessAlly – Contact AccessAlly
- Expected cost: $2,500-$7,000 depending on complexity (number of courses, students, custom features)
- Timeline: 2-3 weeks for professional migration
- What’s included: Complete setup, content migration, student import, testing, go-live support
DIY Migration Support:
- Review the Migration Support Policy
- For migration assistance: Contact AccessAlly support
- Note: DIY migrations receive limited support – professional help recommended for complex migrations
Related Guides:
- Pre-Migration Checklist
- Post-Migration Verification
- Data Mapping Reference
- AccessAlly Modules Overview
- AccessAlly Order Forms Setup
Teachable to AccessAlly migration is NOT a beginner project. This is a full platform change requiring WordPress development skills, AccessAlly expertise, and significant time investment. Unless you have the required technical skills, hire professional help. The cost of professional migration ($2,500-$7,000) is significantly less than the revenue loss from a failed DIY migration.
- ✅ WordPress hosting set up and tested
- ✅ AccessAlly installed and CRM connected
- ✅ Payment gateway configured and tested
- ✅ All courses recreated in AccessAlly modules
- ✅ Videos uploaded to video host and embedded
- ✅ Sales pages and website rebuilt
- ✅ Order forms created and tested
- ✅ Email deliverability configured (SPF, DKIM, DMARC)
- ✅ All students imported with correct access
- ✅ Subscription strategy implemented (grandfathered or re-subscription)
- ✅ Automations created in CRM
- ✅ Comprehensive testing on staging site
- ✅ DNS cutover planned and executed
- ✅ Post-migration verification complete
- ✅ Students successfully using new site