ARTICLE CONTENT:
Complete Guide: Migrating from ActiveCampaign to Keap (Same AccessAlly Site)
⏱️ Estimated Time: 6-8 hours (plus testing)
🛠️ Technical Level: Intermediate-Advanced
💰 Cost Impact: Keap typically costs more than ActiveCampaign ($169-$299/mo vs $29-$149/mo)
Why Migrate from ActiveCampaign to Keap?
Common reasons for migrating from ActiveCampaign to Keap:
- More Powerful CRM: Keap has built-in CRM features (sales pipelines, lead scoring, appointment scheduling)
- All-in-One Platform: Keap combines email marketing, CRM, invoicing, and payments in one system
- Advanced Automation: More sophisticated campaign builder with visual automation sequences
- Better Contact Segmentation: Tag categories provide better organization for large contact databases
- Native Payment Processing: Built-in invoicing and payment collection (vs. requiring Stripe separately)
- Business Growth: Your business needs enterprise-level features that ActiveCampaign doesn’t offer
What You’ll Need Before Starting
✅ Required Access & Accounts
- WordPress admin access to your AccessAlly site
- ActiveCampaign admin access (for data export)
- Keap account access (must be set up and configured)
- AccessAlly license that supports CRM switching
- Access to your payment gateway (Stripe or PayPal)
📋 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 ActiveCampaign contact data
- Audit of your current member count, tags, and custom fields
- Data mapping spreadsheet (contacts, tags, custom fields, automations)
- Plan for organizing ActiveCampaign tags into Keap tag categories
- Staging site setup for testing (CRITICAL for CRM switches)
- Request 2-site exception from AccessAlly support
- Downtime plan and member communication
AccessAlly licenses are typically limited to one live site. You MUST request a temporary 2-site exception from AccessAlly support before setting up Keap on your staging site. This lets you test the migration without breaking your live site.
Phase 1: Pre-Migration Setup (3-4 hours)
Step 1: Set Up Your Keap Account
If you haven’t already set up Keap:
- Sign up for Keap (choose appropriate tier for your contact count)
- Complete basic account setup (company info, timezone, sender email)
- Configure email deliverability (SPF, DKIM records)
- Set up tag categories (see Step 4 for planning)
- Test email sending (send yourself a test campaign)
- Create your first form and test it
Step 2: Export Your Data from ActiveCampaign
- Log into your ActiveCampaign account
- Go to Contacts → Export
- Select “All Contacts”
- Choose “All Fields” (don’t filter)
- Select “Include Tags”
- Click Export
- ActiveCampaign will email you a CSV file
- Download and open the CSV
What’s included in the ActiveCampaign export:
- Email addresses
- First and last names
- Phone numbers
- Custom fields
- Tags (in a single column, comma-separated)
- Subscription status
- Contact scores (if used)
What’s NOT included:
- Automation workflows (must be rebuilt in Keap)
- Deals and pipelines
- Email campaign history
- Form designs
- Site tracking data
Step 3: Map Your ActiveCampaign Data to Keap
Create a data mapping spreadsheet. Use the Data Mapping Reference Guide for complete field mappings.
| ActiveCampaign Field | Keap Field | Notes |
|---|---|---|
| Required field | ||
| First Name | First Name | Standard field |
| Last Name | Last Name | Standard field |
| Phone | Phone 1 | Keap has multiple phone fields |
| Tags (flat structure) | Tags (with categories) | Must organize into categories |
| Custom Fields | Custom Fields (_FieldName) | Keap uses underscore prefix |
| Contact Score | Lead Score | May not map directly |
Step 4: Organize ActiveCampaign Tags into Keap Tag Categories
Keap uses tag categories to organize tags. ActiveCampaign has a flat tag structure. You must decide how to organize your tags.
ActiveCampaign: Flat tag list (e.g., “Gold Member”, “Silver Member”, “Free Member”)
Keap: Hierarchical tag categories (e.g., Category “Membership” → Tags “Gold Member”, “Silver Member”, “Free Member”)
Impact: You must organize your ActiveCampaign tags into logical categories during migration.
Recommended Keap tag category structure:
- Membership: Access-level tags (Gold, Silver, Bronze, Free, etc.)
- Course Enrollment: Which courses members have access to
- Purchase History: Products purchased
- Lead Status: Where in sales funnel (Prospect, Lead, Customer, etc.)
- Engagement: Behavioral tags (Active, Inactive, At Risk, etc.)
- Interests: Topic-based segmentation
Create a tag mapping spreadsheet:
| ActiveCampaign Tag | Keap Category | Keap Tag Name | Used in AccessAlly? |
|---|---|---|---|
| Gold Member | Membership | Gold Member | YES – Module access |
| Silver Member | Membership | Silver Member | YES – Module access |
| Newsletter Subscriber | Lead Status | Newsletter Subscriber | NO |
Step 5: Create Tag Categories and Tags in Keap
- Log into Keap
- Go to CRM → Tags
- Click “Add Category” for each category (Membership, Course Enrollment, etc.)
- Within each category, create the tags from your mapping spreadsheet
- Use exact same tag names as ActiveCampaign for easier migration
Step 6: Create Custom Fields in Keap
- List all custom fields from ActiveCampaign
- Go to Keap → CRM → Settings → Custom Fields
- Click “Add Custom Field” for each field
- Match field types (text, number, date, dropdown, etc.)
- Note that Keap custom fields use underscore prefix (e.g., _MemberLevel)
ActiveCampaign → Keap field type mapping:
- Text → Text
- Textarea → Text Area
- Number → Number
- Date → Date/Time
- Dropdown → Dropdown List
- Checkbox → Yes/No
Step 7: Connect Keap to AccessAlly (Staging Site First)
- On your STAGING site, go to AccessAlly → Settings → General
- Under “CRM Integration,” change from ActiveCampaign to Keap
- Enter your Keap API credentials:
- App Name (your Keap account subdomain)
- API Key (found in Keap → Settings → Application → API Key)
- Click Save and Test Connection
- Verify the connection is successful
Step 8: Prepare Your CSV for Migration Wizard
The AccessAlly Migration Wizard expects a specific format. Transform your ActiveCampaign export.
Required columns for AccessAlly + Keap import:
Email– Email address (required)First Name– First nameLast Name– Last nameTags– Comma-separated list of Keap tag names (without category prefixes)_FieldName– Custom field columns (use Keap field names with underscore)
CSV transformation steps:
- Open your ActiveCampaign export in Excel or Google Sheets
- Rename columns to match Keap format
- For custom fields, add underscore prefix (e.g., “Member Level” → “_MemberLevel”)
- Ensure tags are comma-separated in one column
- Remove unsubscribed contacts (or handle separately)
- Save as new CSV: “activecampaign-to-keap-import.csv”
Phase 2: Migration Execution (2-3 hours)
Step 9: Import Contacts via Migration Wizard
- On your STAGING site, 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 to Keap fields
- Choose import options:
- Update existing users: Check if members may already exist in WordPress
- Create users in CRM: Check (this creates contacts in Keap)
- Add tags: Check (applies tags from CSV)
- Click “Start Import”
What happens during import:
- WordPress user accounts created (if they don’t exist)
- Contacts created in Keap
- Tags applied in Keap (within appropriate categories)
- Contact ID from Keap stored in WordPress user meta
- This Contact ID linking is CRITICAL for access control
Step 10: Verify Contact ID Linking
The most critical step for CRM switches is ensuring Contact IDs are properly linked.
- Pick a random member from WordPress Users
- Check their user meta for “keap_contact_id” or “contact_id”
- Copy that Contact ID
- Search Keap for that Contact ID
- Verify it’s the correct contact (matching email address)
- Tag that contact in Keap with a test tag
- Verify the tag appears in AccessAlly for that WordPress user
Step 11: Update AccessAlly Tags and Access Rules
AccessAlly stores tag names from your old CRM. After switching to Keap, verify these still match.
- Go through each AccessAlly Module or protected page
- Check “Who Can Access” settings
- Verify tag names still match Keap tags (should be the same if you kept names consistent)
- Update any tag-based access rules if tag names changed
- Update membership levels to link to correct Keap tags
Critical areas to check:
- Module access rules
- Page protection settings
- Order form tag assignments
- Email wizard tag triggers
- Automation trigger rules
Step 12: Link Payment Gateway Subscriptions
If you have paid members with active subscriptions, you need to ensure their Stripe/PayPal subscriptions are properly linked.
- Export active subscriptions from Stripe or PayPal
- Match subscription IDs to member email addresses
- In AccessAlly, go to each member’s profile
- Verify the subscription ID is stored correctly
- Test that failed payments will cancel access
Detailed guide: Preserving Subscriptions During Migration
Step 13: Rebuild Your Automations in Keap
ActiveCampaign automations cannot be automatically migrated. You must rebuild them in Keap.
Common ActiveCampaign automations to rebuild:
- Welcome sequences: Use Keap campaigns
- Tag-based automations: Use Keap campaign triggers
- Purchase follow-ups: Set up in Keap campaigns
- Lead scoring: Rebuild scoring rules in Keap
- Site tracking triggers: Reconfigure in Keap
ActiveCampaign → Keap automation mapping:
| ActiveCampaign | Keap Equivalent |
|---|---|
| Automation | Campaign |
| Tag trigger | Campaign goal (tag applied) |
| Wait step | Timer in campaign sequence |
| Conditional split | Decision diamond |
| Goal reached | Campaign goal |
Step 14: Update Forms and Opt-ins
ActiveCampaign forms need to be replaced with Keap forms OR AccessAlly forms that submit to Keap.
Option 1: Use Keap Forms
- Create forms in Keap → Marketing → Web Forms
- Embed Keap form code on your WordPress pages
- Style forms to match your site
- Set up tag assignments and automation triggers
Option 2: Use AccessAlly Forms (Recommended)
- Create forms in AccessAlly → Opt-in Forms
- Configure to submit to Keap
- Better integration with WordPress/AccessAlly features
- More control over styling and behavior
Phase 3: Go-Live and Verification (2-3 hours)
Step 15: Test Everything on Staging
Before touching your live site, thoroughly test on staging:
- ✅ Member login works
- ✅ Content access rules work correctly
- ✅ Tags control access properly (test each membership level)
- ✅ Forms submit to Keap
- ✅ Purchase flow works end-to-end
- ✅ Subscription linking works
- ✅ Failed payment handling tested
- ✅ Automations trigger correctly
- ✅ Email sending works
Step 16: Switch Live Site to Keap
When staging tests pass, switch your live site:
- Schedule downtime (2-4 hour window recommended)
- Put site in maintenance mode
- Create fresh WordPress backup
- Export final ActiveCampaign data (capture any new contacts since staging)
- Switch AccessAlly to Keap (same steps as staging)
- Import any new contacts from final export
- Verify access rules and tags
- Test login for 3-5 members
- Take site out of maintenance mode
- Monitor closely for 1 hour
Step 17: Complete Post-Migration Checks
Work through the complete Post-Migration Verification Checklist. Key items for AC → Keap:
✅ Contact Data Integrity
- Verify total contact count matches ActiveCampaign
- Check 10 random contacts in Keap for complete data
- Verify Contact IDs properly stored in WordPress
- Check for duplicate contacts
- Verify tags applied with correct categories
✅ Access & Permissions
- Test login as multiple member types
- Verify access to protected content for each membership level
- Check tag-based access rules work
- Test content unlocking based on tags
✅ Tags & Custom Fields
- Verify tags migrated correctly (sample 10 contacts)
- Check tags organized into correct Keap categories
- Check custom fields populated in Keap
- Test tag-based access rules
- Verify tag assignment via forms
✅ Forms & Automations
- Test each opt-in form submission
- Verify form data reaches Keap
- Test order form purchases
- Confirm post-purchase automations fire in Keap
- Test auto-login after purchase
✅ Subscriptions & Payments
- Verify active subscriptions linked correctly
- Test new purchase flow end-to-end
- Test subscription cancellation
- 🚨 CRITICAL: Test failed payment handling
- Verify member access aligns with payment status
The #1 issue with CRM switches is Contact ID mismatches. Test this:
- Pick a random member from WordPress
- Check their user meta for “keap_contact_id”
- Search Keap for that Contact ID
- Verify it’s the correct contact
- Test that tagging them in Keap grants access in AccessAlly
If Contact IDs are wrong, members will lose access even if they have correct tags.
Step 18: Monitor for 7 Days
Don’t cancel ActiveCampaign immediately. Monitor for issues during the first week:
- Day 1-2: Watch for immediate access issues, login problems
- Day 3-5: Monitor form submissions and automation triggers
- Day 6-7: Check subscription/payment handling
What to monitor:
- Member support tickets (migration-related confusion?)
- Login errors or access issues
- Payment failures or subscription problems
- Form submission success rates
- Automation trigger verification
Step 19: Clean Up
Once migration is stable (7+ days):
- Disconnect ActiveCampaign from AccessAlly (remove API keys)
- Deactivate Migration Wizard plugin
- Export final ActiveCampaign data for records
- Downgrade or cancel ActiveCampaign (keep 30 days as safety net)
- Remove staging site’s 2-site exception (contact AccessAlly support)
- Update member documentation with any CRM-related changes
Troubleshooting Common Issues
Issue 1: Contact IDs Not Linking (CRITICAL)
Symptoms: Members have correct tags in Keap but can’t access content
Causes:
- Contact ID not stored in WordPress user meta during import
- Contact ID stored under wrong meta key
- WordPress user exists but Keap contact doesn’t
Solution:
- Check WordPress user meta for “keap_contact_id” or “contact_id”
- If missing, re-import the user via Migration Wizard with “Update existing users” checked
- Verify the Contact ID in Keap matches the stored ID
- Test access after fixing Contact ID
Issue 2: Tags Not Controlling Access
Symptoms: Members have tags in Keap but content access doesn’t match
Causes:
- Tag names in AccessAlly don’t match Keap exactly (case-sensitive)
- Access rules reference old ActiveCampaign tag names
- Contact ID linking issue (see Issue 1)
Solution:
- Go to AccessAlly module or page protection settings
- Check “Who Can Access” tag names
- Compare to exact tag names in Keap (case-sensitive!)
- Update tag names in AccessAlly to match Keap
- Test access again
Issue 3: Custom Fields Data Missing
Symptoms: Custom field data didn’t migrate from ActiveCampaign to Keap
Causes:
- Custom fields not created in Keap before import
- CSV column names don’t match Keap field names (missing underscore prefix)
- Field type mismatch
Solution:
- Verify custom fields exist in Keap (with underscore prefix)
- Update CSV column headers to match Keap field names (e.g., “_MemberLevel”)
- Re-import with “Update existing users” checked
- Check a few contacts to verify data populated
Issue 4: Tags Not Organized into Categories
Symptoms: Tags imported but all in one default category in Keap
Causes:
- Tag categories not created before import
- Migration Wizard doesn’t specify categories
Solution:
- After import, manually organize tags in Keap
- Go to Keap → CRM → Tags
- Drag tags into appropriate categories
- This doesn’t affect AccessAlly access (uses tag names, not categories)
Issue 5: Forms Not Submitting to Keap
Symptoms: Form submissions not creating/updating contacts in Keap
Causes:
- AccessAlly not properly connected to Keap
- Form configured for old ActiveCampaign connection
- Keap API rate limit reached
Solution:
- Verify AccessAlly → Keap connection still active
- Edit form settings in AccessAlly
- Ensure form is set to submit to Keap (not ActiveCampaign)
- Test form submission and verify in Keap
Issue 6: All Members Lost Access After Migration
Symptoms: Every member getting “You don’t have permission” errors
Causes:
- Contact IDs not linking (most common – see Issue 1)
- Tag names changed during migration
- AccessAlly connection to Keap broken
Solution:
- DON’T PANIC – this is fixable
- Check AccessAlly → Keap connection is active
- Pick one test member and troubleshoot their Contact ID (see Issue 1)
- Once you fix the root cause, it affects all members
- If you can’t fix quickly, consider rolling back to ActiveCampaign temporarily
If critical issues occur and you need to revert to ActiveCampaign:
- Change AccessAlly CRM connection back to ActiveCampaign
- Re-enter ActiveCampaign API credentials
- Verify connection works
- Test member access (should restore immediately)
- Contact AccessAlly support for migration assistance
Migration Timeline & Downtime
Total Time Estimate: 6-8 hours (plus 2-3 hours testing)
| Phase | Time | Downtime Required? |
|---|---|---|
| Keap Account Setup | 1-2 hours | ❌ No |
| Data Export & Mapping | 1-2 hours | ❌ No |
| Tag Category Planning | 1 hour | ❌ No |
| Staging Site Setup & Test | 2-3 hours | ❌ No (staging only) |
| Live Site CRM Switch | 1-2 hours | ✅ Yes (REQUIRED) |
| Automation Rebuild | 2-4 hours | ❌ No (can do after) |
| Form Migration | 1 hour | ❌ No |
| Testing & Verification | 2-3 hours | ❌ No |
Recommended Downtime Window: 2-4 hours on a weekend or low-traffic period for the live site switch
Need Help?
Migration Support:
- Review the Migration Support Policy
- For CRM switch assistance: Contact AccessAlly support
- Consider professional migration help for large or complex sites
Related Guides:
- Pre-Migration Checklist
- Post-Migration Verification
- Data Mapping Reference
- How to Migrate CRMs and Keep The Same AccessAlly Site
- Preserving Subscriptions During Migration
- ✅ All contacts imported to Keap with correct data
- ✅ Contact IDs properly linked in WordPress
- ✅ Tags organized into appropriate Keap categories
- ✅ Tag names consistent between ActiveCampaign and Keap
- ✅ Custom fields preserved with underscore prefix
- ✅ Member login working
- ✅ Content access rules working correctly
- ✅ Tag-based access tested and verified
- ✅ Subscriptions linked and tested
- ✅ Failed payment handling verified
- ✅ Forms submitting to Keap
- ✅ Core automations rebuilt and tested
- ✅ No critical support tickets after 7 days