1. Home
  2. Migrations
  3. Migrating from ActiveCampaign to Keap

Migrating from ActiveCampaign to Keap

ARTICLE CONTENT:

Complete Guide: Migrating from ActiveCampaign to Keap (Same AccessAlly Site)

📊 Migration Complexity: MEDIUM-HIGH
⏱️ 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
⚠️ Important Consideration: Keap has a steeper learning curve than ActiveCampaign. Budget time for team training. Also ensure Keap’s pricing tier fits your contact count and business size.

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
🚨 CRITICAL: Request 2-Site Exception
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:

  1. Sign up for Keap (choose appropriate tier for your contact count)
  2. Complete basic account setup (company info, timezone, sender email)
  3. Configure email deliverability (SPF, DKIM records)
  4. Set up tag categories (see Step 4 for planning)
  5. Test email sending (send yourself a test campaign)
  6. Create your first form and test it
💡 Pro Tip: Don’t import ANY contacts into Keap yet. Do all setup and configuration first, then import via AccessAlly Migration Wizard.

Step 2: Export Your Data from ActiveCampaign

  1. Log into your ActiveCampaign account
  2. Go to Contacts → Export
  3. Select “All Contacts”
  4. Choose “All Fields” (don’t filter)
  5. Select “Include Tags”
  6. Click Export
  7. ActiveCampaign will email you a CSV file
  8. 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
Email Email 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.

⚠️ CRITICAL TAG STRUCTURE DIFFERENCE

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
💡 Pro Tip: Keep tag names the same between ActiveCampaign and Keap. This makes updating AccessAlly access rules easier. Only the category organization changes, not the tag names themselves.

Step 5: Create Tag Categories and Tags in Keap

  1. Log into Keap
  2. Go to CRM → Tags
  3. Click “Add Category” for each category (Membership, Course Enrollment, etc.)
  4. Within each category, create the tags from your mapping spreadsheet
  5. Use exact same tag names as ActiveCampaign for easier migration

Step 6: Create Custom Fields in Keap

  1. List all custom fields from ActiveCampaign
  2. Go to Keap → CRM → Settings → Custom Fields
  3. Click “Add Custom Field” for each field
  4. Match field types (text, number, date, dropdown, etc.)
  5. 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)

🚨 DO THIS ON STAGING FIRST: Never switch CRMs on your live site without testing on staging. Request a 2-site exception from AccessAlly support.
  1. On your STAGING site, go to AccessAlly → Settings → General
  2. Under “CRM Integration,” change from ActiveCampaign to Keap
  3. Enter your Keap API credentials:
    • App Name (your Keap account subdomain)
    • API Key (found in Keap → Settings → Application → API Key)
  4. Click Save and Test Connection
  5. 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 name
  • Last Name – Last name
  • Tags – Comma-separated list of Keap tag names (without category prefixes)
  • _FieldName – Custom field columns (use Keap field names with underscore)

CSV transformation steps:

  1. Open your ActiveCampaign export in Excel or Google Sheets
  2. Rename columns to match Keap format
  3. For custom fields, add underscore prefix (e.g., “Member Level” → “_MemberLevel”)
  4. Ensure tags are comma-separated in one column
  5. Remove unsubscribed contacts (or handle separately)
  6. Save as new CSV: “activecampaign-to-keap-import.csv”
💡 Pro Tip: Test with a small batch (10-20 contacts) first to verify your CSV format and field mappings are correct.

Phase 2: Migration Execution (2-3 hours)

Step 9: Import Contacts via Migration Wizard

  1. On your STAGING site, go to AccessAlly → Migration Wizard
  2. If you don’t see Migration Wizard, download and activate the plugin (instructions)
  3. Click “Import from CSV”
  4. Upload your prepared CSV file
  5. Map CSV columns to Keap fields
  6. 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)
  7. 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
⏱️ Time Estimate: Import processes ~100-200 contacts per minute. Monitor for errors.

Step 10: Verify Contact ID Linking

The most critical step for CRM switches is ensuring Contact IDs are properly linked.

  1. Pick a random member from WordPress Users
  2. Check their user meta for “keap_contact_id” or “contact_id”
  3. Copy that Contact ID
  4. Search Keap for that Contact ID
  5. Verify it’s the correct contact (matching email address)
  6. Tag that contact in Keap with a test tag
  7. Verify the tag appears in AccessAlly for that WordPress user
🚨 CRITICAL: If Contact IDs aren’t linking correctly, members will lose access even if they have correct tags. Fix this before proceeding.

Step 11: Update AccessAlly Tags and Access Rules

