1. Home
  2. Migrations
  3. Complete Guide: Migrating from AccessAlly to MemberPress

Complete Guide: Migrating from AccessAlly to MemberPress

ARTICLE CONTENT:

Complete Guide: Migrating from AccessAlly to MemberPress

📊 Migration Complexity: HIGH
⏱️ Estimated Time: 25-35 hours (planning, execution, testing)
🛠️ Technical Level: Advanced
💰 Cost Impact: Eliminates CRM subscription ($29-$497/mo savings), but loses advanced features

Why Migrate from AccessAlly to MemberPress?

Common reasons for migrating from AccessAlly to MemberPress:

  • Cost Reduction: The most common reason. AccessAlly requires a CRM subscription ($29-$497/mo) on top of the AccessAlly license. MemberPress works standalone with no external dependencies, potentially saving $348-$5,964 annually on CRM costs alone.
  • Simplicity: MemberPress is simpler to understand and manage. You don’t need to learn CRM concepts, tag management, or automation workflows. Access control is straightforward: membership levels grant access to content. No Contact ID linking to worry about, no tag syncing issues.
  • Reduced Technical Complexity: AccessAlly’s tag-based architecture requires understanding how WordPress users link to CRM contacts. MemberPress keeps everything in WordPress, eliminating a potential failure point and making troubleshooting simpler.
  • No CRM Dependency: With AccessAlly, if your CRM goes down or API connection breaks, member access breaks. MemberPress has no external dependencies – if WordPress is up, member access works.
  • Easier Staff Training: MemberPress’s interface is more intuitive for non-technical staff. You don’t need to train team members on both WordPress AND a separate CRM platform.
  • Don’t Need Advanced Features: If you’re not using AccessAlly’s advanced course templates, completion tracking, conditional content, or CRM automations, you’re paying for features you don’t use. MemberPress provides membership essentials without overwhelming options.
  • Smaller Member Base: For smaller membership sites (under 500 members), the overhead of managing a CRM and sophisticated tag-based access may be overkill. MemberPress’s membership levels are sufficient.
  • Content-Focused Site: If your site primarily gates content rather than running complex courses or marketing automations, MemberPress’s category-level protection is more efficient than AccessAlly’s per-post protection.
  • Frustration with Tag Management: Tag-based access can become unwieldy as your site grows. If you have dozens of tags and complex access rules, MemberPress’s hierarchical membership levels can be cleaner.
  • CRM Issues: Recurring problems with CRM API limits, contact syncing errors, tag application delays, or CRM billing issues can push businesses to eliminate the CRM dependency entirely.
⚠️ Critical Trade-offs: You will LOSE significant functionality by moving to MemberPress. Before proceeding, understand what you’re giving up:

  • CRM Automations: All email automations, behavioral triggers, and marketing workflows will stop working. You’ll need separate email marketing software.
  • Tag-Based Access: MemberPress uses membership levels (less flexible than tags). Complex access combinations may be impossible to replicate.
  • Course Templates: AccessAlly’s course navigation, progress tracking, completion certificates, and sequential unlocking won’t transfer.
  • Conditional Content: Content that shows/hides based on tags must be recreated using MemberPress rules or shortcodes (limited capabilities).
  • Unified Member Data: CRM contact records with full member history, custom fields, and activity tracking will be lost unless you export and store separately.
  • Advanced Checkout Features: Order bumps, one-click upsells, multi-step checkout flows won’t work in MemberPress.

If you rely heavily on these features, consider if MemberPress truly meets your needs.

Understanding the Core Architectural Difference

Before you begin migration, it’s critical to understand how AccessAlly and MemberPress differ fundamentally:

AccessAlly Architecture:

  • Uses “CRM tags” as the access control mechanism
  • Protection is per-post/page (each piece of content checks for specific tags)
  • A member’s access is determined by which tags they have in the CRM
  • No automatic cascading (each post must be explicitly protected)
  • Email functionality built into CRM (sophisticated automation available)
  • Member data split between WordPress (user accounts) and CRM (contact records)
  • Contact ID linking is CRITICAL – WordPress stores the CRM Contact ID to check access

MemberPress Architecture:

  • Uses WordPress-native “membership levels” stored in custom tables
  • Protection rules are centralized (protect entire categories, tags, or custom post types)
  • A member’s access is determined by which levels they have
  • Rules cascade (Level A can access Category X automatically)
  • Email functionality requires separate plugin or service (basic notifications only)
  • Member data lives entirely in WordPress (no external dependencies)

What this means for migration:

  1. No One-Click Migration: There’s no automated tool to convert AccessAlly tags to MemberPress levels. You must manually map and recreate access rules.
  2. Tag Consolidation Required: If you have many AccessAlly tags, you’ll need to consolidate them into fewer MemberPress membership levels.
  3. Access Rule Simplification: Complex tag combinations (e.g., “has Tag A OR Tag B but NOT Tag C”) must be simplified to work with MemberPress’s level-based system.
  4. CRM Data Export Essential: Export ALL member data from your CRM before disconnecting. Once you deactivate AccessAlly, CRM access is gone.
  5. Email Functionality Loss: Plan how you’ll replace CRM automations. You’ll need email marketing software (Mailchimp, ConvertKit, etc.) or use basic MemberPress notifications.
  6. Simplified Protection Benefits: MemberPress category-level protection is faster to set up than AccessAlly’s per-post protection. This is a significant advantage for content-heavy sites.

What You’ll Need Before Starting

