CRM migration

Migrate from Keap to Nutshell

Field-level mapping, validation, and rollback between Keap and Nutshell. We move data and schema; workflows are rebuilt natively in Nutshell.

Keap logo

Keap

Source

Nutshell

Destination

Nutshell logo

Compatibility

90%

9 of 10

objects map 1:1 between Keap and Nutshell.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Keap to Nutshell is a structural migration toward a simpler, lower-cost CRM for small to mid-sized sales teams. Keap's tag-driven contact model — where tags serve as both segmentation filters and automation triggers — does not map 1:1 to Nutshell's native label and custom-field approach. We export tags as a comma-delimited custom property or as individual Nutshell labels, preserving the contact grouping data while acknowledging that Keap automation sequences cannot be extracted and must be rebuilt. Keap's REST API enforces a 500 calls-per-minute limit that extends export time for accounts with tens of thousands of contacts; we paginate across multiple windows to stay within this ceiling. We do not migrate automation sequences, landing pages, or web forms as these are not accessible via Keap's API in structured form. We deliver a written inventory of any active sequences for the customer's admin to rebuild in Nutshell's automation builder.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Keap logo

Keap

What's pushing teams away

  • High cost relative to competitors — customers report Keap is significantly more expensive than ActiveCampaign, HubSpot, or HighLevel for comparable feature sets, especially when accounting for integration costs.
  • Steep learning curve and complexity — the breadth of features creates configuration overhead, with users citing difficulty understanding how tags, sequences, and pipelines interact.
  • Cannot text internationally — a specific technical limitation that drives churn for businesses with international client bases or multilingual outreach.
  • Limited flexibility for non-standard workflows — businesses with unique sales processes report Keap's opinionated structure forces workarounds or custom code.
  • Integration costs are prohibitive — the Ignite implementation package costs $1,500 for two integrations, and even the Scale tier limits integrations to five, prompting moves to platforms with broader native integrations.

Choosing

Nutshell logo

Nutshell

What's pulling them in

  • Lowest cost entry point among mid-market CRMs—Foundation plan starts at $13/user/month, making it accessible for teams validating CRM fit before committing.
  • Integrated sales automation and email sequencing on Pro plans without requiring a separate email marketing platform, per verified Capterra reviews.
  • Consistently praised for intuitive interface and fast onboarding, with case studies reporting 100% team adoption rates within initial deployment periods.
  • Strong customer support responsiveness cited across G2 reviews, with dedicated support tiers available on Enterprise plans.
  • Native integrations with WhatsApp, Facebook Messenger, Instagram, and Slack reduce reliance on third-party middleware for common communication channels.

Object mapping

How Keap objects map to Nutshell

Each row shows how a Keap object lands in Nutshell, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

Keap

Contact

maps to

Nutshell

Person or Company-linked Contact

1:1
Fully supported

Keap Contacts map to Nutshell Persons, which are standalone contact records without mandatory company linkage. Where a Keap Contact has an associated Company record, we create the Nutshell Company (Account) first and then link the Person to it via the companyId field during Person import. Standard fields (name, email, phone, address) map directly. Custom field values are resolved using the Keap contact model schema endpoint before writing, ensuring field IDs resolve to correct values at migration time.

Keap

Company

maps to

Nutshell

Company

1:1
Fully supported

Keap Company records map to Nutshell Companies. The Company-to-Person association is preserved as a Person-Company link in Nutshell. Company-level standard fields (name, website, phone, address) map cleanly. Companies without any linked Contacts are imported as standalone Company records for later association.

Keap

Tag

maps to

Nutshell

Tag or customFields string property

lossy
Fully supported

Keap tags serve dual roles: contact classification and automation trigger definition. We export all tags and import them into Nutshell as Tags attached to the Person record. The tag-trigger automation context cannot be carried over (automation sequences do not export), so the tag inventory is preserved as labels for segmentation purposes only. Customers choose during scoping whether tags import as Nutshell native Tags or as a comma-delimited custom property string for reporting compatibility.

Keap

Opportunity (Pipeline Deal)

maps to

Nutshell

Deal

1:1
Fully supported

Keap Opportunities map to Nutshell Deals with stage, value, owner, and expected close date. Keap's user-defined stage names map to Nutshell pipeline stages, creating new stages in Nutshell's pipeline if the source stage names do not already exist in the destination account. We preserve deal value and expected close date as native Deal fields. The pipeline name in Keap becomes the pipeline name in Nutshell.

Keap

User (Team Member)

maps to

Nutshell

User

1:1
Fully supported

Keap user accounts (name, email, role) map to Nutshell Users by email match. Any Keap user without a matching Nutshell User is held in a reconciliation queue for the customer's admin to provision before record import resumes. Owner assignment on Deals, Tasks, and Notes resolves via the User mapping table created during this phase.

Keap

Task

maps to

Nutshell

Task

1:1
Fully supported

