CRM migration

Migrate from Click to Twenty CRM

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

Click logo

Click

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

60%

6 of 10

objects map 1:1 between Click and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from ClickDimensions to Twenty CRM requires addressing the fundamental architectural gap between these two platforms. ClickDimensions is not a standalone CRM — it is a marketing automation layer that sits above Microsoft Dynamics 365 and does not store contacts independently. We must extract base CRM records (Contacts, Accounts, Leads, Opportunities) from the underlying Dynamics instance rather than from ClickDimensions exports alone. Once we have the Dynamics records, we map them into Twenty's People (Contacts) and Companies (Accounts) objects, then overlay ClickDimensions marketing activity entities — Email Sends, Event Registrations, Web Tracking Events, and Survey Responses — as Tasks, Notes, or custom object records. Twenty's CSV-based import requires all custom fields to be created in Settings before records are imported, and users must be invited before owner lookups can resolve. We do not migrate ClickDimensions workflows, marketing automation rules, or survey logic as code; we deliver a written inventory of these for the customer's admin to rebuild in Twenty's workflow builder. The migration path is scoped to the CRM data layer only — the marketing automation rebuild sits outside standard scope.

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

Click logo

Click

What's pushing teams away

  • ClickDimensions is limited to the Microsoft Dynamics 365 ecosystem, making it difficult to switch to non-Microsoft CRMs without losing marketing activity history.
  • The platform's interface and feature set lag behind standalone marketing automation tools, prompting teams to move to HubSpot or Marketo.
  • Support responsiveness and product update cadence have been cited as pain points by mid-market customers.
  • Custom field usage on the free plan is capped at 60 uses, which frustrates teams that need broader automation without upgrading.

Choosing

Twenty CRM logo

Twenty CRM

What's pulling them in

  • Top open-source CRM on GitHub with 40.6K stars, giving teams full source code access and infrastructure ownership without per-feature licensing surprises.
  • Free self-hosting under AGPL-3.0 means unlimited users and custom objects for the cost of cloud infrastructure alone, typically $20–100/month.
  • Pricing page explicitly mocks competitors for charging add-on fees for API access, webhooks, and workflows — transparency that resonates with RevOps teams burned by Salesforce.
  • Unlimited custom objects and fields with no price impact, letting teams shape the data model to their business rather than forcing business into rigid schemas.
  • Modern TypeScript/React/PostgreSQL stack means developer-led teams can extend, self-host, or integrate without fighting legacy architecture.

Object mapping

How Click objects map to Twenty CRM

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

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

Click

Contact (from Dynamics 365)

maps to

Twenty CRM

People

1:1
Fully supported

ClickDimensions does not store contacts independently — all Contact records live in the underlying Microsoft Dynamics 365 CRM instance. We extract Contacts from Dynamics via its API or export tools, not from ClickDimensions. Each Dynamics Contact maps to Twenty People. Email address is the dedupe key. Mobile phone, job title, and address fields map directly to equivalent Twenty People fields. We preserve the Dynamics Contact ID as a custom field dynamics_contact_id__c for audit trail.

Click

Account (from Dynamics 365)

maps to

Twenty CRM

Company

1:1
Fully supported

Dynamics Accounts map to Twenty Companies. Website, industry, phone, and address fields migrate directly. We resolve the Dynamics Account-Contact relationship and link each People record to its parent Company via Twenty's relation fields. Company is imported before People so that the Company lookup is satisfied at the moment of People insert.

Click

Lead (from Dynamics 365)

maps to

Twenty CRM

People (with custom status field)

1:many
Fully supported

Dynamics Leads do not have a direct Twenty equivalent because Twenty uses a single People object without a separate Lead stage. We migrate Dynamics Leads to Twenty People and preserve the original lead status in a custom field original_lead_status__c so that the customer's admin can segment prospects in Twenty's views. If the customer requires a distinct lead pipeline, we create a custom object called Lead with its own pipeline stages and link it to People.

Click

Opportunity (from Dynamics 365)

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Dynamics Opportunities map directly to Twenty Opportunities. Deal amount, close date, pipeline stage, and probability migrate. We resolve the parent Company (Account) and People (Contact) lookups during migration. Dynamics Opportunity products map to OpportunityLineItems if the customer uses product-based selling.