✅ Required Access & Accounts

  • WordPress admin access to your site
  • AccessAlly admin access (for data export)
  • CRM admin access (for contact export and backup)
  • MemberPress license (appropriate plan tier)
  • Payment gateway access (Stripe or PayPal – must match current setup)
  • Full WordPress site backup
  • Full CRM data export (contacts, tags, custom fields, automation history)

📋 Complete the Pre-Migration Checklist

Before proceeding, work through the complete Pre-Migration Checklist. Key items include:

  • Full backup of WordPress site and database
  • Complete export of CRM contact data (you’ll lose CRM access after migration)
  • Export of all AccessAlly member data
  • Audit of your current tag structure and access rules
  • Document all CRM automations (you’ll need to rebuild these elsewhere)
  • Data mapping spreadsheet (tags → membership levels)
  • Staging site setup for testing (CRITICAL – don’t test on live site)
  • Downtime plan and member communication strategy
  • New email marketing solution chosen (if replacing CRM email functionality)
🚨 CRITICAL: Export ALL CRM Data
Once you disconnect AccessAlly from your CRM and cancel your CRM subscription, you’ll lose access to all contact records, custom fields, automation history, and member activity logs. Export EVERYTHING before starting migration. This is irreversible.

Phase 1: Planning & Data Export (6-8 hours)

Step 1: Export Complete CRM Contact Data

This is the most critical step. Your CRM contains valuable member data that will be lost after migration.

CRM Export Checklist (varies by CRM):

For All CRMs:

  1. Log into your CRM admin dashboard
  2. Navigate to Contacts → Export
  3. Select ALL contacts (not just active members)
  4. Include ALL fields in export:
    • Email, First Name, Last Name
    • Tags (comma-separated)
    • Custom fields (all of them)
    • Date added, Last modified
    • Lead source / Acquisition date
    • Purchase history (if stored in CRM)
    • Engagement metrics (email opens, clicks, etc.)
  5. Export as CSV
  6. Save as crm-complete-export-[DATE].csv
  7. Verify the export opened correctly (check for encoding issues)
  8. Store backup in multiple locations (local + cloud)

ActiveCampaign-Specific:

  • Go to Contacts → Export Contacts
  • Select “All contacts” and “All fields”
  • Check “Include custom field data”
  • Download CSV

Ontraport-Specific:

  • Go to Contacts → Export
  • Select all contact fields
  • Include tags, sequences, and campaigns
  • Export as CSV

Keap-Specific:

  • Go to Contacts → Export Contacts
  • Select “All contacts”
  • Choose “All available fields”
  • Export and download

Drip / Kit / AccessAlly Managed:

  • Navigate to Contacts or Subscribers
  • Look for Export or Download option
  • Export all fields available
💡 Pro Tip: Export your CRM data TWICE on different days and compare the files to ensure the export is complete and accurate. Some CRMs have export bugs that skip contacts or truncate data.

Step 2: Document All CRM Automations

You won’t be able to migrate CRM automations to MemberPress. Document them so you can rebuild in a new email marketing platform.

For each automation/campaign in your CRM, document:

  • Trigger: What starts the automation? (tag applied, form submitted, date reached, etc.)
  • Sequence: What emails are sent? In what order? What delays between emails?
  • Actions: What happens besides emails? (add/remove tags, change custom fields, etc.)
  • Conditions: Any if/then logic? (e.g., “if clicked link, send Email B, else send Email C”)
  • Unsubscribe: When does someone exit the automation?

Take screenshots of each automation workflow. These will be invaluable when rebuilding in your new email platform.

Step 3: Export WordPress User Data

Export WordPress user accounts separately from CRM data:

  1. Log into WordPress admin
  2. Go to Tools → Export
  3. Select Users
  4. Download export file
  5. Alternatively, use a plugin like “Users & Customers Import Export for WP & WooCommerce” for more detailed exports

Export should include:

  • User ID, Username, Email
  • First Name, Last Name
  • Registration Date
  • User Role
  • Any user meta fields you’ve added

Step 4: Map AccessAlly Tags to MemberPress Membership Levels

This is the most critical planning step. AccessAlly’s flexible tag-based system must be simplified into MemberPress’s hierarchical membership levels.

Tag Consolidation Strategy:

AccessAlly Tags MemberPress Level Access Granted Notes
“Basic Member”, “Basic Access” Basic Membership Basic content category Consolidate similar tags
“Premium Member”, “VIP”, “Gold Member” Premium Membership All Basic + Premium Merge premium tiers
“Course 1 Owner”, “Course 1 Access” Course 1 Course 1 category only Standalone course
“Course 2 Owner”, “Course 2 Access” Course 2 Course 2 category only Standalone course
“All Access”, “Lifetime” All Access Pass ALL categories Unlimited access
⚠️ Complex Access Combinations: If AccessAlly tags allow complex combinations (e.g., “Tag A OR Tag B grants access”), you may not be able to replicate this exactly in MemberPress. Consider simplifying access rules or using MemberPress’s “required membership” option to allow multiple levels to access content.

Handling Special Cases:

  • Multiple Independent Tags: Member has “Course 1” AND “Course 2” tags. In MemberPress, give them BOTH membership levels. MemberPress supports multiple simultaneous memberships.
  • Behavior-Based Tags: Tags like “Completed Lesson 5” or “Engaged Member” won’t translate to MemberPress. These were used for CRM automation – not access control. Don’t create membership levels for these.
  • Trial/Expired Tags: Tags indicating trial status or expired access should be mapped to MemberPress subscription status (active, cancelled, expired) rather than separate levels.
  • Temporary Access Tags: If you use tags for time-limited access (e.g., “30-Day Access”), use MemberPress expiration settings on the membership level.

Step 5: Export AccessAlly Subscription Data