Keap Tasks export with subject, due date, assigned user, status, and completion date. They import to Nutshell as Tasks linked to the corresponding Person or Deal via the PersonId and relatedId fields. Keap tasks with no associated contact or deal are imported as standalone Nutshell tasks. Completion status and timestamps are preserved. Task priority maps from Keap priority values to Nutshell's task priority scale.

Keap

Note

maps to

Nutshell

Note

1:1
Fully supported

Keap Notes (free-text content with author and creation timestamp) map to Nutshell Notes attached to Person, Company, or Deal records. Note body content migrates as plain text. Author and creation date are preserved as metadata fields. If the author is not a resolved Nutshell User, the note is attached without an assigned owner.

Keap

Custom Field

maps to

Nutshell

customFields

1:1
Fully supported

Keap custom field values export via the REST API after resolving field IDs from the contact model endpoint. Nutshell stores custom fields within a customFields dictionary on Person, Company, or Deal records using the field name as the key. We create the destination custom field in Nutshell by name before writing values, handling text, number, date, and currency types as supported by Nutshell's custom field schema. Note: Keap custom fields must be created inside Keap before their IDs become available via API — we apply the same discovery-then-export pattern in reverse for the destination.

Keap

Invoice

maps to

Nutshell

Note or Attachment

1:1
Fully supported