Click

Email Send (ClickDimensions)

maps to

Twenty CRM

Task (custom type)

1:1
Fully supported

ClickDimensions Email Send records — including send date, campaign name, subject, and recipient count — migrate to Twenty Tasks with a custom field email_send_id__c and a picklist field email_send_type__c set to Campaign Email. The Task is linked to the People record that represents the recipient Contact. Individual open and click engagement events are mapped as separate Task records with engagement_type__c set to Email Open or Email Click.

Click

Event Registration (ClickDimensions)

maps to

Twenty CRM

Task (custom type) + custom Event object

1:many
Fully supported

ClickDimensions Event Registrations split into two parts: the registration record links to the People registrant as a Task with event_registration__c set to true, and the event itself is created as a custom Event object in Twenty (name, date, location, capacity) before registration records are imported. Custom registration fields map to custom fields on the Task record.

Click

Web Tracking Event (ClickDimensions)

maps to

Twenty CRM

Note

lossy
Fully supported

ClickDimensions Web Tracking Events for known contacts (identified by email) migrate to Twenty Notes attached to the corresponding People record. The Note body captures the page visited, timestamp, and referring URL. Anonymous visitor tracking events are optionally migrated as aggregate campaign or source data if the customer has an active use case; otherwise they are excluded to reduce noise in the People timeline.

Click

Survey Response (ClickDimensions)

maps to

Twenty CRM

custom Survey Response object

1:1
Fully supported

ClickDimensions Survey Responses require a custom Survey Response object pre-created in Twenty before import. Each survey question maps to a custom field on the object. Responses are linked to People (the respondent). Survey metadata (survey name, completion date, score) migrates as standard fields on the custom object. Survey logic and conditional branching do not migrate and are documented for the customer's admin to rebuild in Twenty's workflow builder.

Click

Custom Field (ClickDimensions on Dynamics entities)

maps to

Twenty CRM

Custom Field (Twenty)

lossy
Fully supported

ClickDimensions custom field data attached to Dynamics Contacts, Accounts, Leads, and Opportunities migrates to the corresponding Twenty custom fields. Custom fields must be created in Twenty Settings before CSV import — the import creates records, not fields. We generate the full list of required custom fields from the Dynamics schema during discovery, the customer or our team creates them in Twenty, and we validate their existence before running the import. ClickDimensions Free Forever plan users with API write limits should upgrade to a paid tier before migration begins.

Click

Activity (from Dynamics 365)

maps to

Twenty CRM

Task

1:1
Fully supported

Dynamics activity records — phone calls, tasks, appointments, and emails logged in Dynamics — migrate to Twenty Tasks. Activity type is preserved in a custom field activity_type__c. Activity date migrates as the Task due date. Call duration, disposition, and body text map to custom fields on the Task. These records provide the historical activity timeline in Twenty after cutover.

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.

Click logo

Click gotchas

Medium

Custom Field write limit on Free Forever plans

High

ClickDimensions does not store contacts independently

Medium

Export and Import tools move Click records between Dynamics environments

Twenty CRM logo

Twenty CRM gotchas

High

Import order is enforced and critical

High

Export limited to 20,000 records and visible columns only

Medium

Soft-deleted records count toward uniqueness and trigger restores

Medium

API rate limits cap at 200 req/min on Organization tier

Low

No native email sequences — follow-up cadences require external tools