Active subscribers need their subscription IDs preserved during migration to avoid billing issues.

  1. Go to Users in WordPress
  2. For each user, check their profile for AccessAlly subscription data
  3. Create a spreadsheet with:
    • Email address
    • Subscription ID (from Stripe or PayPal)
    • Gateway (stripe or paypal)
    • Status (active, cancelled, expired)
    • Next billing date
    • Tags currently granting access
  4. Save as accessally-subscriptions-export.csv

Alternatively, export directly from Stripe or PayPal:

Stripe Export:

  1. Log into Stripe Dashboard
  2. Go to Customers
  3. Export all customers with subscriptions
  4. Go to Subscriptions
  5. Export active subscriptions
  6. Cross-reference customer emails with WordPress users

PayPal Export:

  1. Log into PayPal Business account
  2. Go to Reports → Subscriptions
  3. Download report for active subscriptions
  4. Match subscriber emails to WordPress users

Step 6: Audit AccessAlly Content Protection

Document every piece of protected content so you can recreate protection in MemberPress:

  1. Create a spreadsheet listing ALL protected posts/pages
  2. For each post/page, note:
    • Post/Page ID and Title
    • Current URL
    • Required tags for access
    • Category (for MemberPress protection mapping)
    • Any drip schedule settings
    • Redirect URL for unauthorized access
  3. Identify content using AccessAlly shortcodes (conditional content)
  4. Note any AccessAlly course templates or navigation
💡 Pro Tip: Use a plugin like “Export All URLs” to get a complete list of all posts/pages. Then manually check each for AccessAlly protection settings. This is tedious but essential.

Step 7: Install MemberPress on Staging Site

On your STAGING site only:

  1. Create a complete staging copy of your live site
  2. Verify staging site is functional and isolated from live site
  3. Purchase MemberPress license (choose appropriate tier)
  4. Download MemberPress plugin from your account
  5. Upload and activate MemberPress plugin
  6. Go to MemberPress → Settings → General
  7. Enter your MemberPress license key
  8. Configure basic settings (business name, pages, etc.)
  9. Save settings
  10. Verify MemberPress is activated successfully
💡 Pro Tip: Keep AccessAlly activated on staging during testing. This lets you reference the old protection settings while building new MemberPress rules.

Step 8: Configure Payment Gateway in MemberPress

MemberPress needs to connect to the same Stripe/PayPal account as AccessAlly to preserve existing subscriptions:

Stripe Configuration:

  1. In MemberPress, go to Settings → Payments
  2. Click Add Payment Method
  3. Select Stripe
  4. Enter your Stripe API keys (same account used with AccessAlly)
  5. Configure Stripe settings:
    • Enable test mode for staging
    • Set payment button text
    • Configure SCA (Strong Customer Authentication)
  6. Save payment method

PayPal Configuration:

  1. In MemberPress → Settings → Payments
  2. Click Add Payment Method
  3. Select PayPal Standard or PayPal Express
  4. Enter PayPal email address (same account used with AccessAlly)
  5. Configure IPN settings
  6. Save payment method
🚨 CRITICAL: Use Same Payment Gateway Accounts
You MUST use the exact same Stripe/PayPal accounts that AccessAlly was using. If you create new accounts, existing subscription IDs won’t match and billing will break.

Phase 2: MemberPress Setup & Content Migration (8-10 hours)

Step 9: Create MemberPress Membership Levels

Based on your tag mapping from Step 4, create membership levels in MemberPress:

  1. Go to MemberPress → Memberships
  2. Click Add New
  3. For each membership level:
    • Title: Membership level name (e.g., “Basic Membership”)
    • Content: Description visible to members
    • Price: Set pricing (one-time, recurring, free)
    • Billing: Configure billing cycle if recurring
    • Registration: Enable registration button
    • Trial: Set trial period if applicable
    • Limit: Set expiration period if applicable (e.g., 30 days)
    • Simultaneous Subscriptions: Allow or block based on your model
  4. Save membership level
  5. Repeat for all membership levels in your mapping

Example Membership Levels:

  • Basic Membership – $29/month, access to Basic content
  • Premium Membership – $79/month, access to Basic + Premium content
  • Course 1 – $197 one-time, lifetime access to Course 1 only
  • Course 2 – $297 one-time, lifetime access to Course 2 only
  • All Access Pass – $497/year, access to everything

Step 10: Set Up MemberPress Rules (Access Control)

MemberPress uses “Rules” to protect content. This is simpler than AccessAlly’s per-post protection but requires understanding rule priority.

Create Rules for Each Membership Level:

  1. Go to MemberPress → Rules
  2. Click Add New
  3. Configure rule:
    • Protected Content: Select what to protect
      • All Content (protect entire site)
      • All Content with Tag/Category (protect by taxonomy)
      • Individual Post/Page
    • For Category Protection: Select “All Content with Category” → Choose category → Select membership level(s) that can access
    • Access Conditions: Select which membership(s) grant access
    • Dripping: Set up drip schedule if needed
    • Expire: Configure expiration settings
    • Unauth Access: Set unauthorized access behavior (redirect, show excerpt, etc.)
  4. Save rule
  5. Repeat for each category or content group

Example Rules Setup:

Rule Protected Content Access Granted To
Rule 1 Category: Basic Content Basic, Premium, All Access
Rule 2 Category: Premium Content Premium, All Access
Rule 3 Category: Course 1 Course 1, All Access
Rule 4 Category: Course 2 Course 2, All Access
⚠️ Rule Priority: MemberPress rules are processed in order. More specific rules should come before general rules. Drag to reorder rules in the Rules interface.

