ARTICLE CONTENT:
Complete Guide: Migrating from Ontraport to Keap (Same AccessAlly Site)
⏱️ Estimated Time: 7-10 hours (plus testing)
🛠️ Technical Level: Intermediate-Advanced
💰 Cost Impact: Keap typically costs more than Ontraport ($299-$599/mo vs $79-$497/mo)
⚠️ Key Challenge: Ontraport field IDs → Keap custom fields, flat tags → tag categories
Why Migrate from Ontraport to Keap?
Common reasons for migrating from Ontraport to Keap:
- Better Email Deliverability: Keap has a strong reputation for inbox placement
- More Robust CRM Features: Keap’s sales pipeline and opportunity tracking are more advanced
- Appointment Scheduling: Native appointment booking integrated with CRM
- Ecosystem & Integrations: Keap has larger marketplace and integration ecosystem
- Industry Reputation: Keap is well-established in coaching and service-based businesses
- Team Collaboration: Better multi-user features for growing teams
What You’ll Need Before Starting
✅ Required Access & Accounts
- WordPress admin access to your AccessAlly site
- Ontraport admin access (for data export)
- Keap account (must be set up and configured)
- AccessAlly license that supports CRM switching
- Access to your payment gateway (Stripe or PayPal)
- Access to domain DNS settings (for email deliverability)
📋 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 Ontraport contact data
- Audit of current member count, tags, and custom fields
- Data mapping spreadsheet (contacts, tags, custom fields, automations)
- Tag category structure planning (Ontraport flat tags → Keap 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-5 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 and email volume)
- Complete basic account setup (company info, timezone, sender details)
- Configure email deliverability (SPF, DKIM, DMARC records)
- Set up dedicated sending domain (e.g., mail.yourdomain.com)
- Test email sending (send yourself a test broadcast)
- Create your first tag category and tag
- Create a test form and automation
Step 2: Export Your Data from Ontraport
- Log into your Ontraport account
- Go to Contacts → Search
- Create a search for “All Contacts”
- Click “Export”
- Select “All Fields” (include standard and custom fields)
- Include tags in export
- Download the CSV file
- Open in Excel or Google Sheets to review structure
What’s included in the Ontraport export:
- Email addresses
- First and last names
- Phone numbers
- Custom fields (identified by field IDs like “f1234”)
- Tags (in a single column, comma-separated)
- Contact scores (if used)
- Subscription status
What’s NOT included:
- Campaign workflows (must be rebuilt in Keap)
- Sequences and automations (rebuild required)
- Email campaign history
- Landing page designs
- Form designs
- Deals and pipelines (if used)
Step 3: Map Ontraport Field IDs to Keap Custom Fields
Ontraport uses field IDs (f1234) for custom fields. You need to map these to Keap custom fields.
Create a field mapping spreadsheet:
| Ontraport Field ID | Field Label | Field Type | Keap Field | Notes |
|---|---|---|---|---|
| Required field | ||||
| firstname | First Name | Text | First Name | Standard field |
| lastname | Last Name | Text | Last Name | Standard field |
| office_phone | Phone | Phone | Phone 1 | Standard field |
| f1234 | Member Level | Dropdown | _MemberLevel | Create custom field in Keap |
| f5678 | Join Date | Date | _JoinDate | Create custom field in Keap |
Step 4: Plan Your Tag Category Structure (CRITICAL)
Ontraport uses flat tags. Keap organizes tags into categories. You must plan how to organize your tags.
Create a tag mapping spreadsheet:
| Ontraport Tag | Keap Category | Keap Tag | Used in AccessAlly? |
|---|---|---|---|
| Gold Member | Membership Level | Gold Member | YES – Module access |
| Silver Member | Membership Level | Silver Member | YES – Module access |
| Lead Magnet Downloaded | Lead Source | Lead Magnet | NO – Marketing only |
| Email Engaged | Engagement | Email Engaged | NO – Internal only |
Recommended Keap tag categories:
- Membership Level – Gold, Silver, Bronze, etc.
- Lead Source – Where leads came from
- Engagement – Behavioral tags (opened email, clicked link, etc.)
- Status – Active, Paused, Cancelled, etc.
- Interest – Topics they’re interested in
Step 5: Create Tag Categories and Tags in Keap
- Log into Keap
- Go to CRM → Tags
- Click “Create Category” for each category you planned
- Within each category, create the individual tags
- Use the exact same tag names as Ontraport (to match AccessAlly access rules)
- Document the category + tag combinations for CSV import later
Step 6: Create Custom Fields in Keap
- Go to CRM → Settings → Custom Fields
- Click “Add Custom Field”
- For each Ontraport custom field (f1234, etc.):
- Create matching field in Keap
- Match field type (text, number, date, dropdown)
- Use a descriptive name (e.g., “_MemberLevel”)
- Note the Keap field name for CSV mapping
Ontraport → Keap field type mapping:
- Text → Text
- Long Text → Text Area
- Numeric → Number
- Drop Down → Dropdown
- Date → Date
- Check Box → 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 Ontraport to Keap
- Enter your Keap API credentials:
- Get API key from Keap: Settings → Application → API → Legacy Keys
- You’ll need both the API key and encrypted 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 Ontraport 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 (tag name only, not category)- Custom field columns using Keap field names (e.g.,
_MemberLevel)
CSV transformation steps:
- Open your Ontraport export in Excel or Google Sheets
- Rename standard field columns:
- Ontraport “email” →
Email - Ontraport “firstname” →
First Name - Ontraport “lastname” →
Last Name
- Ontraport “email” →
- For Ontraport field IDs (f1234), rename to Keap custom field names (e.g., “_MemberLevel”)
- Rename tags column to
Tags - Ensure tags are comma-separated in one column (just tag names, not categories)
- Remove unsubscribed contacts (or handle separately with an “Unsubscribed” tag)
- Save as new CSV: “ontraport-to-keap-import.csv”
Phase 2: Migration Execution (2-3 hours)
Step 9: Download and Activate Migration Wizard Plugin
- On your STAGING site, 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
Full instructions: Using the AccessAlly Migration Wizard Plugin
Step 10: Import Contacts via Migration Wizard
- On STAGING site, go to AccessAlly → Migration Wizard
- Click “Import from CSV”
- Upload your prepared CSV file
- Map CSV columns to Keap fields:
- Map standard fields (Email, First Name, Last Name)
- Map custom fields (ensure Keap field names match exactly)
- Map Tags column
- Choose import options:
- Update existing users: Check if members may already exist in WordPress
- Create contacts in CRM: Check (creates contacts in Keap)
- Add tags: Check (applies tags from CSV)
- Send welcome email: UNCHECK (you’ll email members separately)
- Click “Start Import”
What happens during import:
- WordPress user accounts created (if they don’t exist)
- Contacts created in Keap
- Tags applied in Keap (Migration Wizard should handle category assignment)
- Custom fields populated in Keap
- Contact ID from Keap stored in WordPress user meta (CRITICAL for access control)
Step 11: Verify Tag Categories in Keap
After import, verify tags are in the correct categories:
- Log into Keap
- Go to CRM → Tags
- Check a few imported contacts
- Verify their tags are in the correct categories
- If tags are uncategorized, manually move them to correct categories
Step 12: Update AccessAlly Tags and Access Rules
AccessAlly stores tag names from your old CRM. After switching to Keap, you need to 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 same if you kept tag names consistent)
- Update any tag-based access rules if needed
- 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 13: Link Payment Gateway Subscriptions
If you have paid members with active subscriptions, 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: How to Migrate Subscription Payments
Step 14: Rebuild Your Automations in Keap
Ontraport campaigns cannot be automatically migrated. You must rebuild them in Keap.
Common Ontraport 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
- Appointment reminders: Use Keap’s native appointment features
Ontraport → Keap automation mapping:
| Ontraport | Keap Equivalent |
|---|---|
| Campaign | Campaign |
| Sequence | Sequence (within campaign) |
| Rule | Campaign goal or decision diamond |
| Tag trigger | Campaign trigger (tag applied) |
| Wait step | Delay timer in sequence |
| Switch element | Decision diamond |
Step 15: Update Forms and Opt-ins
Ontraport 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 → Forms
- Embed Keap form code on your WordPress pages
- Style forms to match your site (Keap’s form styling is limited)
- Set up tag assignments and campaign 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
- Set up tag assignments (including category placement if needed)
Phase 3: Go-Live and Verification (2-3 hours)
Step 16: 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 (verify category doesn’t affect access)
- ✅ Forms submit to Keap
- ✅ Purchase flow works end-to-end
- ✅ Subscription linking works
- ✅ Failed payment handling tested
- ✅ Automations trigger correctly (check tag category triggers)
- ✅ Email sending works
- ✅ Custom fields populated correctly
Step 17: Switch Live Site to Keap
When staging tests pass, switch your live site:
- Schedule downtime (3-4 hour window recommended)
- Put site in maintenance mode
- Create fresh WordPress backup
- Export final Ontraport 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 (different membership levels)
- Take site out of maintenance mode
- Monitor closely for 1-2 hours
Step 18: Complete Post-Migration Checks
Work through the complete Post-Migration Verification Checklist. Key items for Ontraport → Keap:
✅ Contact Data Integrity
- Verify total contact count matches Ontraport
- Check 10 random contacts in Keap for complete data
- Verify Contact IDs properly stored in WordPress
- Check for duplicate contacts
- Verify custom fields populated correctly (check Ontraport f-number fields)
✅ Tags & Categories
- Verify tags migrated correctly (sample 10 contacts)
- Check tags are in correct Keap categories
- Test tag-based access rules
- Verify tag assignment via forms
✅ 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
✅ Forms & Automations
- Test each opt-in form submission
- Verify form data reaches Keap with correct tag categories
- Test order form purchases
- Confirm post-purchase campaigns 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” or “infusionsoft_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 19: Monitor for 7 Days
Don’t cancel Ontraport 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 campaign 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
- Campaign trigger verification (especially tag category triggers)
Step 20: Clean Up
Once migration is stable (7+ days):
- Disconnect Ontraport from AccessAlly (remove API keys)
- Deactivate Migration Wizard plugin
- Export final Ontraport data for records
- Downgrade or cancel Ontraport (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 “infusionsoft_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 in Wrong Categories
Symptoms: Tags imported but in “Uncategorized” or wrong category
Causes:
- Tag categories not created before import
- Migration Wizard couldn’t determine correct category
- Category name mismatch
Solution:
- Go to Keap → CRM → Tags
- Find uncategorized tags
- Drag and drop into correct categories
- Update any campaign triggers that reference these tags
Issue 3: Custom Fields Data Missing
Symptoms: Custom field data didn’t migrate from Ontraport to Keap
Causes:
- Custom fields not created in Keap before import
- CSV column names don’t match Keap field names
- Field type mismatch (text in Ontraport, dropdown in Keap)
- Ontraport field ID (f1234) not mapped correctly
Solution:
- Verify custom fields exist in Keap → CRM → Settings → Custom Fields
- Note exact Keap field names (usually start with underscore, e.g., “_MemberLevel”)
- Update CSV with correct Keap field names as column headers
- Re-import with “Update existing users” checked
- Check a few contacts to verify data populated
Issue 4: Campaigns Not Triggering
Symptoms: Keap campaigns not firing when tags are applied
Causes:
- Campaign trigger set to wrong tag category
- Tag applied but in different category than trigger expects
- Campaign not published/active
- Contact already went through campaign (check goals)
Solution:
- Check campaign trigger settings
- Verify tag AND category match
- Ensure campaign is published
- Test with fresh contact (not one already in system)
Issue 5: Ontraport Field IDs Not Importing
Symptoms: Data in Ontraport custom fields (f1234) is blank after import
Causes:
- CSV still has Ontraport field IDs as column headers
- Should have been renamed to Keap custom field names
Solution:
- Open your CSV
- Find columns with Ontraport field IDs (f1234, f5678, etc.)
- Rename to Keap custom field names (e.g., “_MemberLevel”)
- Re-import with “Update existing users” checked
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
- Membership level settings cleared
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 Ontraport temporarily
If critical issues occur and you need to revert to Ontraport:
- Change AccessAlly CRM connection back to Ontraport
- Re-enter Ontraport API credentials
- Verify connection works
- Test member access (should restore immediately)
- Contact AccessAlly support for migration assistance
Migration Timeline
Total Time Estimate: 7-10 hours (plus 2-3 hours testing)
| Phase | Tasks | Time |
|---|---|---|
| Pre-Migration Setup | Keap setup, data export, field/tag mapping, category planning | 3-5 hours |
| Tag & Field Creation | Create tag categories, tags, and custom fields in Keap | 1-2 hours |
| Migration Execution | Staging setup, contact import, subscription linking | 2-3 hours |
| Automation Rebuild | Rebuild Ontraport campaigns in Keap | 2-4 hours |
| Form Migration | Replace Ontraport forms with Keap/AccessAlly forms | 1 hour |
| Testing & Verification | Comprehensive testing on staging | 2-3 hours |
| Live Site Switch | Switch live site, final import, verification | 2-3 hours |
Recommended Downtime Window: 3-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 migrated and organized into correct Keap categories
- ✅ Custom fields populated (Ontraport f-numbers → Keap custom fields)
- ✅ 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 with correct tag categories
- ✅ Core campaigns rebuilt and tested
- ✅ No critical support tickets after 7 days