Pair-specific challenges

  • ClickDimensions does not store contacts — extract from Dynamics first

    ClickDimensions is an extension layer for Microsoft Dynamics 365 CRM. It does not maintain a standalone contact database. Any migration targeting only ClickDimensions exports will result in empty People records in Twenty. We always extract the base CRM records — Contacts, Accounts, Leads, Opportunities, and Activities — from the underlying Dynamics 365 instance via its API or export tools. During discovery, we confirm the source Dynamics environment, authenticate against it, and pull the CRM records before addressing any ClickDimensions marketing entities. This step is non-negotiable and must be scoped explicitly.

  • Twenty requires custom fields created before CSV import

    Twenty's CSV import creates records but not fields. Any custom field referenced in the import file must already exist in Settings before the import runs. For ClickDimensions migrations with custom field data (marketing annotations on contacts, survey response fields, custom registration fields), we generate the complete list of required custom fields during discovery, the customer or our team creates them in Twenty's Settings → Data Model, and we validate their existence before running each import phase. Skipping this validation results in import errors or silent field drops on the CSV mapping screen.

  • Users must be invited before owner lookups resolve

    Twenty resolves owner and assignee lookups at import time against the User table. If the import file contains an email address for a HubSpot Owner or Dynamics User that does not yet have a matching invited Twenty User, the lookup fails and the record either errors or defaults to unassigned. We invite all team members to Twenty before migration begins, wait for acceptances, verify the Members list, and hold a reconciliation queue for any remaining unmatched owners. This mirrors Twenty's own migration documentation guidance on inviting users before importing owner-linked records.

  • ClickDimensions Free Forever plan API write limit blocks bulk extraction

    ClickDimensions Free Forever plans limit Custom Field writes to 60 uses per workspace. If the source ClickDimensions instance is on this plan and the migration requires API access to extract marketing activity records with custom field data, the 60-use cap will be reached mid-extraction. We check the customer's ClickDimensions plan tier during scoping. For Free Forever plan customers, we either use the ClickDimensions built-in Export tool (for Dynamics-to-Twenty CSV output) or recommend a plan upgrade before API-based migration begins. Paid plan customers proceed with standard API extraction with rate-limit handling and exponential backoff.

  • Workflows, automations, and survey logic do not migrate to Twenty

    ClickDimensions marketing workflows, automated rules, event-triggered emails, and survey conditional logic are platform-specific and do not have equivalents in Twenty CRM. Twenty's workflow capabilities are still maturing and differ architecturally from ClickDimensions automation rules. We do not migrate these as code. We deliver a written inventory of every active ClickDimensions workflow, automation trigger, and survey logic rule with a description of what it does and a recommendation for how to reproduce it in Twenty. The customer's admin rebuilds these in Twenty post-migration.

Migration approach

Six steps for a successful Click to Twenty CRM data migration

  1. Discovery and plan tier verification

    We audit the source environment in two layers: the underlying Microsoft Dynamics 365 instance (object counts, custom fields, pipeline stages, activity volume) and the ClickDimensions instance (Email Sends, Event Registrations, Web Tracking Events, Survey Responses, custom fields, plan tier). We confirm the ClickDimensions plan tier and identify any API write limits that affect extraction strategy. The discovery output is a written scope document listing all entities to migrate, their estimated record counts, and the recommended extraction method (Dynamics API, ClickDimensions built-in export, or ClickDimensions API with rate-limit handling) for each entity.

  2. Dynamics CRM extraction and data quality review

    We extract base CRM records — Contacts, Accounts, Leads, Opportunities, Products, and Activities — from the underlying Microsoft Dynamics 365 instance. We run a data quality review: deduplication on email address and company name, removal of records with no activity in over two years, and consolidation of duplicate accounts. This step is critical because ClickDimensions has no standalone contact store — the Dynamics extraction IS the foundation of the migration. We produce a data quality report and share it with the customer's admin for sign-off before proceeding.

  3. ClickDimensions marketing entity extraction

    We extract ClickDimensions marketing entities — Email Sends, Event Registrations, Web Tracking Events for known contacts, and Survey Responses — using the ClickDimensions API (paid plans) or the built-in Export feature (Free Forever plans). For each entity type, we map the ClickDimensions fields to their Twenty equivalents (Task, Note, or custom object) and produce a field-level mapping document. We flag any ClickDimensions custom fields that require equivalent custom fields to be pre-created in Twenty before import.

  4. Twenty workspace preparation and custom field creation

    We create all required custom fields in Twenty Settings before any data import begins. This includes custom fields for ClickDimensions marketing data (email_send_type__c, event_registration__c, engagement_type__c), custom fields for Dynamics metadata (dynamics_contact_id__c, original_lead_status__c), and any custom object schemas (Survey Response). We invite all team members who will be assigned as record owners, wait for acceptances, and validate that the Members list reflects every user referenced in the source data. Twenty's documentation confirms that fields must exist before import and users must be invited before owner lookups resolve.

  5. Sandbox migration and reconciliation

    We run a full migration into a staging environment using production-like data volume. The customer's admin reviews record counts, spot-checks 25-50 records against the source data, and validates that the relationship links (People to Company, Task to People, Opportunity to Company) resolved correctly. Any mapping corrections are documented and applied before the production migration. This step catches field name mismatches, missing custom fields, and lookup resolution failures before they affect production data.

  6. Production migration in dependency order

    We run production migration in record-dependency order: Companies (first, so that lookups are available), People (with CompanyId resolved), Opportunities (with CompanyId and primary PeopleId resolved), Tasks from Dynamics Activities, then ClickDimensions entities (Email Sends as Tasks, Event Registrations as Tasks linked to custom Event records, Web Tracking as Notes, Survey Responses as custom object records). Each phase emits a row-count reconciliation report. We freeze writes in Dynamics and ClickDimensions during the cutover window, run a final delta migration of any records modified during the window, then hand off to the customer.

  7. Cutover, validation, and automation rebuild handoff

    We enable Twenty as the system of record after cutover and deliver the written inventory of ClickDimensions workflows, automations, and survey logic for the customer's admin to rebuild. We support a one-week hypercare window for reconciliation issues. We do not rebuild ClickDimensions workflows in Twenty as part of standard migration scope. That work is either handled by the customer's admin using Twenty's workflow capabilities or as a separate automation rebuild engagement.