Keap Invoice records (line items, totals, status, contact) do not have a native Nutshell equivalent object. We export invoice metadata as structured notes attached to the Person record, preserving invoice number, total amount, status, and date. Line item detail migrates as note body content. The known Keap issue (#3275175) where pipeline activity history does not display invoice events means we query the invoice API endpoint directly rather than relying on deal activity logs to capture this data.

Keap

Product

maps to

Nutshell

Product

1:1
Fully supported

Keap Products (name, SKU, price, description) map to Nutshell Products. ProductCode from Keap maps to Nutshell Product code; price maps to unit_price. We create the Product records before any associated Order or Invoice data to satisfy referential integrity. Product images and advanced attributes not supported by Nutshell's Product object are noted for manual handling.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

Keap logo

Keap gotchas

High

API rate limit of 500 calls per minute

High

Automation sequences are not structurally exportable

Medium

Custom fields require in-app creation before API use

Medium

Pipeline activity history bug with invoices

Medium

V2 REST API parity gaps with XML-RPC

Nutshell logo

Nutshell gotchas

High

Contact tier limits enforced on import

Medium

No bulk API endpoint requires paginated extraction

Medium

Email sequences not exportable via API

Medium

Foundation plan disables key sales features

Pair-specific challenges

  • Keap automation sequences cannot be exported

    Keap's automation sequences — tag-triggered email and task sequences with time delays and conditional branching — store step definitions in a proprietary internal format not accessible via API. We can export the sequence name, step count, and trigger tag as a written reference, but the sequence logic, email body content, delay intervals, and conditional rules cannot be extracted. Any active automation sequences in Keap must be rebuilt in Nutshell's automation builder after migration. We provide a written inventory of all sequences with their trigger conditions and step descriptions to support the rebuild effort.

  • Keap API rate limit extends export time

    Keap's REST API enforces 500 calls per minute per tenant. For accounts with more than a few thousand Contacts, this ceiling requires pacing exports across multiple minute windows, adding hours to the extraction phase. We implement request throttling with exponential backoff to avoid 429 errors. The XML-RPC API (currently in sunset with brownout schedules) is not a reliable alternative for bulk extraction at scale; we rely on REST v2 with cursor-based pagination where available, falling back to XML-RPC for fields not yet parity-mapped in the newer API.

  • Custom field IDs require schema discovery first

    Keap custom fields must be created inside the Keap application before their numeric field IDs become available via the REST API. During export, we retrieve the contact model schema to map field IDs to human-readable field names before extracting values. If the Keap instance has custom fields that were created but not yet discoverable via API at migration time, those field values may not export correctly. We recommend a pre-migration audit of the Keap contact model to confirm all custom fields are API-accessible before the migration window opens.

  • Keap XML-RPC sunset affects data parity

    Keap is actively sunsetting its XML-RPC API in favor of REST v2, with documented parity gaps between the two endpoints. Certain data types — affiliate records, advanced order metadata, and some historical invoice fields — may only be accessible via XML-RPC during this transition period. We probe both endpoints during the discovery phase and use whichever returns the most complete data for each object. Customers should confirm their XML-RPC integrations before migration to ensure that any data available only through XML-RPC is captured before the legacy endpoint is fully retired.

  • Nutshell rev field requires correct sequencing on writes

    Nutshell's JSON-RPC API uses a revision identifier (rev field) as application-level cache control. Each entity retrieval returns the current rev, and every edit call must include the correct rev for the entity being modified. If the entity has changed on the server since the migration client last retrieved it, the API rejects the edit. We handle this by retrieving the current rev immediately before each write operation and implementing conflict resolution for any records modified during the migration window.

Migration approach

Six steps for a successful Keap to Nutshell data migration

  1. Discovery and data audit

    We audit the source Keap account via the REST API and XML-RPC endpoints, capturing record counts for Contacts, Companies, Tags, Opportunities, Invoices, Products, Orders, Tasks, and Notes. We identify custom field definitions via the contact model endpoint, flag any fields not yet accessible via API, and document active automation sequences with their trigger tags and step counts for the rebuild inventory. We also confirm which API endpoint (REST v2 or XML-RPC) provides the most complete data for each object type during this discovery window.

  2. Tag strategy and pipeline stage mapping

    We align Keap's tag taxonomy with Nutshell's tagging model. Customers choose between importing tags as Nutshell native Tags (best for segmentation and filtering) or as a comma-delimited custom property string (best for reporting compatibility). We map Keap pipeline stage names to Nutshell deal pipeline stages, creating any missing stages in Nutshell before migration. Pipeline values, expected close dates, and deal owners are documented in a mapping table that drives the import configuration.

  3. User and owner reconciliation

    We extract every distinct Keap user (owner) referenced across Contacts, Companies, Deals, Tasks, and Notes and match them by email against Nutshell's existing User table. Any Keap user without a matching Nutshell User is placed in a reconciliation queue for the customer to provision before record import continues. Owner resolution is required before Deals, Tasks, and Notes can be imported because Nutshell assigns these records to a User.

  4. Custom field schema creation in Nutshell

    We create all required custom fields in Nutshell before writing any record values, ensuring that the customFields dictionary keys are defined and typed. Text, number, date, and currency field types from Keap map to their Nutshell equivalents. For each custom field, we record the Keap field ID and label so that the transform layer can correctly route values during the data migration phase.

  5. Migration in dependency order

    We run the migration in record-dependency order: Nutshell Users (validated), Companies (from Keap Companies), Persons (from Keap Contacts, with companyId resolved), Deals (with ownerId, personId, and stage resolved), Products, Tasks and Notes (linked to Person or Deal). Keap's API rate limit of 500 calls per minute is managed via request throttling with batch pagination across multiple windows. Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and automation rebuild handoff

    We freeze writes in Keap during the cutover window, run a final delta migration of any records modified during the migration, and validate record counts and field-level accuracy against the source. We deliver the automation sequence inventory document to the customer's admin for rebuilding in Nutshell's automation builder. We support a one-week hypercare window for reconciliation issues. We do not rebuild Keap sequences as Nutshell automations as part of the standard migration scope; that is a separate configuration engagement.

Platform deep dives

Context on both ends of the pair

Keap logo

Keap

Source

Strengths

  • Tag-based contact organization that doubles as an automation trigger system
  • Built-in sales pipeline with user-defined opportunity stages and deal tracking
  • Bundled landing pages and web forms reduce tool sprawl for small teams
  • Marketing automation (email + SMS) integrated directly with CRM records
  • API access to contacts, companies, orders, invoices, and products

Weaknesses

  • Automation sequences are not exportable and must be rebuilt from scratch
  • No native bulk export UI — all exports require API calls or third-party tools
  • Expensive relative to competitors, with integration costs layered on top
  • International SMS is not supported, limiting use for global businesses
  • Known issues with pipeline activity history not reflecting invoice events
Nutshell logo

Nutshell

Destination

Strengths

  • Simple, intuitive interface with minimal learning curve for sales teams new to CRM
  • Per-seat pricing is transparent and predictable, with annual billing reducing monthly cost
  • Full data export tool available for all account data including backups
  • Open JSON-RPC API allows programmatic access to all core objects
  • Native multichannel engagement (email, SMS, WhatsApp) without third-party add-ons for communication

Weaknesses

  • Reporting and analytics are considered weak, requiring manual Excel exports for detailed analysis
  • No bulk API endpoint—migration requires paginated API reads that must be rate-limited carefully
  • JSON-RPC API is less common than REST, requiring custom integration code compared to standard REST CRMs
  • Add-on costs (Forms, Nutshell IQ, Email Marketing) are per-company charges that stack on top of per-seat pricing
  • Feature restrictions on entry-level plans mean teams often need mid-tier to get basic automation

Complexity grading

How hard is this migration?

Standard CRM migration. 3 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Keap and Nutshell.

  • Object compatibility

    B

    3 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Keap: 500 requests per minute per tenant, reset per minute.

  • Data volume sensitivity

    B

    Keap doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Keap to Nutshell migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Keap to Nutshell data migrations

Answers to the questions buyers ask most during Keap to Nutshell migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Keap to Nutshell migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most Keap to Nutshell migrations land between two and four weeks for accounts under 10,000 Contacts and 2,000 Deals with no invoice or product catalog migration in scope. Migrations with large tag sets requiring custom property mapping, invoice records to convert, product catalogs with line items, or accounts using the XML-RPC API for data not yet parity-covered in REST v2 extend to five to eight weeks. Timeline depends on data volume, the number of distinct custom fields, and how quickly the customer's admin resolves the owner reconciliation queue.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Keap.
Land in Nutshell, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day