Largest deal-size migration · 23 shipped

Salesforce to Attio migration, scoped properly.

Standard + custom objects, validation rules, formula fields, Apex audited and ported. 2-3 day cutover, no production downtime. Fixed price from $6,500. We've shipped 23 of these.

The trigger

Why teams move off Salesforce

Salesforce is still the right answer for $1B+ ARR with distributed field sales, complex compensation hierarchies, and full-stack CRM + CPQ + billing integration. For everyone else below that threshold, the financial and operational math has shifted.

Per-seat cost compounds quickly. Sales Cloud Enterprise runs $165/user/month. At 30 seats, that's $59,400 annually for the CRM alone. Marketing Cloud, Pardot, and CPQ are separate line items. A 50-person GTM function can exceed $200K/year in licensing before a single customization.

Your admin becomes a prisoner. Salesforce demands one ops person for every 50-100 users at $90K-$160K/year. Instead of designing GTM workflows, they're shepherding change requests through governance, sandboxes, and UAT cycles. That's not strategic work.

Change velocity collapses. Adding a custom field, adjusting a validation rule, or modifying a process builder takes a sprint minimum. By the time it deploys, your GTM has evolved and you're building something obsolete.

Einstein and Agentforce aren't free. Native AI features add $50/user/month on top of Enterprise licensing. Teams already running Claude, Grok, or Cursor internally don't want to license duplicative AI through Salesforce.

We've shipped 23 migrations off Salesforce — mostly mid-market SaaS earning $50M-$500M ARR. If you run distributed field sales, regulated compliance workflows, or heavyweight CPQ — Salesforce remains the right call. For everyone else, the equation favors platforms built for rapid iteration. Or compare against HubSpot.

Scope

What gets migrated, including the complex bits

Most of your data is portable — but the fit is not one-to-one. Standard objects (Account, Contact, Lead, Opportunity, Case, Activity) map directly to Attio Companies, People, Deals, plus activity timeline. The bulk of your data — field values, dates, relationships — travels intact.

Custom objects migrate structurally, but rarely unchanged. Salesforce custom objects often exist because the platform had limitations Attio doesn't share. A legacy Project_Request object might collapse into a workspace attribute or new table. We audit each one in step 1.

Custom fields preserve type fidelity: text, picklists, multi-select, numbers, dates. Lookup and Master-Detail relationships become Attio associations. Junction objects collapse into Attio's native many-to-many syntax. Activity history — Tasks, Events, Email Logs, Calls — migrates to the activity timeline with author, timestamp, related record intact.

Owner mapping uses email-to-email matching; Salesforce User IDs aren't portable. Validation rules don't migrate as-is — we rewrite the critical 5-10 in Attio's input rules during cutover. Formula fields migrate as Attio formula attributes when simple. Complex multi-object SOQL formulas flag during audit and need rewriting.

The full field-by-field map for a Sales Cloud Enterprise workspace:

SalesforceAttioNotes
Account → NameCompanies → NameDirect
Account → WebsiteCompanies → DomainUsed as primary dedup key
Account → IndustryCompanies → Industry (dropdown)Picklist values mapped 1:1
Account → Annual RevenueCompanies → ARRCurrency normalised
Account → OwnerCompanies → OwnerMatched by email
Account → Custom fieldsCompanies → Custom attributesType fidelity preserved
Account → Parent AccountCompanies → parent associationHierarchy preserved
Contact → NamePeople → NameDirect
Contact → EmailPeople → EmailPrimary dedup key
Contact → Account IDPeople ↔ Companies associationPreserved
Contact → TitlePeople → TitleDirect
Contact → Custom fieldsPeople → Custom attributesType fidelity preserved
Lead → name/email/companyPeople + Companies (split)Lead converts to People + Company
Lead → Lead SourcePeople → Source attributePicklist preserved
Opportunity → NameDeals → NameDirect
Opportunity → AmountDeals → AmountCurrency normalised
Opportunity → StageDeals → StagePipeline stages mapped per scope doc
Opportunity → Close DateDeals → Close dateDirect
Opportunity → Account / ContactsDeals ↔ Companies + PeopleAll associations preserved
Opportunity → Custom fieldsDeals → Custom attributesType fidelity preserved
Custom objects (any)Attio custom objectsAudited; some collapse to attributes
TasksTimeline → Task activitiesOwner + due date preserved
Events / MeetingsTimeline → Meeting activitiesAttendees preserved
Email logsTimeline → Email activitiesDirection, thread ID preserved
CasesAttio custom Cases objectConfigured per workspace
Files / AttachmentsAttio file attachmentsCopied to Attio storage
Validation rulesAttio input rulesRewritten for critical 5-10
Formula fields (simple)Attio formula attributesDirect rewrite
Formula fields (complex SOQL)Flagged at auditManual rewrite required
Honest gaps

What doesn't migrate (and what it costs to rebuild)