Step 11: Organize Content into Categories (If Needed)

If your AccessAlly content wasn’t organized by category, you may need to reorganize for MemberPress’s category-based protection to work efficiently:

  1. Go to Posts → Categories (or Pages → Categories if using a plugin like “Categories for Pages”)
  2. Create categories matching your membership levels:
    • Basic Content
    • Premium Content
    • Course 1
    • Course 2
    • Free Content (for non-members)
  3. Bulk-assign posts to appropriate categories:
    • Go to Posts → All Posts
    • Use Quick Edit to assign categories
    • Or use Bulk Actions → Edit → Category

Step 12: Recreate Drip Content Schedules

MemberPress supports drip content, but it works differently than AccessAlly:

AccessAlly Drip: Based on tag application date (when member gets specific tag)

MemberPress Drip: Based on membership registration date or specific calendar date

Setting up MemberPress drip schedules:

  1. Go to MemberPress → Rules
  2. Edit the rule protecting dripped content
  3. Enable Dripping
  4. Choose drip method:
    • After Membership: Content unlocks X days after member registers (e.g., “7 days after registration”)
    • Specific Date: Content unlocks on a specific calendar date
    • After Previous Content: Sequential unlocking (requires MemberPress Courses add-on)
  5. Set drip delay (e.g., “7 days”)
  6. Configure drip message shown to members for locked content
  7. Save rule
⚠️ Drip Date Difference: AccessAlly drips from “tag applied date” which could be anytime. MemberPress drips from “membership registration date”. Members who had tags for a while will get immediate access to all dripped content upon migration. This is intentional – they’ve already “waited” the drip period.

Step 13: Replace AccessAlly Shortcodes

If you use AccessAlly shortcodes for conditional content, these must be replaced with MemberPress equivalents:

Common AccessAlly → MemberPress shortcode conversions:

AccessAlly Shortcode MemberPress Equivalent
[accessally_has_tag tag_id="X"]content[/accessally_has_tag] [mepr-active memberships="ID"]content[/mepr-active]
[accessally_logged_in]content[/accessally_logged_in] [mepr-active]content[/mepr-active] (any membership)
[accessally_course_navigation] No direct equivalent (requires MemberPress Courses add-on)
[accessally_icon] No equivalent (remove or replace with manual HTML)