Platform deep dives

Context on both ends of the pair

Click logo

Click

Source

Strengths

  • Native integration with Microsoft Dynamics 365 CRM with bidirectional data sync.
  • Marketing automation (email, events, web tracking, surveys) in a single add-on layer.
  • Built-in export and import tools for moving Click records between Dynamics environments.
  • Web tracking and survey functionality without requiring a separate marketing platform.

Weaknesses

  • Tied exclusively to the Microsoft Dynamics 365 ecosystem, limiting destination options for migrations.
  • Free plan imposes hard limits on Custom Field usage that affect automation-heavy deployments.
  • Marketing feature set lags behind dedicated marketing automation platforms.
  • Product update cadence and customer support responsiveness trail competitors.
Twenty CRM logo

Twenty CRM

Destination

Strengths

  • AGPL-3.0 open-source license with full source code on GitHub — no vendor lock-in, no sunset risk.
  • Unlimited users and unlimited custom objects on self-hosted, with no feature gating based on headcount.
  • REST and GraphQL APIs available on all paid tiers, not locked behind an enterprise add-on fee.
  • MCP server and webhooks shipped as standard features, not premium upgrades.
  • Modern PostgreSQL-backed data model that developer teams can query, extend, and self-host.

Weaknesses

  • Recent v1.0 release means limited production hardening compared to CRMs with multi-year operational track records.
  • No native email sequencing or sales engagement tools — follow-up cadences require a separate platform.
  • No native two-way email sync or inbox integration, requiring third-party connectors for full activity logging.
  • Self-hosting 'free' pricing hides real infrastructure and DevOps costs that stack up over time.
  • Workflow automation is functional but lacks the complexity needed for sophisticated multi-step sales motions.

Complexity grading

How hard is this migration?

Standard CRM migration. 2 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 Click and Twenty CRM.

  • Object compatibility

    B

    2 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

    Click: Inherits Microsoft Dataverse and Power Platform service-protection limits (per-user request quotas published by Microsoft). The vendor does not publish Click-specific limits beyond those..

  • Data volume sensitivity

    A

    Click exposes a bulk API — large-volume migrations stream efficiently.

Estimator

Estimate your Click to Twenty CRM 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 Click to Twenty CRM data migrations

Answers to the questions buyers ask most during Click to Twenty CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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

Book a free 30 minute consultation

Most migrations land between three and five weeks for accounts with up to 15,000 Contacts, 3,000 Accounts, and one ClickDimensions marketing entity type. Migrations with multiple ClickDimensions entity types (Email Sends, Event Registrations, Web Tracking, Survey Responses), custom objects, or large activity histories (over 200,000 records) move to eight to fourteen weeks because of the dual-layer extraction from Dynamics and ClickDimensions, the custom field pre-creation loop, and the multi-phase import validation.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Click.
Land in Twenty CRM, 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