AccessAlly stores tag names from your old CRM. After switching to Keap, verify these still match.

  1. Go through each AccessAlly Module or protected page
  2. Check “Who Can Access” settings
  3. Verify tag names still match Keap tags (should be the same if you kept names consistent)
  4. Update any tag-based access rules if tag names changed
  5. 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
💡 Pro Tip: If you kept tag names the same (just organized them into categories in Keap), your AccessAlly access rules should still work. Just test each one to be sure.

If you have paid members with active subscriptions, you need to ensure their Stripe/PayPal subscriptions are properly linked.

  1. Export active subscriptions from Stripe or PayPal
  2. Match subscription IDs to member email addresses
  3. In AccessAlly, go to each member’s profile
  4. Verify the subscription ID is stored correctly
  5. Test that failed payments will cancel access

Detailed guide: Preserving Subscriptions During Migration

🚨 SECURITY ISSUE: If subscription links aren’t correct, failed payments won’t cancel member access. This is a revenue leak. Test thoroughly.

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
💡 Planning Tip: Document your ActiveCampaign automations BEFORE migrating. Export visual diagrams and list all triggers/actions. Keap’s campaign builder is different – budget extra time to learn it.

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

  1. Create forms in Keap → Marketing → Web Forms
  2. Embed Keap form code on your WordPress pages
  3. Style forms to match your site
  4. Set up tag assignments and automation triggers

Option 2: Use AccessAlly Forms (Recommended)

  1. Create forms in AccessAlly → Opt-in Forms
  2. Configure to submit to Keap
  3. Better integration with WordPress/AccessAlly features
  4. 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
💡 Pro Tip: Have a team member (not you) test the member experience. Fresh eyes catch issues you’ll miss.

Step 16: Switch Live Site to Keap

When staging tests pass, switch your live site:

  1. Schedule downtime (2-4 hour window recommended)
  2. Put site in maintenance mode
  3. Create fresh WordPress backup
  4. Export final ActiveCampaign data (capture any new contacts since staging)
  5. Switch AccessAlly to Keap (same steps as staging)
  6. Import any new contacts from final export
  7. Verify access rules and tags
  8. Test login for 3-5 members
  9. Take site out of maintenance mode
  10. 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
🚨 CRITICAL TEST: Contact ID Verification
The #1 issue with CRM switches is Contact ID mismatches. Test this:

  1. Pick a random member from WordPress
  2. Check their user meta for “keap_contact_id”
  3. Search Keap for that Contact ID
  4. Verify it’s the correct contact
  5. 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):

  1. Disconnect ActiveCampaign from AccessAlly (remove API keys)
  2. Deactivate Migration Wizard plugin
  3. Export final ActiveCampaign data for records
  4. Downgrade or cancel ActiveCampaign (keep 30 days as safety net)
  5. Remove staging site’s 2-site exception (contact AccessAlly support)
  6. 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:

  1. Check WordPress user meta for “keap_contact_id” or “contact_id”
  2. If missing, re-import the user via Migration Wizard with “Update existing users” checked
  3. Verify the Contact ID in Keap matches the stored ID
  4. 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:

  1. Go to AccessAlly module or page protection settings
  2. Check “Who Can Access” tag names
  3. Compare to exact tag names in Keap (case-sensitive!)
  4. Update tag names in AccessAlly to match Keap
  5. 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:

  1. Verify custom fields exist in Keap (with underscore prefix)
  2. Update CSV column headers to match Keap field names (e.g., “_MemberLevel”)
  3. Re-import with “Update existing users” checked
  4. 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:

  1. After import, manually organize tags in Keap
  2. Go to Keap → CRM → Tags
  3. Drag tags into appropriate categories
  4. 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:

  1. Verify AccessAlly → Keap connection still active
  2. Edit form settings in AccessAlly
  3. Ensure form is set to submit to Keap (not ActiveCampaign)
  4. 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:

  1. DON’T PANIC – this is fixable
  2. Check AccessAlly → Keap connection is active
  3. Pick one test member and troubleshoot their Contact ID (see Issue 1)
  4. Once you fix the root cause, it affects all members
  5. If you can’t fix quickly, consider rolling back to ActiveCampaign temporarily
🚨 Rollback Procedure:
If critical issues occur and you need to revert to ActiveCampaign:

  1. Change AccessAlly CRM connection back to ActiveCampaign
  2. Re-enter ActiveCampaign API credentials
  3. Verify connection works
  4. Test member access (should restore immediately)
  5. 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:

Related Guides:

🎯 Migration Success Checklist:

  • ✅ 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
Updated on January 15, 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.