Salesforce is the densest CRM origin we migrate from. Some things don't have an Attio equivalent. Here's what you're rebuilding (and how long it takes).

Workflow Rules + Process Builder + Flows

No automated import exists. Attio has Workflows but the syntax differs. During cutover, we rebuild your top 10-15 active flows (1-2 days). The rest typically gets pruned — most orgs carry legacy automation they've forgotten about.

Approval Processes

Salesforce's multi-step approval chains don't replicate directly. We rebuild as Attio Workflows with Slack notifications. Half a day, tops. Most teams find Slack-based approvals faster than email loops.

CPQ / Quote-to-Cash

Attio is not a CPQ engine. If you depend on Salesforce CPQ, you keep it alongside Attio or migrate to a dedicated tool (Subscript, Maxio, Stripe Billing). The data syncs; the logic doesn't.

Reports & Dashboards

Attio reports are functional, but your saved report library doesn't transfer. Budget half a day to rebuild your top 5 dashboards. Most teams find Attio's report builder faster after the rebuild.

Apex Triggers + Custom Code

Anything written in Apex doesn't port. We audit these in step 1 — usually 80% are workarounds for limitations Attio doesn't have. The remaining 20% (real custom logic) get rewritten as Attio Workflows or external scripts. Total rebuild time across all gaps: 2-3 days, included in the migration window.

How we work

Our 4-step Salesforce migration process

We've shipped 23 of these. Audit, design, move, verify — Salesforce complexity means each step carries more substance.

Step 1 — Audit (week before, 4-6 hours over 2 sessions)

Two screen-share sessions in your Salesforce org. Session 1: walk through data model — standard + custom objects, fields, relationships, page layouts. Session 2: workflows, approval processes, validation rules, Apex if any. Output: a multi-page scope doc + a decisions doc.

Step 2 — Schema design + sandbox build (3-5 days, async)

We build your Attio data model in a sandbox: objects, attributes, views, permissions, rebuilt workflows. You get a Loom walkthrough. You sign off before any production data moves.

Step 3 — Cutover (1-2 days)

Day 1 morning: dry-run against a sandbox copy. Our own AI-powered system maps every record, flags conflicts, prints diffs by object. You approve. We apply. Migration window depends on volume — usually 30-60 minutes for under 200K records. Day 2 covers workflow + validation rule rebuild.

Step 4 — Verify + hand-off

Record counts, association integrity, owner mapping, custom-field type fidelity, workflow trigger tests. We screen-share through 20 representative records. You sign off. Runbook + Loom walkthroughs delivered.

wescaleup — migrate · salesforce → attio
# 1 — connect both workspaces
$ wescaleup connect salesforce --org=acme --sandbox
✓ authenticated · 14 custom objects · 47 workflows · 218,402 records

$ wescaleup connect attio --workspace=acme
✓ workspace ready · sandbox synced

# 2 — dry run (no production writes)
$ wescaleup migrate --dry-run
→ accounts 18,402 → 18,402 (0 conflicts)
→ contacts 92,114 → 92,114 (47 deduped)
→ opportunities 12,408 → 12,408 (0 conflicts)
→ custom_objects(14) → mapped per scope doc
→ activities 1,890,402 → 1,890,402 (0 conflicts)
✓ diff: clean · est. write time 47m 12s

# 3 — apply
$ wescaleup migrate --apply
✓ done · 2,013,326 records · 46m 38s
Cutover days

Timeline — 2-3 days, broken down

Most migrations land within 48 hours for a typical Sales Cloud Enterprise. Add a third day when you have heavy CPQ-adjacent logic, 50+ workflow rules, or 10+ custom objects. The 6-12 week narratives elsewhere describe manual migrations done by Salesforce admins between regular duties — different exercise.

Our speed comes from three structural advantages: pre-cutover audit surfaces surprises before they become blockers, our AI-powered mapper translates objects + relationships in minutes, sandbox-first cutover means zero production downtime.

The longest single migration we've shipped was 3 days for a 47-custom-object org with 180 active workflows and 2.4M activities. Average is closer to 2.

Day / HourPhaseWhat happensWho owns it
Day 1 · 09:00Kickoff callConfirm scope, walk through dry-run plan, set rollback criteriaWeScaleUp + you
Day 1 · 09:30Dry-runRun mapping against sandbox copy. System prints full diff by object, flags conflictsWeScaleUp
Day 1 · 11:00Diff reviewWe screen-share the diff. You approve, flag changes, or pauseYou
Day 1 · 12:00Apply migrationLive write to Attio. 30-60 min for typical workspaceWeScaleUp
Day 1 · 13:30Quick checksRecord counts, association integrity, owner mapping spot-checksWeScaleUp
Day 1 · 16:00End-of-day statusWalk through what's verified, what's flagged for day 2WeScaleUp + you
Day 2 · 09:00Workflow rebuildTop 10-15 Salesforce flows reimplemented as Attio WorkflowsWeScaleUp
Day 2 · 12:00Validation rulesCritical 5-10 rules rewritten as Attio input rulesWeScaleUp
Day 2 · 14:00Approval processesMulti-step approvals rebuilt as Attio Workflows + SlackWeScaleUp
Day 2 · 16:00Verification walkthroughWe walk through 20 representative records — you confirmWeScaleUp + you
Day 2 · 17:00Sign-off + handoffRunbook delivered. Loom recordings sent. 30-day support window opensWeScaleUp
Pricing

