ARTICLE CONTENT:
Complete Guide: Migrating from Keap to Ontraport (Same AccessAlly Site)
⏱️ Estimated Time: 8-12 hours (plus extensive testing)
🛠️ Technical Level: Advanced
💰 Cost Impact: Ontraport typically similar or higher pricing than Keap ($79-$497/mo)
⚠️ CRITICAL BLOCKER: Keap tag categories get prepended to tag names, requiring extensive manual remapping in AccessAlly
Why This Migration Is Complex
The Keap → Ontraport migration has a MAJOR technical blocker that you must understand before proceeding:
Keap organizes tags into categories. When migrating to Ontraport (which uses flat tag structure with IDs):
Keap: Category “Membership” → Tag “Gold Member”
May become in Ontraport: Tag “Membership: Gold Member” (if categories prepended during export/import)
OR: Separate tags without categories, requiring manual mapping to Ontraport tag IDs
This means:
- Tag structure changes during migration
- ALL AccessAlly access rules may break (looking for old tag names)
- You must manually update every tag reference in AccessAlly
- Members lose access if tag names don’t match exactly
- Ontraport uses tag IDs internally, adding complexity
Additional complexity factors:
- Both are advanced CRMs: Keap and Ontraport have comparable feature sets (campaigns, pipelines, deals)
- Different automation builders: Keap campaigns → Ontraport campaigns (similar complexity, different interface)
- Custom field structure: Keap’s underscore-prefixed fields (_custom_field) → Ontraport field IDs (f1234)
- CRM switch risk: Contact ID linking is CRITICAL – if it fails, members lose access even with correct tags
Recommendation: Consider professional migration help for Keap → Ontraport switches. If proceeding DIY, budget 8-12 hours for tag remapping and testing.
Why Migrate from Keap to Ontraport?
Despite the complexity, common reasons for migrating:
- Better Business Reporting: Ontraport’s reporting more comprehensive than Keap
- Simpler Interface: Some find Ontraport’s UI more intuitive than Keap’s Campaign Builder
- Pricing Structure: Ontraport’s pricing may fit your business model better
- Contact Management: Ontraport’s database structure preferred for complex businesses
- Native Payment Processing: Ontraport’s payment gateway integration more robust
- Feature Parity: Both are enterprise CRMs – you’re not losing core functionality
What You’ll Need Before Starting
✅ Required Access & Accounts
- WordPress admin access to your AccessAlly site
- Keap admin access (for data export)
- Ontraport account (must be set up and configured)
- AccessAlly license that supports CRM switching
- Access to your payment gateway (Stripe or PayPal)
- LOTS of time – This is not a quick migration
- Developer or technical consultant (recommended for this migration)
📋 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
- Map every Keap category+tag to new Ontraport tag ID and name
- Document every location where tags are referenced in AccessAlly
- Audit of custom fields (note Keap’s underscore prefix)
- Staging site setup (MANDATORY for this migration)
- Request 2-site exception from AccessAlly support
- Downtime plan (expect 4-6 hour window)
- Member communication plan
Before importing anything, you MUST create a spreadsheet mapping every Keap tag to its new Ontraport tag ID and name. This document will be your lifeline during the migration. Include category structure from Keap.
AccessAlly licenses are typically limited to one live site. You MUST request a temporary 2-site exception from AccessAlly support before setting up Ontraport on your staging site. This lets you test the migration without breaking your live site.
Phase 1: Pre-Migration Setup (4-6 hours)
Step 1: Set Up Your Ontraport Account
If you haven’t already set up Ontraport:
- Sign up for Ontraport (choose appropriate tier for your contact count)
- Complete basic account setup (company info, timezone, sender email)
- Configure email deliverability (SPF, DKIM records)
- Test email sending (send yourself a test campaign)
- Create a test form and test it
- Familiarize yourself with Ontraport’s campaign builder
- Create test campaign to understand workflow
Step 2: Export Your Data from Keap
- Log into your Keap account
- Go to Contacts → Export Contacts
- Select “All Contacts”
- Include all fields and tags
- Download CSV export
- ALSO export tag list separately to see complete category structure
- ALSO export custom field definitions (note underscore-prefixed names)
To see tag categories in Keap:
- Go to CRM → Tags
- Note the category name for EVERY tag you use
- Document this in your tag mapping spreadsheet
- Take screenshots of tag category structure for reference
What’s included in the Keap export:
- Email addresses
- First and last names
- Phone numbers
- Custom fields (with underscore prefix: _custom_field)
- Tags (with category information)
- Contact scores (if used)
- Company information
What’s NOT included:
- Campaign workflows (must be rebuilt in Ontraport)
- Deals and pipeline data (must be manually transferred)
- Email campaign history
- Form designs
- Appointment scheduling settings
Step 3: Create Your Tag Mapping Document (CRITICAL STEP)
This is the most important step of the entire migration. Create a spreadsheet with these columns:
| Keap Category | Keap Tag | Ontraport Tag Name | Ontraport Tag ID | Used In AccessAlly? |
|---|---|---|---|---|
| Membership | Gold Member | Gold Member | (note ID after creation) | YES – Module access |
| Membership | Silver Member | Silver Member | (note ID after creation) | YES – Module access |
| Lead Status | Hot Lead | Hot Lead | (note ID after creation) | NO – Internal only |
| Course Progress | Module 1 Complete | Module 1 Complete | (note ID after creation) | YES – Progressive unlocking |
Column explanations:
- Keap Category: The category folder in Keap
- Keap Tag: The tag name as it appears in Keap
- Ontraport Tag Name: What you want the tag to be called in Ontraport (remove category if desired)
- Ontraport Tag ID: The numeric ID Ontraport assigns (fill this in after creating tags in Step 5)
- Used In AccessAlly?: Is this tag referenced in any AccessAlly access rules, modules, or automations?
- Option A: Keep tag names without category prefix (cleaner, more work during import)
- Option B: Include category in Ontraport tag name (“Membership: Gold Member”) for easier mapping
Option A is cleaner long-term but requires more careful CSV preparation.
Step 4: Map Custom Fields from Keap to Ontraport
Create a second mapping spreadsheet for custom fields:
| Keap Custom Field | Field Type | Ontraport Field Name | Ontraport Field ID |
|---|---|---|---|
| _membership_level | Text | Membership Level | (e.g., f1234) |
| _purchase_date | Date | Purchase Date | (e.g., f1235) |
| _subscriber_type | Dropdown | Subscriber Type | (e.g., f1236) |
- Keap custom fields have underscore prefix (_custom_field)
- Ontraport custom fields use “f” + number (f1234)
- Match field types carefully (text → text, date → date)
- Dropdown options must be recreated manually in Ontraport
Step 5: Recreate Tags in Ontraport
- Using your tag mapping spreadsheet, create each tag in Ontraport
- Go to Ontraport → Contacts → Tags
- Click “Add Tag” for each tag
- Use clean tag names (remove Keap categories if desired)
- CRITICAL: Note the Tag ID Ontraport assigns to each tag
- Update your tag mapping spreadsheet with Ontraport tag IDs
Important tag notes:
- Ontraport tags work similarly to Keap (simple tag/untag)
- Tag names are case-sensitive in both systems
- Ontraport uses numeric tag IDs internally
- Clean up unused tags during this process
- Consider consolidating similar tags from different Keap categories
Step 6: Create Custom Fields in Ontraport
- Using your custom field mapping spreadsheet
- Go to Ontraport → Contacts → Contact Information
- Click “Add Field” for each custom field
- Match field types (text, number, date, dropdown, etc.)
- CRITICAL: Note each field’s ID (e.g., “f1234”) for CSV mapping
- Update your custom field mapping spreadsheet with Ontraport field IDs
Keap → Ontraport field type mapping:
- Text → Text
- Textarea → Large Text
- Number → Numeric
- Date → Date
- Dropdown → Drop Down or List Box
- Checkbox → Check Box
- Phone → Phone (Ontraport has dedicated phone field)
Step 7: Audit ALL AccessAlly Tag References
Before migrating, document everywhere tags are used in AccessAlly:
- Go through every AccessAlly module and note which tags control access
- Check every protected page for tag-based access rules
- Review all order forms for tag assignments
- Check email wizards for tag triggers
- Review automation triggers for tag-based rules
- Document membership level tag associations
- Check progressive unlocking rules
Add this information to your tag mapping spreadsheet so you know which tag changes will break access.
Step 8: Connect Ontraport to AccessAlly (Staging Site First)
- On your STAGING site, go to AccessAlly → Settings → General
- Under “CRM Integration,” change from Keap to Ontraport
- Enter your Ontraport API credentials:
- App ID (found in Ontraport → Administration → Integrations → API Instructions)
- API Key (found in same location)
- Click Save and Test Connection
- Verify the connection is successful
Step 9: Prepare Your CSV for Migration Wizard
The AccessAlly Migration Wizard expects a specific format. Transform your Keap export.
Required columns for AccessAlly + Ontraport import:
Email– Email address (required)First Name– First nameLast Name– Last nameTags– Comma-separated list of Ontraport tag names (or IDs)f1234– Custom field columns (use Ontraport field IDs)
CSV transformation steps:
- Open your Keap export in Excel or Google Sheets
- For tag columns:
- If Keap export includes category in tag name, remove it OR keep it based on your Option A/B choice
- Map Keap tags to Ontraport tag names using your mapping spreadsheet
- Ensure tags are comma-separated in one column
- For custom fields:
- Remove underscore prefix from Keap field names
- Rename columns to Ontraport field IDs (e.g., “_membership_level” → “f1234”)
- Remove unsubscribed contacts (or handle separately)
- Save as new CSV: “keap-to-ontraport-import.csv”
Phase 2: Migration Execution (3-4 hours)
Step 10: 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 Ontraport fields
- Choose import options:
- Update existing users: Check if members may already exist in WordPress
- Create users in CRM: Check (this creates contacts in Ontraport)
- 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 Ontraport
- Tags applied in Ontraport (using tag IDs or names from CSV)
- Contact ID from Ontraport stored in WordPress user meta
- This Contact ID linking is CRITICAL for access control
Step 11: Verify Contact ID Linking
After import, verify Contact IDs are properly linked:
- Pick 5-10 random members from WordPress → Users
- Check their user meta for “ontraport_contact_id”
- Search Ontraport for those Contact IDs
- Verify correct contact appears
- Test that tagging them in Ontraport grants access in AccessAlly
Step 12: Update ALL AccessAlly Tag References
This is the most time-consuming step. Using your tag mapping document:
- Go to each AccessAlly module with tag-based access
- Update tag names to match new Ontraport tags (exact spelling, case-sensitive)
- Update protected page access rules
- Update order form tag assignments
- Update email wizard tag triggers
- Update automation trigger rules
- Update membership level tag associations
- Update progressive unlocking rules
Step 13: Link Payment Gateway Subscriptions
If you have paid members with active subscriptions:
- 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 14: Rebuild Keap Campaigns in Ontraport
Keap campaigns must be rebuilt as Ontraport campaigns:
| Keap | Ontraport Equivalent |
|---|---|
| Campaign | Campaign or Sequence |
| Tag applied trigger | Rule or Campaign trigger |
| Sequence | Campaign with wait elements |
| Decision diamond | Switch element |
| Goal | Campaign goal (similar concept) |
| Lead scoring | Ontraport scoring rules |
Step 15: Update Forms
Replace Keap forms with Ontraport or AccessAlly forms:
Option 1: Use Ontraport Forms
- Create forms in Ontraport → Landing Pages → Forms
- Embed Ontraport form code on your WordPress pages
- Style forms to match your site
- Set up tag assignments and campaign triggers
Option 2: Use AccessAlly Forms (Recommended)
- Create forms in AccessAlly → Opt-in Forms
- Configure to submit to Ontraport
- Better integration with WordPress/AccessAlly features
- Update all form tag assignments to use new tag names
Phase 3: Testing and Go-Live (4-6 hours)
Step 16: Extensive Staging Testing
Because of the tag mapping complexity, testing is CRITICAL:
- ✅ Test login for members with different membership levels
- ✅ Verify EACH membership level can access correct content
- ✅ Check EVERY module access rule works
- ✅ Test EVERY protected page
- ✅ Verify forms submit and apply correct tags (check in Ontraport)
- ✅ Test purchase flow end-to-end
- ✅ Verify campaign triggers fire correctly in Ontraport
- ✅ Test subscription linking and failed payment handling
- ✅ Test Contact ID linking for 10+ random members
- ✅ Verify custom fields populated correctly
Step 17: Switch Live Site to Ontraport
Only after staging tests pass completely:
- Schedule 4-6 hour downtime window (weekend recommended)
- Put site in maintenance mode
- Create fresh WordPress backup
- Export final Keap data (catch any new contacts since staging)
- Switch AccessAlly to Ontraport (same steps as staging)
- Import any new contacts
- Update ALL tag references (again, on live site)
- Verify custom fields and tags for sample of members
- Test access for multiple membership levels
- Test Contact ID linking
- Take site out of maintenance mode
- Monitor intensely for first 2-4 hours
Step 18: Complete Post-Migration Verification
Work through the complete Post-Migration Verification Checklist.
Pay special attention to:
✅ Contact Data Integrity
- Verify total contact count matches Keap
- Check 10 random contacts in Ontraport for complete data
- Verify Contact IDs properly stored in WordPress
- Check for duplicate contacts
✅ Tags & Custom Fields
- Verify tags migrated correctly (sample 20 contacts)
- Check tag names match exactly (case-sensitive)
- Verify custom fields populated in Ontraport
- Test tag-based access rules for each membership level
✅ 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
- Test progressive unlocking if used
✅ Forms & Campaigns
- Test each opt-in form submission
- Verify form data reaches Ontraport
- Test order form purchases
- Confirm post-purchase campaigns fire in Ontraport
- 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 “ontraport_contact_id”
- Search Ontraport for that Contact ID
- Verify it’s the correct contact
- Test that tagging them in Ontraport grants access in AccessAlly
If Contact IDs are wrong, members will lose access even if they have correct tags.
Step 19: Monitor for 14 Days (Not 7)
Due to the complexity and risk of this migration, monitor for TWO weeks instead of one:
- Days 1-3: Immediate access issues and login problems
- Days 4-7: Tag-related access issues as members try to access content
- Days 8-14: Subscription/payment issues, campaign issues
Keep Keap active for 30 days as a safety net. Don’t cancel immediately.
Step 20: Clean Up
Once migration is stable (14+ days):
- Disconnect Keap from AccessAlly (remove API keys)
- Deactivate Migration Wizard plugin
- Export final Keap data for records
- Downgrade or cancel Keap (keep 30 days as safety net)
- Remove staging site’s 2-site exception (contact AccessAlly support)
- Update member documentation with any changes
Troubleshooting Common Issues
Issue 1: Members Have Tags But Can’t Access Content (MOST COMMON)
Symptoms: Members have correct tags in Ontraport but getting “insufficient permissions” errors
Causes:
- AccessAlly access rules reference old Keap tag names
- Tag names in Ontraport don’t match AccessAlly rules exactly (case-sensitive)
- Category prepending created tag name mismatches
- Contact ID linking issue
Solution:
- Check the member’s tags in Ontraport (note exact spelling)
- Go to the module or page they can’t access
- Check “Who Can Access” settings
- Update tag name to EXACTLY match Ontraport
- Verify Contact ID is properly stored (check WordPress user meta)
- Test access again
Issue 2: Tags Imported with Wrong Names
Symptoms: Tags in Ontraport have unexpected names (category prepended or missing)
Causes:
- Keap category structure affected export format
- CSV not properly transformed before import
- Tag mapping not followed during import
Solution:
- Use Ontraport’s bulk tag management to rename tags
- Update CSV with correct tag names
- Re-import with “Update existing users” checked
- Verify tag names match your mapping spreadsheet
- Update AccessAlly access rules to match final tag names
Issue 3: Custom Fields Data Missing or Wrong
Symptoms: Custom field data didn’t migrate from Keap to Ontraport
Causes:
- Custom fields not created in Ontraport before import
- CSV column names don’t match Ontraport field IDs (f1234)
- Field type mismatch (text in Keap, number in Ontraport)
- Keap underscore prefix not handled correctly
Solution:
- Verify custom fields exist in Ontraport
- Note exact field IDs (e.g., “f1234”)
- Update CSV with correct Ontraport field ID column names
- Remove Keap underscore prefix from data if needed
- Re-import with “Update existing users” checked
- Check a few contacts to verify data populated
Issue 4: Contact IDs Not Linking (CRITICAL)
Symptoms: Members have correct tags but can’t access content; Contact ID missing in WordPress
Causes:
- Contact ID not stored in WordPress user meta during import
- Contact ID stored under wrong meta key
- WordPress user exists but Ontraport contact doesn’t
- Ontraport API connection issue during import
Solution:
- Check WordPress user meta for “ontraport_contact_id” or “contact_id”
- If missing, re-import the user via Migration Wizard with “Update existing users” checked
- Verify the Contact ID in Ontraport matches the stored ID
- Test that tagging in Ontraport grants access in AccessAlly
- If bulk re-import needed, export all WordPress users and re-run Migration Wizard
Issue 5: Campaigns Not Triggering Correctly
Symptoms: Ontraport campaigns not firing when tags are applied or forms are submitted
Causes:
- Campaign triggers reference old Keap tag names
- Tag IDs in campaign triggers don’t match imported tags
- Campaign not activated in Ontraport
- Rule logic not configured correctly
Solution:
- Check campaign trigger settings in Ontraport
- Verify tag names/IDs match imported tags
- Ensure campaign is activated (not draft)
- Test trigger by manually applying tag to test contact
- Check Ontraport campaign logs for errors
Issue 6: Need to Rollback to Keap
If critical issues occur:
- Change AccessAlly CRM connection back to Keap
- Re-enter Keap API credentials
- Verify connection
- Test member access (should restore immediately with original tag names and Contact IDs)
- Contact AccessAlly support for migration help
- More than 50% of members reporting access issues
- Unable to resolve tag mapping issues within downtime window
- Critical Contact ID linking failures
- Critical subscription/payment issues
- Migration tool completely failing
This is why keeping Keap active for 30 days is essential.
Migration Timeline
Total Time Estimate: 8-12 hours (due to tag/field remapping complexity)
| Phase | Tasks | Time |
|---|---|---|
| Pre-Migration | Tag mapping document, AccessAlly tag audit, custom field mapping | 3-5 hours |
| Ontraport Setup | Create tags with IDs, create custom fields with IDs, configure account | 1-2 hours |
| Data Preparation | Export from Keap, transform CSV, map fields/tags | 1-2 hours |
| Staging Import | Import contacts, verify Contact IDs, test sample members | 2-3 hours |
| Tag Updates | Update ALL tag references in AccessAlly modules, pages, forms | 3-5 hours |
| Campaign Rebuild | Rebuild Keap campaigns in Ontraport with updated tag names | 2-4 hours |
| Testing | Test EVERY access rule, Contact ID linking, subscriptions | 3-4 hours |
| Live Site Switch | Switch live site, import final contacts, verify access | 4-6 hours |
Recommended Downtime Window: 4-6 hours on a weekend or low-traffic period for the live site switch
Keap vs. Ontraport Feature Comparison
Both are advanced CRMs with comparable features:
| Feature | Keap | Ontraport |
|---|---|---|
| Automation Builder | Campaign Builder | Campaign Builder (similar) |
| Tag System | Categories + Tags | Flat tags with IDs |
| Custom Fields | Underscore prefix | Field IDs (f1234) |
| CRM Features | Pipelines, deals, tasks | Pipelines, deals, tasks |
| Payments | Native payments | Native payments |
| Lead Scoring | Yes | Yes |
| Appointment Scheduling | Built-in | Via integrations |
| Reporting | Standard | More comprehensive |
Should You Hire Professional Help?
Consider professional migration assistance if:
- You have 50+ tags in Keap (especially with complex category structure)
- You have complex tag-based access rules across many modules
- You have 1,000+ active members
- You can’t afford 4-6 hours of downtime
- You’re not comfortable with extensive manual remapping
- Your business can’t tolerate access issues
- You have complex Keap campaigns that need rebuilding
- You’re migrating CRM data (deals, pipelines) as well as contacts
Professional help can:
- Automate tag remapping via scripts
- Handle custom field transformation (Keap underscore → Ontraport field IDs)
- Reduce downtime to 1-2 hours
- Minimize member-facing issues
- Provide rollback plan
- Handle troubleshooting in real-time
- Rebuild campaigns accurately
Contact AccessAlly support to discuss migration assistance.
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 (includes Keap tag prepending details)
- How to Migrate CRMs
- Keap to ActiveCampaign (similar tag issues)
- ActiveCampaign to Ontraport (similar destination)
- Preserving Subscriptions During Migration
- ✅ Complete tag mapping document created with Ontraport tag IDs
- ✅ Complete custom field mapping document with Ontraport field IDs
- ✅ ALL AccessAlly tag references documented
- ✅ Contacts imported to Ontraport with correct data
- ✅ Contact IDs properly linked (verified for 10+ members)
- ✅ ALL tag references updated in AccessAlly to match Ontraport
- ✅ Custom fields populated correctly in Ontraport
- ✅ EVERY module access rule tested individually
- ✅ EVERY protected page tested
- ✅ Forms working with correct tag names
- ✅ Campaigns rebuilt with updated tag names
- ✅ Subscriptions linked and tested
- ✅ Failed payment handling verified
- ✅ No member access complaints after 14 days