Migrating Away from Salesforce: What to Expect
A complete guide to migrating away from Salesforce: what to export, how to handle complex customizations, common pitfalls, and the best alternatives.
Migrating Away from Salesforce: What to Expect
Salesforce is the most powerful CRM on the market. It's also one of the most expensive, most complex, and most aggressively lock-in-maximizing software products in the enterprise space. Migrations away from Salesforce are notoriously difficult — and that difficulty is partly by design.
This guide doesn't sugarcoat that. A Salesforce migration is a real project that requires real planning. But it's absolutely doable, and teams do it successfully every year. This is what you need to know before you start.
Why Teams Leave Salesforce#
Cost#
Salesforce pricing starts at around $25/user/month for Sales Cloud Essentials and scales to $300+/user/month for Enterprise and Unlimited editions. Professional features (automation, custom reports, API access, developer sandboxes) often require higher tiers.
For a 20-person sales org on Sales Cloud Professional, you're at $3,000+/month before add-ons. Revenue Intelligence, Slack integration, Einstein AI, CPQ, and other add-ons stack up quickly. Total cost of ownership regularly exceeds what teams budgeted.
Complexity#
Salesforce is infinitely customizable — and that customization accumulates. Over years of use, Salesforce instances develop complex validation rules, workflow rules, Process Builder flows, Apex triggers, custom objects, permission sets, and integrations. The result is a system that requires a dedicated Salesforce Admin (or agency) to maintain.
When the admin who built the customizations leaves, the institutional knowledge often goes with them.
Implementation Overhead#
The Salesforce ecosystem — certifications, admins, developers, consultants, implementation partners — exists because Salesforce is genuinely complex to implement and maintain. Small and mid-sized companies that bought Salesforce expecting quick setup often spend 6-12 months and tens of thousands of dollars on implementation before getting value.
The AI Gap#
Salesforce Einstein has been around for years but remains expensive and requires significant setup investment. In 2026, teams compare it to AI-native CRM tools where the AI is a first-class interface — not a feature module you buy separately.
The Challenge of Salesforce Migrations#
Before diving into the how, let's be honest about the difficulty:
Custom Objects Are Everywhere#
Salesforce's flexible object model means most mature Salesforce instances have dozens of custom objects beyond the standard Account, Contact, Opportunity, Lead, Case model. These custom objects have their own fields, relationships, validation rules, and automation. No destination CRM has an equivalent custom object — you're mapping a complex schema to a simpler one.
Relationships Are Bidirectional#
In Salesforce, an Account can have many Contacts. A Contact can have many Opportunities. An Opportunity can have many products (OpportunityLineItems). Activities (Tasks and Events) are polymorphic — they can relate to any object. Preserving all of these relationships during migration requires careful planning.
Automation Is Non-Portable#
Salesforce Process Builder flows, Workflow Rules, and Apex triggers are Salesforce-specific. They cannot be exported as portable configurations that other CRMs can import. Every automation needs to be audited and recreated in the destination.
Apex Code#
If your Salesforce instance has custom Apex classes (compiled code), those require complete rewrites. There's no migration path for code — only logic documentation and reimplementation.
What to Export from Salesforce#
Standard Objects (Always Export)#
- Accounts — All standard and custom fields
- Contacts — All standard and custom fields, account associations
- Opportunities — All standard and custom fields, stage history
- Leads — All standard and custom fields, conversion history
- Activities (Tasks and Events) — All interactions
- Cases — If you use Service Cloud
- Campaigns — If you use Pardot/Marketing Cloud
Custom Objects (Audit First)#
List all custom objects with:
SELECT DeveloperName, Label, Description
FROM CustomObject
ORDER BY DeveloperNameFor each custom object, evaluate:
- Is this still actively used?
- What does it relate to?
- Does the destination CRM have an equivalent?
Many custom objects in mature Salesforce orgs are orphaned — created for a project that's over and no longer used. Don't migrate dead data.
Metadata (Document Everything)#
You can't migrate this, but you must document it:
- All custom field definitions (name, type, picklist values)
- Validation rules
- Workflow rules and Process Builder flows
- Permission sets and profiles
- Custom reports and dashboards (recreate manually)
- Installed packages and integrations
Use Salesforce's Setup Menu > Export > Metadata or the Salesforce CLI to export metadata XML for documentation purposes.
How to Export Salesforce Data#
Method 1: Data Export Service#
Salesforce's built-in data export:
- Go to Setup > Data > Data Export
- Click Export Now (or schedule)
- Select all objects to export
- Choose CSV format
- Salesforce will email a download link when ready
The export includes all standard and custom fields. Note: the export is account-level, not user-level, and requires admin access.
Method 2: Data Loader#
Salesforce Data Loader is a desktop application for bulk extract operations.
- Download from force.com/dataloader
- Log in with admin credentials
- Use the Extract operation for each object
- Write SOQL to filter what you want
SELECT Id, Name, Industry, Type, BillingCity, BillingCountry,
AnnualRevenue, NumberOfEmployees, Website, CreatedDate
FROM Account
WHERE IsDeleted = false
ORDER BY CreatedDateData Loader handles large exports (millions of records) better than the web-based export.
Method 3: Salesforce CLI (SFDX)#
For advanced exports including relationship data:
# Query via SFDX
sf data query --query "SELECT Id, Name, Email, AccountId FROM Contact" --result-format csv > contacts.csvThe CLI is the most powerful option and allows you to run bulk SOQL queries across any object.
Exporting Relationships#
The challenge: standard CSV exports contain IDs, not names. An Opportunity export will have AccountId: 0017d000000XXXXX — the Salesforce internal ID, not the account name.
During import to your destination CRM, you'll need to resolve these IDs against the Account export to re-establish relationships. The most reliable approach: include the AccountId in your Contact/Opportunity exports, and the Id in your Account export. Use these as join keys during import.
The Migration Process#
Phase 1: Audit and Inventory (2-4 weeks)#
The most important phase. Before exporting anything:
- Inventory all objects: Document every standard and custom object in use
- Inventory all active automation: List every workflow rule, Process Builder flow, and Apex trigger
- Identify active integrations: What connects to Salesforce? (Outreach, Gong, Marketo, Slack, etc.)
- Assess data quality: Run deduplication reports. Check for stale accounts, orphaned contacts, dead leads
- Map fields to destination: Create a field-by-field mapping to your target CRM
Without this inventory, you'll discover problems mid-migration and have to backtrack.
Phase 2: Destination CRM Setup (1-2 weeks)#
Before migrating data, fully configure the destination:
- Set up custom objects that correspond to your Salesforce custom objects
- Create custom fields matching your Salesforce schema
- Configure pipeline stages
- Set up user accounts and permissions
- Import a sample of 50-100 records to validate the schema
Phase 3: Data Export and Transformation (2-4 weeks)#
- Export all objects from Salesforce (production instance)
- Clean and deduplicate in spreadsheet tools or Python/pandas
- Transform IDs to human-readable values using lookup tables
- Split large files into 5,000-row batches
- Validate counts and spot-check data quality
Phase 4: Import and Validation (2-4 weeks)#
- Import accounts/companies first
- Import contacts with account associations
- Import opportunities/deals with contact and account associations
- Import activities (if supported)
- Validate record counts against source
- Spot-check 50+ records across each object type
- Have 3-5 salespeople do a walkthrough of their own records
Phase 5: Automation Recreation (1-3 weeks, parallel)#
While data migration runs:
- Recreate critical workflows in the destination CRM
- Test each workflow end-to-end with test records
- Document workflows that couldn't be directly recreated (for manual processes)
Phase 6: Integration Reconnection (1-2 weeks)#
For each tool that connected to Salesforce:
- Does the destination CRM have a native integration?
- Is there a Zapier/Make connector?
- Does the vendor support the new CRM?
This is often the longest-tail part of the migration — integrations surface dependencies you didn't know existed.
Phase 7: Cutover (Hard or Soft)#
Hard cutover: On a set date, stop using Salesforce and fully switch to the new CRM. Cleaner in theory but risky if anything isn't ready.
Soft cutover: Run both systems in parallel for 4-8 weeks, with the old system as source of truth while teams transition. More expensive (two subscriptions) but lower risk.
For most teams, a staged soft cutover is the right approach.
Common Migration Mistakes#
Not exporting Opportunity Stage History: The stage history — when each deal moved from stage to stage — is valuable data for understanding pipeline velocity. It lives in the OpportunityHistory and OpportunityFieldHistory objects and requires a separate export query.
Ignoring Activity data: Your call logs, email records, and meeting notes are the contextual history of every customer relationship. Don't leave them behind.
Moving too fast: Teams that try to migrate in 2 weeks instead of 8 consistently end up with data quality problems. Time pressure is the enemy of a clean migration.
Not training users: New CRM UI means new workflows. Budget 2-4 hours of training per user. Resistance to the new system is often the reason migrations "fail" even when the data migrated cleanly.
Where to Go After Salesforce#
DenchClaw#
DenchClaw is the right choice for teams that want to own their data completely — local-first, open source, MIT licensed. Your CRM data lives in DuckDB on your own machine. The AI agent gives you natural language access to your pipeline. No per-seat pricing, no Salesforce admin required.
Install with npx denchclaw.
HubSpot#
HubSpot is the most common destination for teams leaving Salesforce. It's easier to manage, better UX, and has a large partner ecosystem. The limitation: you're trading one cloud CRM for another.
Pipedrive#
For pure sales pipeline management, Pipedrive is simpler and cheaper than Salesforce. Good UI, solid automations, less complexity. Best for SMB sales teams.
Freshsales#
Freshworks' CRM is a well-regarded Salesforce alternative with AI features (Freddy AI), reasonable pricing, and a solid integration ecosystem.
Frequently Asked Questions#
How long does a Salesforce migration take?#
For a small org (under 20 users, relatively standard Salesforce implementation), 6-12 weeks with proper planning. For complex enterprise implementations with extensive customization and integrations, 6-12 months is realistic.
Can I export Salesforce data myself or do I need a consultant?#
It depends on the complexity of your implementation. The data export itself (using Data Loader or the built-in export) is doable by a technically capable admin without a consultant. The schema mapping, automation documentation, and integration reconnection is where complexity lives — and where external expertise often pays for itself.
What happens to my Salesforce data after I cancel?#
After cancellation, you have access to your data for 30 days. After that, the data is deleted per Salesforce's data retention policies. Export everything before your subscription ends.
Does Salesforce have data portability APIs?#
Yes. The Salesforce API (REST and SOQL) gives you full programmatic access to all your data. The SFDX CLI makes bulk exports relatively easy for anyone comfortable with command-line tools.
Is it possible to partially migrate from Salesforce?#
Yes. Some teams keep Salesforce for specific use cases (e.g., CPQ, Service Cloud) while migrating sales CRM to a lighter tool. Running two CRMs creates data synchronization challenges but can be the right answer for organizations with deeply embedded Salesforce-specific processes in one area.
Ready to try DenchClaw? Install in one command: npx denchclaw. Full setup guide →