ARTICLE CONTENT:
Complete Guide: Migrating from Keap to AccessAlly Managed Contacts
⏱️ Estimated Time: 6-8 hours (plus extensive testing)
🛠️ Technical Level: Intermediate-Advanced
💰 Cost Impact: Eliminates Keap subscription ($79-$249+/month), but adds email delivery costs
Why Migrate from Keap to AccessAlly Managed?
Common reasons for migrating from Keap to AccessAlly Managed Contacts:
- Significant Cost Savings: Eliminate $79-$249+/month Keap subscription fees
- Simplification: Manage everything in WordPress without external CRM complexity
- Not Using Advanced CRM Features: If you’re not using Keap’s sales pipeline, appointment scheduling, or advanced CRM features, you’re overpaying
- Easier Member Management: Direct access to member data in WordPress database
- Integration Simplicity: No need to sync between WordPress and external CRM
This migration’s #1 failure point is email deliverability. You’re moving from Keap’s enterprise email infrastructure to WordPress-based sending. Without proper SMTP, SPF, DKIM, and DMARC setup, your emails WILL go to spam. This is NON-NEGOTIABLE. Budget time and money for proper email infrastructure.
Keap organizes tags into categories. When exporting from Keap, categories often get prepended to tag names:
Keap: Category “Membership” → Tag “Gold Member”
May become: “Membership: Gold Member” or “Membership – Gold Member”
This affects tag imports and AccessAlly access rules. See Step 5 for detailed handling.
What You’ll Need Before Starting
✅ Required Access & Accounts
- WordPress admin access to your AccessAlly site
- Keap admin access (for data export)
- AccessAlly license (Pro or higher for Managed Contacts)
- Access to your payment gateway (Stripe or PayPal)
- Access to your domain’s DNS settings (for email deliverability)
- SMTP service account (Postmark, SendGrid, Mailgun, or similar – REQUIRED)
- Staging site for testing (highly recommended)
📋 Complete the Pre-Migration Checklist
Before proceeding, work through the complete Pre-Migration Checklist. Key items include:
- Full backup of WordPress site and database
- Export of all Keap contact data
- CRITICAL: Complete audit of ALL tags with their categories
- Data mapping spreadsheet (contacts, tags, custom fields)
- Email sending infrastructure plan (SMTP service, DNS records)
- Staging site setup (highly recommended for this migration)
- Downtime plan and member communication
- Budget for SMTP service (typically $10-100/month depending on volume)
Phase 1: Pre-Migration Setup (3-4 hours)
Step 1: Set Up Email Deliverability Infrastructure (CRITICAL)
This is THE MOST IMPORTANT step. Do not skip or rush this.
1A. Choose and Set Up an SMTP Service
You CANNOT use default WordPress email sending. Choose a professional SMTP service:
| Service | Best For | Pricing |
|---|---|---|
| Postmark | Transactional emails, excellent deliverability | $15/month for 10,000 emails |
| SendGrid | High volume, marketing + transactional | $19.95/month for 50,000 emails |
| Mailgun | Technical users, pay-as-you-go | $0.80/1,000 emails (first 5k free) |
| Amazon SES | Very high volume, technical setup | $0.10/1,000 emails |
Recommendation: Postmark for best deliverability with simple setup. SendGrid for high volume.
1B. Install and Configure SMTP Plugin
- Install WP Mail SMTP or Post SMTP plugin
- Enter your SMTP service credentials
- Configure “From” email and name
- Enable force “From” settings
- Send test email to yourself
- Verify test email arrives in inbox (not spam)
1C. Configure DNS Records (MANDATORY)
Add these DNS records to your domain (exact values provided by your SMTP service):
- SPF Record: Authorizes your SMTP service to send email on your behalf
- DKIM Record: Cryptographic signature proving email authenticity
- DMARC Record: Policy for handling failed authentication
- Custom Return-Path: Ensures bounce handling works correctly
Example SPF record:
v=spf1 include:spf.yourdomain.com include:_spf.postmarkapp.com ~all
1D. Verify DNS Propagation and Email Deliverability
- Use MXToolbox.com to verify SPF and DKIM records
- Send test emails to Gmail, Outlook, Yahoo accounts
- Check inbox placement (not spam folder)
- Use Mail-Tester.com to check spam score (aim for 8/10 or higher)
- Fix any issues BEFORE migrating members
- ✅ SPF, DKIM, DMARC records verify correctly
- ✅ Test emails reach inbox (not spam) on Gmail, Outlook, Yahoo
- ✅ Mail-Tester score is 8/10 or higher
- ✅ SMTP plugin sends successfully
Poor email setup = emails go to spam = members miss important communications = migration failure.
Step 2: Understand Email Sending Limits
Keap has unlimited email sending. AccessAlly Managed + SMTP services have limits:
| Service | Monthly Limit | Daily Limit | Notes |
|---|---|---|---|
| Postmark (Starter) | 10,000 | ~333 | Transactional only |
| SendGrid (Essentials) | 50,000 | ~1,667 | Marketing + transactional |
| Mailgun (Pay-as-go) | Unlimited* | 1,000 (warm-up) | *Pay per email sent |
| Shared Hosting | 300-500 | 50-100 | DO NOT USE – too restrictive |
Calculate your email needs:
- How many members do you have?
- How often do you send broadcast emails?
- Do you have email sequences/wizards?
- Add 30% buffer for transactional emails (password resets, receipts, etc.)
If your needs exceed 10,000 emails/month, budget for a higher SMTP tier or consider keeping an external CRM.
Step 3: Enable AccessAlly Managed Contacts
- Go to AccessAlly → Settings → General
- Under “CRM Integration,” select “Managed Contacts (no CRM)”
- Click Save Changes
- AccessAlly will reload with Managed Contacts features enabled
- Verify “Managed Contacts” appears in AccessAlly menu
Step 4: Export Your Data from Keap
- Log into your Keap account
- Go to Contacts → Export Contacts
- Select “All Contacts” (or filter if needed)
- Include all fields and all tags
- Click Export
- Keap will email you a CSV file (may take 10-30 minutes for large lists)
- Download and open the CSV file
What’s included in the Keap export:
- Email addresses
- First and last names
- Phone numbers
- Custom fields (prefixed with underscore, e.g., _MemberLevel)
- Tags (may include category prefixes)
- Opt-in status
- Dates (created, last updated)
What’s NOT included:
- Keap campaigns (must be rebuilt as AccessAlly automations)
- Email sequences (must be recreated)
- Appointment bookings
- Sales pipeline data
- Task history
- Notes and files
Step 5: Handle Keap Tag Category Prepending (CRITICAL)
Keap organizes tags into categories. During export, tag names often change:
| In Keap | In Export CSV | Impact |
|---|---|---|
| Category: Membership Tag: Gold Member |
“Membership: Gold Member” or “Membership – Gold Member” |
AccessAlly access rules expecting “Gold Member” will break |
| Category: Status Tag: Active |
“Status: Active” | Must update all AccessAlly rules to use “Status: Active” |
| Category: Lead Score Tag: Hot Lead |
“Lead Score: Hot Lead” | Internal tag – may not need in AccessAlly |
Steps to handle this:
- Open your Keap export CSV
- Look at the “Tags” column
- Note if tags have category prefixes (e.g., “Membership: Gold”)
- Create a tag mapping spreadsheet with three columns:
- Keap Tag (original): “Gold Member”
- CSV Tag (exported): “Membership: Gold Member”
- AccessAlly Tag (choose one): “Gold Member” OR “Membership: Gold Member”
- Decide: Keep prepended names OR clean them up?
Step 6: Map Your Keap Data to AccessAlly Managed
Create a data mapping spreadsheet. Use the Data Mapping Reference Guide for complete details.
| Keap Field | AccessAlly Managed Field | Notes |
|---|---|---|
| user_email | Required field | |
| First Name | first_name | Standard WordPress field |
| Last Name | last_name | Standard WordPress field |
| Phone1 | billing_phone or custom field | Create custom field if needed |
| Tags (with categories) | AccessAlly tags | Clean up category prefixes |
| _CustomField (underscore prefix) | WordPress user meta | Create in AccessAlly custom fields |
| Email Status (active/unsubscribed) | Opt-in status or tag | Create “Unsubscribed” tag |
Special Keap Field Considerations:
- Keap Custom Fields: Have underscore prefix (_FieldName). Map to WordPress user meta fields.
- Phone Fields: Keap has Phone1, Phone2. Decide which to keep or create multiple custom fields.
- Dates: Keap date fields should map to date-type custom fields in AccessAlly.
- Lead Score: Keap’s lead scoring doesn’t have equivalent in AccessAlly. Consider dropping or storing as custom field.
Step 7: Prepare Your CSV for Import
Transform your Keap export to AccessAlly Migration Wizard format.
Required columns for AccessAlly import:
user_email– Email address (required)first_name– First namelast_name– Last nameuser_pass– Leave blank (AccessAlly generates passwords)accessally_add_tags– Comma-separated list of tags (cleaned up)accessally_add_memberships– Membership levels (if applicable)- Custom field columns (use WordPress meta key names)
CSV transformation steps:
- Open your Keap export in Excel or Google Sheets
- Rename columns to match AccessAlly format:
- Keap “Email” →
user_email - Keap “First Name” →
first_name - Keap “Last Name” →
last_name
- Keap “Email” →
- Add a
user_passcolumn (leave blank) - CRITICAL: Clean up tag names in the Tags column:
- Find/Replace “Membership: ” with “” (remove category prefix)
- Find/Replace “Status: ” with “”
- Repeat for all category prefixes
- Ensure tags remain comma-separated in one cell
- Rename the cleaned tags column to
accessally_add_tags - For custom fields, rename _FieldName columns to WordPress meta keys
- Remove unsubscribed contacts OR add “Unsubscribed” tag
- Save as new CSV: “keap-to-accessally-import.csv”
Step 8: Recreate Your Tags in AccessAlly
- Make a list of all CLEANED tags from your CSV (no category prefixes)
- Go to AccessAlly → Tags
- Create each tag in AccessAlly
- Use the exact same tag names from your CSV
- Set up tag-based access rules for protected content
Step 9: Create Custom Fields in AccessAlly
- List all Keap custom fields from your export (those with _ prefix)
- Go to AccessAlly → Custom Fields
- Create each custom field in AccessAlly
- Match field types (text, number, date, etc.)
- Note the WordPress meta key for each field
- Update your CSV column headers to match these meta keys
Keap → AccessAlly field type mapping:
- Text → Text field
- Textarea → Textarea
- Number → Number
- Date → Date picker
- Phone → Text (with phone formatting)
- Dropdown → Select dropdown
Phase 2: Migration Execution (2-3 hours)
Step 10: Download and Activate the Migration Wizard Plugin
- Go to AccessAlly → Utilities
- Find “Migration Wizard Plugin”
- Click Download to get the plugin ZIP file
- Go to WordPress → Plugins → Add New → Upload Plugin
- Upload the Migration Wizard ZIP file
- Click Activate Plugin
- Verify “Migration Wizard” appears in AccessAlly menu
Full instructions: Using the AccessAlly Migration Wizard Plugin
Step 11: Import Your Contacts
- Go to AccessAlly → Migration Wizard
- Click “Upload CSV File”
- Select your prepared CSV file
- Map the CSV columns to AccessAlly fields (should auto-detect if named correctly)
- Choose import options:
- Update existing users: Check this if some contacts may already exist
- Send welcome email: UNCHECK this (you’ll email members separately)
- Generate passwords: Check this
- Apply tags: Check this
- Click “Start Import”
Monitor the import progress:
- The Migration Wizard shows a progress bar
- Check for error messages (common: duplicate emails, invalid email formats)
- Save the import log for troubleshooting
- Verify imported contacts appear in WordPress → Users
Step 12: Update AccessAlly Tag References
If you cleaned up tag names (removed category prefixes), verify AccessAlly access rules use the new names:
- Go through each AccessAlly Module
- Check “Who Can Access” settings
- Verify tag names match your cleaned tags
- Update any references to old Keap category-prefixed tags
- Check protected pages for tag-based access
- Review order form tag assignments
- Check email wizard tag triggers
Step 13: Link Payment Gateway Subscriptions
If you have paid members with active subscriptions, link their Stripe/PayPal subscriptions to WordPress accounts:
- Export your active subscriptions from Stripe or PayPal
- Match subscription IDs to member email addresses
- Use the Migration Wizard’s “Link Subscriptions” feature, OR
- Manually update each member’s subscription ID in AccessAlly
- Verify subscription webhooks are configured (Stripe/PayPal → WordPress)
Detailed guide: How to Migrate Subscription Payments
Step 14: Rebuild Your Automations
Keap campaigns cannot be automatically migrated. You’ll need to rebuild them using AccessAlly’s automation tools.
Keap → AccessAlly automation mapping:
| Keap | AccessAlly Equivalent |
|---|---|
| Campaign (email sequence) | Email Wizard |
| Tag applied trigger | Automation Trigger (tag-based) |
| Time-based sequence | Email Wizard with delays |
| Purchase follow-up | Order Form Actions |
| Goal reached | Module completion trigger |
| Conditional logic | Automation Trigger rules |
Common Keap campaigns to rebuild:
- Welcome sequences: Use AccessAlly Email Wizards
- Tag-based automations: Use AccessAlly Automation Triggers
- Purchase follow-ups: Set up Order Form Actions
- Module unlock sequences: Use Module Triggers
- Re-engagement campaigns: Use AccessAlly’s scheduled email feature
Step 15: Migrate Your Forms
Keap forms need to be recreated as AccessAlly opt-in forms or order forms.
For opt-in forms:
- Go to AccessAlly → Opt-in Forms
- Create a new form
- Match the fields from your Keap form
- Set up tag assignments for form submissions
- Style the form to match your site design
- Replace Keap form embeds with AccessAlly form shortcodes
For purchase forms:
- Go to AccessAlly → Order Forms
- Create order forms for each product
- Connect to Stripe or PayPal
- Set up product links (memberships, tags)
- Configure post-purchase automations
- Test purchase flow end-to-end
Phase 3: Post-Migration Verification (2-3 hours)
Step 16: Complete Post-Migration Checks
Work through the complete Post-Migration Verification Checklist. Key items for Keap → AA Managed:
✅ Contact Data Integrity
- Verify total contact count matches Keap export
- Check 10 random contacts for complete data (names, tags, custom fields)
- Search for duplicate accounts
- Verify unsubscribed contacts have correct status
- Check custom fields populated correctly
✅ Access & Permissions
- Test login as a member (use an incognito window)
- Verify access to protected content
- Check each membership level works correctly
- Test content unlocking based on tags
- Verify module access rules work
✅ Tags & Custom Fields
- Verify tags migrated correctly (sample 10 contacts)
- Check tags DON’T have category prefixes (if you cleaned them)
- Test tag-based access rules
- Verify custom fields match Keap data
✅ Email Deliverability (MOST CRITICAL)
- Send test emails to Gmail, Outlook, Yahoo
- Check inbox placement (not spam)
- Verify unsubscribe links work
- Test email wizard sequences
- Check email sending from order forms
- Verify password reset emails work
- Test purchase receipt emails
This is THE failure point for Keap → AA Managed migrations. Test thoroughly:
- Send test emails to 10 different email addresses (Gmail, Outlook, Yahoo, etc.)
- Check inbox placement on ALL of them
- If ANY land in spam, STOP and fix email setup before proceeding
- Use Mail-Tester.com to verify spam score (8/10+ required)
- Check email headers for proper SPF/DKIM authentication
✅ Forms & Automations
- Test each opt-in form submission
- Verify form data creates WordPress user
- Test order form purchases (use Stripe test mode)
- Confirm post-purchase automations fire
- Test auto-login after purchase
- Verify email wizards trigger correctly
✅ Subscriptions & Payments
- Verify active subscriptions linked correctly
- Test new purchase flow end-to-end
- Test subscription cancellation
- 🚨 CRITICAL: Test failed payment handling
- Check that member access aligns with payment status
Test that failed payments correctly cancel member access. This is a security issue if not working.
- Create a test member with a test subscription
- Simulate a failed payment in Stripe (use test mode)
- Verify AccessAlly removes member access
- Check that the subscription cancellation webhook fired correctly
Step 17: Monitor for 7-14 Days
Don’t cancel your Keap account immediately. Monitor for issues during the first 1-2 weeks:
- Day 1-2: Watch for immediate access issues, login problems, email deliverability
- Day 3-5: Monitor email engagement rates (lower than Keap? Check deliverability)
- Day 6-7: Check subscription/payment handling
- Day 8-14: Monitor for any delayed issues
What to monitor:
- Member support tickets (migration-related confusion?)
- Email bounce rates (deliverability issues?)
- Email open rates (significantly lower = spam folder)
- Login errors or access issues
- Payment failures or subscription problems
- Form submission success rates
Step 18: Clean Up
Once migration is stable (14+ days):
- Deactivate Migration Wizard plugin
- Delete Migration Wizard plugin (reduces plugin footprint)
- Export final Keap data for records (campaigns, notes, etc.)
- Update member documentation (new login URL, password reset process)
- Remove Keap integration from any third-party tools
- Cancel or downgrade Keap (after 30-60 day safety period)
- Celebrate cost savings! You’re now saving $79-$249+/month
Troubleshooting Common Issues
Issue 1: Emails Going to Spam (MOST COMMON)
Symptoms: Members report not receiving emails, or emails land in spam folder
Causes:
- SPF/DKIM/DMARC not configured correctly
- Sending domain has poor reputation
- No SMTP plugin configured (using default WordPress mail)
- WordPress sending from wrong email address
- Hosting provider blocking SMTP
- Too many emails sent too fast (triggering spam filters)
Solution:
- Install and configure WP Mail SMTP or Postmark plugin
- Verify SPF and DKIM records are correct (check with MXToolbox)
- Test email deliverability with Mail Tester (mail-tester.com) – aim for 8/10+
- Warm up your sending domain (start with small email batches)
- Ensure “From” email matches your domain
- Check email content for spam triggers (all caps, excessive links, etc.)
- Verify SMTP credentials are correct and service is active
Issue 2: Tags Imported with Category Prefixes
Symptoms: Tags imported as “Membership: Gold Member” but AccessAlly access rules expect “Gold Member”
Causes:
- Didn’t clean up tag names during CSV prep
- Keap export included category prefixes
- AccessAlly access rules reference old tag names
Solution Option 1 (Recommended): Update AccessAlly access rules to match imported tags
- Go to each module or protected page
- Update “Who Can Access” tag names to include category prefix
- Example: Change “Gold Member” to “Membership: Gold Member”
- Test access for each membership level
Solution Option 2: Re-import with cleaned tags
- Export current imported contacts
- Delete imported contacts from WordPress (if this is early in migration)
- Clean up tag names in CSV (remove category prefixes)
- Re-import using cleaned CSV
Issue 3: Members Can’t Log In
Symptoms: Members getting “Invalid username or password” errors
Causes:
- Passwords weren’t migrated (Keap doesn’t export passwords)
- Members trying to use their Keap passwords
- Email addresses imported incorrectly
- WordPress usernames created differently than expected
Solution:
- Send password reset emails to all members after migration
- Use AccessAlly’s “Generate New Passwords” feature
- Create a migration announcement email explaining password reset process
- Set up a help page with password reset instructions
- For individual members: manually send password reset link via WordPress
Recommended announcement template:
Subject: Important: We’ve upgraded our member portal
Hi [First Name],
We’ve upgraded to a new member management system to serve you better. Your account has been transferred, but you’ll need to set a new password.
To access your account:
- Go to [your login page URL]
- Click “Forgot Password”
- Enter your email address: [their email]
- Check your email for password reset link
- Create a new password
All your content access and membership benefits remain the same.
Questions? Reply to this email.
Issue 4: Subscription Payments Not Linked
Symptoms: Active subscribers showing as “no subscription” in AccessAlly
Causes:
- Subscription IDs not linked during migration
- Email address mismatch between Stripe and WordPress
- Wrong subscription ID format
- Subscription webhooks not configured
Solution:
- Export active subscriptions from Stripe
- Match subscription IDs to WordPress user emails
- Manually link subscriptions in AccessAlly user profiles
- Test failed payment handling for each subscription
- Verify Stripe webhooks are pointing to your WordPress site
- Check webhook logs in Stripe for errors
Detailed guide: Migrating Subscription Payments
Issue 5: Custom Fields Not Imported
Symptoms: Custom field data missing from member profiles
Causes:
- Custom fields not created in AccessAlly before import
- CSV column names don’t match custom field slugs
- Custom field data in wrong format
- Keap underscore prefix not removed from field names
Solution:
- Go to AccessAlly → Custom Fields
- Create each custom field (match Keap field without underscore prefix)
- Note the field slug AccessAlly generates
- Update your CSV column headers to match field slugs
- Re-import with “Update existing users” checked
- Verify data populated correctly for sample contacts
Issue 6: Email Sending Volume Exceeded
Symptoms: SMTP service rejecting emails, members not receiving communications
Causes:
- Hit daily or monthly email limit for SMTP service
- Too many emails sent too fast
- Didn’t account for transactional + broadcast emails
Solution:
- Check your SMTP service dashboard for current usage
- Upgrade to higher tier if needed
- Implement email rate limiting (spread broadcasts over time)
- Prioritize critical emails (password resets, receipts) over marketing
- Consider segmenting large broadcasts
- Review AccessAlly email wizard settings for throttling options
Migration Timeline & Downtime
Total Time Estimate: 6-8 hours (plus 2-3 hours testing)
| Phase | Tasks | Time |
|---|---|---|
| Phase 1: Pre-Migration | Email infrastructure setup, DNS records, Keap export, data mapping, tag cleanup, CSV prep | 3-4 hours |
| Phase 2: Migration Execution | Contact import, subscription linking, automation rebuild, form migration | 2-3 hours |
| Phase 3: Verification | Data integrity checks, access testing, email deliverability testing, subscription testing | 2-3 hours |
Recommended Approach:
- Week 1: Email infrastructure setup (can do anytime, no downtime)
- Week 2: Data export, mapping, CSV prep (no downtime)
- Week 3: Import and migration execution (optional 2-hour downtime window)
- Week 4: Testing and verification (no downtime)
Should You Consider Professional Help?
This migration has higher complexity than typical CRM switches due to:
- Email deliverability setup requirements
- Keap tag category prepending issue
- Need to rebuild complex campaigns
- Higher risk of member-facing issues
Consider professional migration assistance if:
- You have 1,000+ active members
- You send 10,000+ emails per month
- You have complex tag-based access rules (50+ tags)
- You have intricate Keap campaigns to rebuild
- You’re not comfortable with DNS configuration
- You can’t afford email deliverability issues
- Your business can’t tolerate downtime or access issues
Professional help can:
- Set up proper email infrastructure from day one
- Automate tag cleanup and remapping
- Handle complex campaign rebuilding
- Minimize member-facing disruption
- Provide rollback plan if issues occur
- Reduce downtime to 1-2 hours
Contact AccessAlly support to discuss migration assistance.
Need Help?
Migration Support:
- Review the Migration Support Policy to understand what support is available
- For complex migrations or paid help: Contact AccessAlly support
Related Guides:
- Pre-Migration Checklist
- Post-Migration Verification
- Data Mapping Reference
- Migrating to AccessAlly Managed Contacts Guide
- How to Migrate Subscription Payments
- Keap → ActiveCampaign Guide (covers tag category issue in detail)
- ✅ Email infrastructure properly configured (SPF, DKIM, DMARC)
- ✅ Test emails delivering to inbox (not spam) – 8/10+ Mail-Tester score
- ✅ All contacts imported with correct data
- ✅ Tags cleaned up (no category prefixes if desired)
- ✅ Custom fields preserved
- ✅ Member login working
- ✅ Content access rules working
- ✅ Subscriptions linked and tested
- ✅ Failed payment handling verified
- ✅ Forms working and collecting data
- ✅ Automations rebuilt and tested
- ✅ Email engagement rates similar to Keap levels
- ✅ No critical support tickets after 14 days