Pricing — fixed, transparent

Salesforce migrations are quoted by scope. After your discovery audit, written quote within 24 hours. No surprise extensions, no change orders. What you see is what you pay.

Hourly billing creates perverse incentives. Fixed pricing flips that. Every package includes the full cycle: audit, dry-run, cutover, verification, workflow rebuild, runbook, and 30 days of post-launch support.

One exception: if your instance runs CPQ at scale, we'll spot that on the discovery call and recommend keeping it in Salesforce or migrating to a dedicated CPQ platform. We don't migrate CPQ, and we'll tell you why before you're charged.

Standard
$6,500

~ 2 days cutover


  • Sales Cloud Enterprise workspace
  • Up to 200K records
  • Up to 5 custom objects
  • Up to 30 workflow rebuilds
  • Critical 5-10 validation rules
  • Top 5 dashboards rebuilt
  • Runbook + Loom walkthroughs · 30-day support
Get a fixed quote
Migration + Wire
$9,500

~ 2-3 days end-to-end


  • Everything in Standard
  • Clay enrichment waterfall
  • Lemlist or Apollo wired in
  • Lead scoring rebuilt as formula attributes
  • Slack alerting for flagged accounts
  • Runbook covers full stack
Get a fixed quote →
Complex
From $14,500

~ 3 days cutover


  • 200K+ records / 10+ custom objects
  • 50+ workflows to rebuild
  • Heavy Apex audit + selective rewrite
  • Multi-org / regulated environments
  • Quoted per workspace after audit
Get a custom quote
Other migration paths

Not on Salesforce?

FAQ

Salesforce migration questions we get on every call.

Don't see yours? Get a fixed quote and ask in the notes.

What's the all-in cost for a Salesforce-to-Attio migration?+
Fixed-price tiers: $6,500 for under 50 seats (Standard), $9,500 for Migration + Wire including Clay/Lemlist/Apollo, $14,500+ for complex enterprise setups (50+ workflows, deep CPQ-adjacent logic, multi-org). Every package includes audit, dry-run, cutover, verification, workflow rebuild, runbook, and 30-day support. No surprise invoices.
Can you really migrate Salesforce in 2-3 days?+
Yes. We've shipped 23 of these. Three structural advantages: pre-cutover audit catches surprises before they become blockers, our AI-powered mapping system handles object + relationship translation in minutes, sandbox-first cutover means zero production downtime. Day 1 morning is dry-run, midday is apply, afternoon is verification. Day 2 covers workflow + validation rule rebuild.
What about Salesforce CPQ or Quote-to-Cash?+
We don't migrate CPQ. It's a different beast. Most clients keep their existing CPQ tool or move to a dedicated solution (Subscript, Maxio, Stripe Billing). Attio syncs with the CPQ via API; both systems keep their job. We flag this on the discovery call so you know exactly what stays and what doesn't.
We have 1,000+ Apex triggers and custom code. What happens?+
Step 1 audit identifies which custom code actually drives revenue — usually 20%. We rebuild that logic in Attio Workflows: no-code, auditable, not a black box. The remaining 80% (workarounds for Salesforce limitations Attio doesn't have) gets pruned. You end up with a cleaner CRM and fewer dependencies.
Our Salesforce admin says migration takes 6 months. Why 2-3 days?+
Six-month timelines describe manual field mapping squeezed in around an admin's day job, with production cutover risk hanging over every change. Our process: scripted audit catches surprises upfront, our AI-powered system handles bulk operations, sandbox validation kills unknowns before go-live. No creeping scope. No production downtime.
What about validation rules and approval processes?+
Rebuilt during cutover. Validation rules don't migrate one-to-one because Attio handles validation differently. We rewrite the critical 5-10 rules during cutover (half a day). Approval processes rebuild as Attio Workflows with Slack notifications — most teams find this faster than Salesforce's email approval loops.
Will our Salesforce admin be out of work?+
No, the role evolves. Post-migration, most admins shift from firefighting Salesforce to strategic work — process design, analytics, integrations, GTM enablement. Attio doesn't demand full-time admin maintenance the way Salesforce does. Same person, higher-value role.

Get off the $165 seat tax. Pick a date.

Twenty minutes. We'll tell you whether your Salesforce is a 2-day job, a 3-day job, or something we shouldn't take on. Fixed quote in writing within 24 hours.