To find and replace shortcodes:

  1. Install “Better Search Replace” plugin
  2. Search for [accessally in post content
  3. Manually review each instance
  4. Replace with appropriate MemberPress shortcode or remove
  5. Test on staging before applying to live site
🚨 CRITICAL: Test All Shortcode Replacements
Do NOT bulk find-and-replace AccessAlly shortcodes without testing each one. Some conditional content may not be possible to replicate in MemberPress. Review manually to avoid breaking pages.

Step 14: Remove AccessAlly Course Templates

AccessAlly course templates (navigation, progress tracking, completion buttons) won’t work in MemberPress. You have three options:

Option 1: Remove Course Features Entirely

  • Edit posts/pages with course templates
  • Remove AccessAlly template shortcodes and navigation elements
  • Simplify to basic post content
  • Best for: Simple content sites not needing course features

Option 2: Use MemberPress Courses Add-On

  • Purchase MemberPress Courses add-on ($149+)
  • Recreate course structure in MemberPress Courses
  • Add lessons, modules, and sequential navigation
  • Limited compared to AccessAlly but provides basic course functionality
  • Best for: Sites needing simple course features

Option 3: Use Third-Party LMS Plugin

  • Install LearnDash, LifterLMS, or similar LMS plugin
  • Integrate with MemberPress (all major LMS plugins support MemberPress integration)
  • Rebuild course structure in LMS
  • Significantly more work but more features than AccessAlly
  • Best for: Sites with complex course requirements

Phase 3: Member Data Migration (5-7 hours)

Step 15: Prepare Member CSV for MemberPress Import

Transform your CRM export and AccessAlly data into MemberPress-compatible format:

Required CSV format for MemberPress:

  • user_email – Email address (required, must be unique)
  • user_login – Username (required, must be unique)
  • first_name – First name
  • last_name – Last name
  • mepr_membership_level – Membership level ID(s) to assign
  • mepr_transaction_status – Status: complete, pending, failed, refunded
  • mepr_subscription_id – Stripe/PayPal subscription ID (for active subscribers)
  • mepr_transaction_gateway – Gateway: stripe or paypal

CSV transformation steps:

  1. Open your CRM export in Excel/Google Sheets
  2. Cross-reference with WordPress user export
  3. Create mapping formula using your tag → membership level mapping from Step 4
  4. For each member:
    • Look at their AccessAlly tags
    • Determine which MemberPress membership level(s) they should have
    • Find membership level ID from MemberPress → Memberships
    • Add membership level ID to mepr_membership_level column
  5. For active subscribers, add subscription ID and gateway
  6. Set transaction status to “complete” for active members
  7. Remove expired/cancelled members (or set status to “failed”)
  8. Verify all emails are unique and valid
  9. Save as accessally-to-memberpress-import.csv
💡 Pro Tip: MemberPress membership level IDs can be found by editing each membership level in WordPress. The ID is in the URL: post.php?post=123&action=edit where 123 is the ID.

Step 16: Import Members into MemberPress

  1. Install “WP All Import” plugin (required for complex MemberPress imports)
  2. Purchase the “MemberPress Add-On for WP All Import” ($99 – necessary for subscription linking)
  3. Go to All Import → New Import
  4. Upload your prepared CSV file
  5. Select Users as import type
  6. Map CSV columns to WordPress/MemberPress fields:
    • Email → User Email
    • Username → User Login
    • First Name → First Name
    • Last Name → Last Name
    • Membership Level ID → MemberPress Membership
    • Transaction Status → Transaction Status
    • Subscription ID → Subscription ID
    • Gateway → Payment Gateway
  7. Configure import settings:
    • Create new users: Yes (if not already in WordPress)
    • Update existing users: Yes (if WordPress accounts exist)
    • Send welcome email: No (don’t spam existing members)
  8. Run import on a small test batch (10-20 members) first
  9. Verify test batch imported correctly
  10. If successful, import remaining members

What happens during import:

  • WordPress user accounts created (or updated if they exist)
  • MemberPress membership levels assigned
  • Transactions created (records of purchase)
  • Subscriptions linked to WordPress users (preserves active subscriptions)
⏱️ Time Estimate: Import processes ~50-100 members per minute depending on CSV complexity. Large member bases may take 1+ hours.

Step 17: Verify Subscription Linking

For active subscribers, verify their subscription IDs are properly linked:

  1. Pick 5-10 active subscribers from your import
  2. In WordPress, go to MemberPress → Subscriptions
  3. Search for the member’s email
  4. Verify subscription shows:
    • Correct subscription ID
    • Status: Active
    • Correct gateway (Stripe or PayPal)
    • Next payment date matches Stripe/PayPal
  5. Edit member’s WordPress user profile
  6. Check “Active Memberships” section shows correct level
  7. Log in as that member (use “Login As” plugin)
  8. Verify they can access content they should have access to

Step 18: Handle Members with Multiple Tags

If AccessAlly members had multiple tags (e.g., “Course 1” + “Course 2”), they need multiple MemberPress memberships:

  1. Identify members with multiple tags from your CRM export
  2. For each member:
    • Go to Users in WordPress
    • Edit their user profile
    • Scroll to “Memberships” section
    • Manually add each membership level they should have
    • Save user
  3. Alternatively, run multiple imports with different membership level filters
💡 Pro Tip: MemberPress natively supports multiple simultaneous memberships. A member can have “Course 1” AND “Course 2” AND “Premium” all at once.

Step 19: Configure MemberPress Webhooks

MemberPress needs webhooks configured to handle subscription updates from Stripe/PayPal:

Stripe Webhook Setup:

  1. Log into Stripe Dashboard
  2. Go to Developers → Webhooks
  3. You should see the existing AccessAlly webhook – DO NOT delete it yet
  4. Add a NEW webhook endpoint: https://yoursite.com/?mepr-listener=stripe
  5. Select events:
    • invoice.payment_succeeded
    • invoice.payment_failed
    • customer.subscription.deleted
    • customer.subscription.updated
    • charge.refunded
  6. Copy the webhook signing secret
  7. In WordPress, go to MemberPress → Settings → Payments
  8. Edit your Stripe payment method
  9. Paste webhook signing secret
  10. Save settings

PayPal IPN Setup:

  1. Log into PayPal
  2. Go to Account Settings → Notifications → IPN Settings
  3. Add NEW IPN URL: https://yoursite.com/?mepr-listener=paypal-ipn
  4. Enable IPN
  5. Keep AccessAlly IPN active for now (during migration)
🚨 CRITICAL: Don’t Delete Old Webhooks Yet
During migration testing, keep BOTH AccessAlly and MemberPress webhooks active in Stripe/PayPal. Only remove AccessAlly webhooks after you’ve fully deactivated AccessAlly and verified MemberPress webhooks work correctly.

Phase 4: Testing & Verification (5-7 hours)

Step 20: Test Access Rules for Each Membership Level

Create test accounts for each membership level and verify access:

  1. Create test user accounts in WordPress
  2. Assign membership levels manually
  3. Log in as each test user (use “Login As” plugin)
  4. Verify access to content they SHOULD see
  5. Verify they CANNOT access content they shouldn’t
  6. Test drip content (if applicable)
  7. Test unauthorized access redirects

Testing checklist per membership level:

  • ✅ Login works
  • ✅ Member dashboard/account page displays correctly
  • ✅ Protected content accessible
  • ✅ Non-member content properly hidden
  • ✅ Drip content locked appropriately
  • ✅ Unauthorized access redirects to correct page
  • ✅ MemberPress shortcodes display correct content

Step 21: Test Purchase Flows End-to-End

Test the complete purchase experience for each membership offer:

  1. Visit membership registration page as logged-out visitor
  2. Select a membership level
  3. Complete test purchase (use Stripe/PayPal test mode)
  4. Verify redirect to thank-you page
  5. Check that membership level applied correctly
  6. Verify WordPress user account created
  7. Test immediate access to purchased content
  8. Check subscription created in Stripe/PayPal
  9. Verify subscription shows in MemberPress → Subscriptions

Step 22: Test Subscription Management

Test ongoing subscription handling:

  1. Successful Renewal: Simulate successful payment in test mode, verify access continues
  2. Failed Payment: Simulate failed payment, verify membership expires and access revoked
  3. Subscription Cancelled: Cancel subscription in Stripe/PayPal, verify membership cancelled
  4. Subscription Reactivated: Reactivate cancelled subscription, verify membership restored
  5. Refund Issued: Issue refund in Stripe/PayPal, verify membership cancelled
🚨 CRITICAL TEST: Failed Payment Handling
The #1 revenue leak after migration is failed payments not canceling member access. Test this:

  1. Use Stripe/PayPal test mode
  2. Create a test subscription
  3. Simulate a failed payment in Stripe/PayPal
  4. Verify webhook fires to MemberPress
  5. Verify member’s membership expires
  6. Verify member loses access to protected content

If this doesn’t work, DO NOT go live until it’s fixed.

Step 23: Verify All Former AccessAlly Members Have Access

Check a sample of migrated members to ensure they have correct access:

  1. Export list of members from MemberPress → Members
  2. Cross-reference with your original CRM export
  3. Pick 20-30 random members across different membership levels
  4. For each member:
    • Check their WordPress user profile shows correct membership level
    • Log in as them (or ask them to test)
    • Verify they can access content they had access to in AccessAlly
    • Verify their subscription status matches Stripe/PayPal
  5. Document any discrepancies
  6. Fix issues before going live

Step 24: Test Email Notifications

MemberPress has basic email notifications (much simpler than CRM automation):

  1. Go to MemberPress → Settings → Emails
  2. Configure email templates:
    • Welcome email (after purchase)
    • Payment receipt
    • Failed payment notice
    • Expiring subscription notice
    • Subscription cancelled
  3. Test each email by triggering the event in test mode
  4. Verify emails arrive and look correct
  5. Check spam folders
⚠️ Email Functionality Loss: MemberPress emails are basic transactional notifications only. You’ve lost CRM automation (drip campaigns, behavioral triggers, segmentation). If you need email marketing, integrate a separate service like Mailchimp, ConvertKit, or ActiveCampaign.

Step 25: Complete Post-Migration Verification Checklist

✅ Member Data Integrity
  • Total member count matches CRM export
  • Random sample of 20 members have correct membership levels
  • No duplicate WordPress users
  • All active members can login successfully
✅ Access & Permissions
  • Test login as multiple membership levels
  • Verify membership-based access works for all protected content
  • Test access to posts, pages, categories
  • Verify non-members redirected appropriately
  • Check that expired/cancelled members don’t have access
✅ Subscriptions & Payments
  • Active subscriptions properly linked (sample 10 members)
  • Test new purchase flow works end-to-end
  • Verify webhook handling for Stripe and PayPal
  • 🚨 CRITICAL: Test failed payment access revocation
  • Test subscription cancellation handling
✅ Content & Rules
  • All protected content has MemberPress rules configured
  • Drip schedules work as expected
  • AccessAlly shortcodes removed or replaced
  • No broken page layouts from removed course templates
✅ Emails
  • Welcome emails sent after purchase
  • Payment receipts arrive
  • Failed payment notices work
  • Subscription expiry warnings sent

Step 26: Plan Go-Live Strategy

Plan your cutover from AccessAlly to MemberPress:

Go-Live Checklist:

  1. Schedule downtime: 3-5 hour maintenance window (low-traffic time)
  2. Member communication: Email members 48 hours in advance about brief downtime
  3. Final CRM export: Capture any tag changes or new signups since staging import
  4. Backup live site: Complete WordPress backup immediately before changes
  5. Backup CRM data: Final CRM export before disconnecting
  6. Deactivate AccessAlly: Deactivate (don’t delete yet)
  7. Activate MemberPress: Ensure already installed and configured
  8. Import final members: Import any new/changed members from final CRM export
  9. Update registration links: Replace AccessAlly order forms with MemberPress registration pages
  10. Remove AccessAlly webhook: Delete old AccessAlly webhook from Stripe/PayPal
  11. Test sample members: Verify 10-15 members can login and access content
  12. Go live: Remove maintenance mode
  13. Monitor closely: Watch for login/access issues for first 4-6 hours
  14. Cancel CRM subscription: After 7 days of successful operation, cancel CRM
⏱️ Downtime Window: Plan for 3-5 hours of downtime during the switch. This includes deactivating AccessAlly, activating MemberPress, importing final members, removing old webhooks, and testing. Don’t rush this.

Troubleshooting Common Issues

Issue 1: Members Can’t Access Content After Migration

Symptoms: Members have correct membership levels but get “Access Denied” errors

Causes:

  • MemberPress rules not configured correctly
  • Membership level not granted access in rule
  • Membership expired or inactive
  • Rule priority conflict (more restrictive rule overriding permissive rule)

Solution:

  1. Pick one member with the issue
  2. Edit their WordPress user profile
  3. Check “Active Memberships” section – verify membership is listed and status is “active”
  4. Go to MemberPress → Rules
  5. Find the rule protecting the content they can’t access
  6. Verify their membership level is listed in “Access Conditions”
  7. Check rule priority – drag more specific rules above general rules
  8. Test access again

Issue 2: Subscriptions Not Linked to Member Accounts

Symptoms: Active subscriber showing as “no subscription” in MemberPress, or failed payment doesn’t cancel access

Causes:

  • Subscription ID not imported correctly during migration
  • Subscription ID in CSV doesn’t match Stripe/PayPal actual ID
  • Gateway field set wrong (“stripe” vs “paypal”)
  • Webhook not configured correctly

Solution:

  1. Export active subscriptions from Stripe/PayPal
  2. Match subscription IDs to member email addresses
  3. In WordPress, go to MemberPress → Subscriptions
  4. Search for the member
  5. If subscription missing, create manually:
    • Click Add New
    • Select member
    • Select membership level
    • Enter subscription ID from Stripe/PayPal
    • Select gateway
    • Set status to “active”
    • Save
  6. Test failed payment handling for this subscription

Issue 3: Members Lost Access They Had in AccessAlly

Symptoms: Member reports they can’t access content they previously could access

Causes:

  • AccessAlly tag not properly mapped to MemberPress membership level
  • Member had multiple tags in AccessAlly but only one membership in MemberPress
  • Complex tag combination (OR/AND logic) not replicated in MemberPress
  • Content not protected correctly in MemberPress rules

Solution:

  1. Check your original CRM export for this member’s email
  2. Note all AccessAlly tags they had
  3. Reference your tag mapping spreadsheet
  4. Determine which MemberPress membership level(s) they should have
  5. Edit their WordPress user profile
  6. Add missing membership level(s)
  7. Save user
  8. Test their access again

Issue 4: Drip Content Not Working as Expected

Symptoms: All dripped content immediately available, or nothing dripping at all

Causes:

  • MemberPress drip rules not configured
  • Drip rules set to “after registration” but member registered long ago
  • WordPress cron not running

Solution:

  1. Go to MemberPress → Rules
  2. Edit rules protecting dripped content
  3. Verify “Dripping” is enabled
  4. Check drip settings (days after registration, specific date, etc.)
  5. For migrated members who’ve been around a while, drip from registration date means they get immediate access (this is expected – they’ve “waited” the drip period already)
  6. For new members joining after migration, drip should work normally
  7. If drip not working for new members, check WordPress cron:
    • Install “WP Crontrol” plugin
    • Check if cron jobs are running

Issue 5: Payment Forms Not Processing Transactions

Symptoms: Registration form submissions fail, payment not processed

Causes:

  • Stripe/PayPal API keys incorrect
  • Payment gateway not connected
  • Membership level not configured for registration
  • Price not set on membership level

Solution:

  1. Go to MemberPress → Settings → Payments
  2. Verify Stripe/PayPal connection is active
  3. Test connection (MemberPress has “Test Connection” option)
  4. Go to MemberPress → Memberships
  5. Edit the membership level with payment issues
  6. Verify:
    • Price is set
    • Registration button is enabled
    • Payment methods are selected
  7. Save membership
  8. Test purchase again in test mode

Issue 6: Lost CRM Automations – Need Email Replacement

Symptoms: Members not receiving onboarding sequences, behavioral emails, or marketing campaigns

Causes:

  • CRM disconnected – automations stopped
  • MemberPress doesn’t have CRM-level automation

Solution:

  1. Short-term: Use MemberPress basic email notifications for transactional emails (purchase confirmation, subscription notices)
  2. Long-term: Integrate an email marketing service:
    • Mailchimp: Use MemberPress Mailchimp add-on to sync members to Mailchimp lists, rebuild automations in Mailchimp
    • ConvertKit: Use Zapier or similar to sync MemberPress members to ConvertKit, rebuild sequences
    • ActiveCampaign: Use MemberPress ActiveCampaign integration, rebuild automations (yes, you’re back to using AC but without the AccessAlly dependency)
    • Drip: Integrate via Zapier, rebuild email workflows
  3. Rebuild your most critical automations first:
    • Welcome sequence for new members
    • Onboarding emails
    • Payment failure notifications
    • Renewal reminders
⚠️ Email Marketing Reality: You’ll likely need to re-subscribe to an email service (potentially the same CRM you just left, but at a lower tier since you’re only using email features). Factor this into your cost savings calculation. You’re saving on AccessAlly-specific costs but may still need email marketing software.

Member Communication Strategy

Your members need to know about the migration, especially regarding any changes to their login, access, or membership management.

Pre-Migration Communication (48-72 hours before):

Send an email to all active members with:

  • What’s happening: “We’re simplifying our membership system for better performance”
  • When: Specific date and time of downtime window
  • How long: Expected downtime (e.g., “Site will be in maintenance mode for 3-5 hours”)
  • What they need to do: Usually nothing, but prepare them for any changes
  • What’s changing: Be honest about lost features (course navigation, progress tracking) if applicable
  • What’s improving: Faster site, simpler membership management, better reliability
  • Support contact: How to reach you if they have issues after migration

Sample Pre-Migration Email Template:

Subject: Important: Membership System Update This Weekend

Hi [First Name],

We’re making important improvements to our membership platform this weekend to provide you with a faster, more reliable experience.

📅 When: Saturday, [DATE] from [START TIME] to [END TIME] [TIMEZONE] ⏱️ Expected Downtime: 3-5 hours
✨ What’s Improving: Faster page loads, more reliable access, simplified membership management

What You Need To Do: Nothing! Your login credentials remain the same. All your content access will be preserved.

What’s Changing: The look of your member dashboard will be slightly different, and we’re simplifying some features. All your courses and content remain accessible.

After the upgrade: You may need to clear your browser cache or use an incognito/private window for your first login.

If you experience any issues after the migration, please reply to this email or contact us at [SUPPORT EMAIL].

Thank you for your patience as we make these improvements!

[Your Name]

Post-Migration Communication (within 2 hours of going live):

Send an email confirming the migration is complete:

  • “We’re back online!” with link to login page
  • Acknowledge any removed features honestly
  • Remind them to clear cache if they have any issues
  • Provide support contact for any issues
  • Thank them for their patience

Post-Migration Monitoring (Week 1):

  • Monitor support tickets closely for migration-related issues
  • Create a FAQ document for common post-migration questions
  • Be proactive: reach out to members who haven’t logged in within 5 days
  • Be prepared to manually grant access if any member falls through the cracks

Rollback Plan

Migrations can fail. You need a rollback plan before you start.

Pre-Migration Rollback Preparation:

  1. Full site backup: WordPress files + database backup taken immediately before starting
  2. Backup location: Store backup off-server (local computer or separate cloud storage)
  3. CRM still active: DON’T cancel CRM subscription until 7 days after successful migration
  4. Test restore: Before migration day, verify you can successfully restore from backup on staging
  5. Keep AccessAlly plugin files: Don’t delete AccessAlly plugin, just deactivate it
  6. Document settings: Screenshot all AccessAlly settings pages

Rollback Triggers (when to abort and rollback):

  • More than 15% of members can’t login after migration
  • Payment processing completely broken
  • Subscription linking fails for majority of active subscribers
  • Critical content protection issues (paid content accessible to non-members)
  • Downtime exceeds planned window by more than 3 hours

Rollback Procedure:

  1. Stay calm: Rollbacks are normal in complex migrations. Don’t panic.
  2. Put site in maintenance mode (if not already)
  3. Deactivate MemberPress plugin
  4. Restore WordPress database from pre-migration backup
  5. Restore WordPress files if any theme/plugin changes were made
  6. Reactivate AccessAlly
  7. Verify CRM connection still works
  8. Test member login and access (verify restoration worked)
  9. Remove maintenance mode
  10. Send email to members: “We encountered technical issues with the system update and have rolled back to the previous system. We’ll reschedule the update once we resolve the issues. Your access and data are completely safe.”
  11. Post-mortem: Identify what went wrong, fix it on staging, schedule new migration date
🚨 Don’t Cancel CRM Immediately: Keep your CRM subscription active for at least 7 days after migration. If you need to rollback, you’ll need the CRM connection. Once you’re confident the migration is successful, THEN cancel.

Migration Timeline & Downtime

Total Time Estimate: 25-35 hours (planning, execution, testing)

Phase Time Downtime Required?
CRM Data Export & Backup 2-3 hours ❌ No
Automation Documentation 2-3 hours ❌ No
Tag Mapping & Planning 3-4 hours ❌ No
MemberPress Installation (Staging) 1-2 hours ❌ No (staging only)
Membership Levels Creation 2-3 hours ❌ No
Access Rules Configuration 3-4 hours ❌ No
Content Reorganization 2-4 hours ❌ No
Shortcode Replacement 2-3 hours ❌ No
Member Data Import 2-3 hours ❌ No (staging)
Subscription Verification 2-3 hours ❌ No
Testing & Verification 5-7 hours ❌ No (staging)
Live Site Cutover 3-5 hours ✅ Yes (REQUIRED)
Post-Launch Monitoring 3-4 hours (first 48 hours) ❌ No

Recommended Downtime Window: 3-5 hours on a weekend or low-traffic period for the live site cutover (disabling AccessAlly, activating MemberPress, final import, webhook updates)


Cost Analysis: AccessAlly vs MemberPress

AccessAlly Total Annual Cost:

  • AccessAlly license: $497-$997/year (depends on plan)
  • CRM subscription: $348-$5,964/year (ActiveCampaign $29/mo to Keap $497/mo)
  • Total: $845-$6,961/year

MemberPress Total Annual Cost:

  • MemberPress license: $179-$369/year (depends on plan)
  • Optional: Email marketing service $0-$1,188/year (if needed for automations)
  • Total: $179-$1,557/year

Annual Savings: $666-$5,404/year

💰 ROI Calculation: Migration costs 25-35 hours of your time (or $2,000-$5,000 if hiring a developer). You break even within 4-9 months if you were paying for mid-tier CRM ($79/mo), or within 1-2 months if you were paying for Keap ($497/mo). After that, it’s pure savings.

Need Help?

Migration Support:

Related Guides:

🎯 Migration Success Checklist:

  • ✅ Complete CRM data export (contacts, tags, custom fields, automations)
  • ✅ All AccessAlly tags mapped to MemberPress membership levels
  • ✅ All members imported with correct membership levels
  • ✅ All protected content has MemberPress rules configured
  • ✅ Drip schedules recreated (understanding timing differences)
  • ✅ AccessAlly shortcodes removed or replaced
  • ✅ Active subscriptions linked to member accounts
  • ✅ Payment gateway webhooks configured and tested
  • ✅ Failed payment access revocation tested and working
  • ✅ Member login working for all membership levels
  • ✅ Membership-based access rules verified
  • ✅ Email notifications configured (transactional)
  • ✅ No critical support tickets after 7 days
  • ✅ CRM subscription cancelled (after 7-day grace period)
📝 Post-Migration Cleanup (After 30 Days):

  • Verify all members can access content correctly
  • Confirm no subscription/payment issues
  • Monitor for access-related support tickets
  • Once stable, deactivate and delete AccessAlly plugin
  • Clean up old AccessAlly database tables (optional – backup first!)
  • Cancel CRM subscription (if not already done)
  • Update all documentation and member help resources
  • Remove old AccessAlly references from marketing materials
  • Set up replacement email marketing if needed
⚠️ Final Reality Check: This migration is PERMANENT. Once you cancel your CRM subscription, you lose access to all contact records, automation history, and member activity logs. You’re also losing significant features (advanced courses, conditional content, behavioral automation). Make sure you truly don’t need these features before proceeding. If you’re unsure, consider keeping AccessAlly and just changing to a cheaper CRM (AccessAlly Managed is $67/mo flat) instead of migrating away entirely.
Updated on January 16, 2026
Was this article helpful?

Related Articles

NO QUESTION GOES UNANSWERED

Live Weekly Q&A

Join us for live Q&A. Learn the basics, discover what's possible, and connect with AccessAlly users.

Need Support?

Have questions? Get in touch. Our inbox support hours are 9am-5pm EST, Monday - Friday.

Laptop with the AccessAlly demo site

AccessAlly is the most flexible way to sell and elegantly deliver digital offerings. All in one place.

WATCH THE DEMO

You'll get follow-up emails about AccessAlly and new features. Opt out anytime. Full privacy policy here.