CRM migration

Migrate from Daylite to Twenty CRM

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

Daylite logo

Daylite

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

83%

10 of 12

objects map 1:1 between Daylite and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Daylite to Twenty CRM is a migration from an Apple-native, project-management-bundled CRM to a modern, open-source CRM with a web-first interface and flexible data model. Daylite organizes data around a rich object graph of People, Companies, Projects, Opportunities, Appointments, Tasks, and Notes, all exportable as CSVs from its local database. Twenty CRM receives data in a defined import order: Companies first, then People, followed by Opportunities, Projects, Tasks, Appointments, and Notes, with custom objects imported last. We preserve the Person-to-Company linkage by resolving Daylite's foreign key columns during a pre-import join pass. Pipeline stages in Daylite are freeform text stored per Opportunity rather than a managed taxonomy, so we deduplicate all unique stage strings and present them as a mapping table for your admin to normalize before import. Attachments and iOSXpert plugin data migrate where present in the export. We do not migrate automations, workflows, or Billings Pro billing records; these require separate handling post-migration.

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

Daylite logo

Daylite

What's pushing teams away

  • Apple-only platform becomes a constraint — teams that need web access, cross-platform mobile support, or Windows/Linux compatibility hit a hard wall and must migrate away entirely.
  • Limited third-party integrations — compared to cloud-first CRMs with deep Zapier, API, or native connector ecosystems, Daylite's integration surface is narrow, frustrating teams needing to connect billing, marketing, or analytics tools.
  • Steep learning curve for non-power users — the rich object model and deep Apple integration come with complexity that new team members find intimidating without dedicated onboarding.
  • Plugin ecosystem fragility — iOSXpert plugins are third-party and must be maintained alongside Daylite updates; plugin breakage or abandonment leaves data stranded in non-standard tables.
  • Data export limitations — while CSV export is possible, the 14-day download window and manual column-selection process make large or automated migrations difficult to execute reliably.

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 Daylite objects map to Twenty CRM

Each row shows how a Daylite 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.

Daylite

Companies

maps to

Twenty CRM

Company

1:1
Fully supported

Daylite Company records map directly to Twenty CRM Company records. Address, industry, and custom properties migrate as text or field-type-matched columns. Company is the 'one' side of the Person-Company relationship and must be imported first per Twenty CRM's documented import order. We use the Daylite company ID as an external identifier to resolve Person-Company linkages during the People import phase.

Daylite

People

maps to

Twenty CRM

Person

1:1
Fully supported

Daylite People records map to Twenty CRM Person records. Name, email, phone, and address fields migrate directly. Each Person carries a Company foreign key; we resolve this by first importing Companies and then inserting Person records with the matched Twenty Company ID. Daylite allows one Company per Person, matching Twenty's Person-Company relationship model.

Daylite

Opportunities

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Daylite Opportunities map to Twenty CRM Opportunity records with stage, value, probability, and close date preserved. Daylite stores pipeline stages as freeform text per Opportunity; we deduplicate all unique stage strings from the export and present them as a mapping table for your admin to define as valid stage values in Twenty CRM's workspace settings before import. This is a required pre-import step; stage normalization happens before Opportunity records are inserted.

Daylite

Pipeline Stages

maps to

Twenty CRM

Opportunity Stage

lossy
Mapping required

Daylite's freeform stage text is normalized into Twenty CRM's stage configuration. We extract every unique stage string from the Opportunities CSV, deduplicate it, and present the list as a mapping worksheet. Your admin defines the stage names and probability percentages in Twenty CRM's workspace settings. Historical opportunities with stage typos or variant names will be remapped to the corrected stage value during import.

Daylite

Projects

maps to

Twenty CRM

Custom Object: Project

1:1
Fully supported

Daylite Project records map to a custom Project object in Twenty CRM. Status, dates, and budget fields migrate as text fields unless your admin specifies typed equivalents. If the iOSXpert Time&Budget plugin is active and its tables are present in the export, budget and cost threshold data migrates to additional custom fields on the Project object. Projects are imported after Opportunities and before Tasks, following Twenty's dependency order.

Daylite

Tasks

maps to

Twenty CRM

Task

1:1
Fully supported

Daylite Tasks (both standalone and sub-tasks) map to Twenty CRM Task records. Status, due date, priority, and assignee migrate directly. Tasks linked to Projects carry a Project foreign key that we resolve after the Project import phase. Sub-tasks maintain parent-child hierarchy through a custom parent_task_id__c field that we populate during import.

Daylite

Appointments

maps to

Twenty CRM

Task (Event subtype)

1:1
Fully supported

Daylite Appointments map to Twenty CRM Task records with an event-like structure. UTC start and end timestamps, timezone, all-day flag, location, and category migrate as custom fields or as part of the Task's description and due date fields. The linked Person and Project IDs resolve against the already-imported Person and Project records. Calendar chronology is preserved by ordering Task records by the original appointment timestamp.

Daylite

Notes

maps to

Twenty CRM

Comment

1:1
Fully supported

Daylite Notes (freeform text attached to any object) map to Twenty CRM Comment records linked via the target object type and ID. We write the note body as the Comment text and link it to the corresponding Person, Company, Opportunity, or Project record using Twenty's object-comment relationship model.

Daylite

Groups

maps to

Twenty CRM

Workspace Tag

lossy
Fully supported

Daylite static Groups (People or Company groupings) map to Twenty CRM Workspace Tags. The group membership table (Group-Record-ID pairs) becomes a set of TagAssignment records linked to the migrated Person or Company. Your admin decides during scoping whether to create a flat tag list or a hierarchical tag structure in Twenty.

Daylite

Custom Fields

maps to

Twenty CRM

Custom Fields

1:1
Mapping required

Daylite custom fields on People, Companies, Opportunities, Projects, Tasks, and Appointments are defined in a separate metadata table and values stored in record tables. We extract both, present each custom field with its type and options, and your admin confirms the target field name and type in Twenty CRM. Text fields map directly; picklist-type custom fields map to Twenty's select fields with the same option values.

Daylite

Attachments

maps to

Twenty CRM

Attachments

1:1
Mapping required

Daylite attachments are bundled into the compressed export as a flat folder with filenames referencing parent object type and ID. We reattach files to the corresponding Person, Company, Opportunity, or Project record in Twenty CRM by parsing the filename, resolving the parent ID, and uploading through Twenty's attachment API. Attachment volume affects migration timeline significantly for large file libraries.

Daylite

Tags

maps to

Twenty CRM

Workspace Tag

1:1
Mapping required

Daylite's tag system (used across objects) is exported as a separate lookup table. We map each Daylite tag to a Twenty CRM Workspace Tag, then write the tag associations as TagAssignment records linked to the relevant Person, Company, Opportunity, or Project. Tag names are preserved verbatim unless your admin requests normalization.

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.

Daylite logo

Daylite gotchas

High

Database export download expires after 14 days

High

Billings Pro self-serve is discontinued, cloud migration required

Medium

Plugin-stored data is only exportable if the plugin is installed

Medium

Custom field definitions must be manually mapped

Low

Pipeline stage names are plain text, not a managed taxonomy

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

  • Daylite database export download expires after 14 days

    When you trigger a full database export from Account Settings > My Info > Create Data Export, Daylite generates a compressed archive of CSVs and attachment files with a download link that is valid for only 14 days. If that window has passed before your migration scoping call, you must trigger a fresh export. We confirm export link validity before beginning any import work and request a new export if the link has expired. This is a hard Daylite platform constraint, not a migration tooling issue.

  • Daylite pipeline stages are freeform text requiring normalization

    Opportunity stage names in Daylite are stored as freeform text strings on each Opportunity record, not as a centrally defined stage taxonomy. This means typos, variant names, and abandoned stage labels persist in historical records. During migration scoping, we extract every unique stage string, deduplicate it, and present the list for your admin to define as valid stage values in Twenty CRM's workspace settings. Historical Opportunities with variant stage names are remapped to the normalized stage during import. This step is required before Opportunity records can be inserted into Twenty.

  • iOSXpert plugin tables only exportable if plugin was installed during export

    iOSXpert extensions (Time&Budget, FinanceConnector) write data into additional tables within Daylite's database. If you exported the database before installing a plugin, those tables will be absent from the export with no way to regenerate them retroactively. We audit the exported table list during scoping and flag any plugin signatures that are missing. Customers with Time&Budget or FinanceConnector data must confirm whether that data is present in the export before migration begins. We include plugin data in the migration scope where the tables are present.

  • Twenty CRM's workflow and automation capabilities are limited in current release

    Twenty CRM's automation features are actively developing and do not yet match the workflow depth of established CRMs. Daylite workflow rules, assignment rules, and follow-up triggers do not migrate to Twenty as code. We deliver a written inventory of every Daylite workflow rule with its trigger, conditions, and actions so your admin can evaluate manual alternatives or wait for Twenty's automation features to mature. This is a destination platform constraint to evaluate during your CRM selection process.

  • Custom field mapping requires explicit admin confirmation before import

    Daylite custom field definitions live in a separate metadata table from the values table. If we skip the explicit mapping step, custom fields may land with wrong types, orphaned names, or duplicate fields in Twenty CRM. We extract both the definition table and the value table, then present a mapping worksheet so your admin confirms each Daylite custom field's target name and field type in Twenty before any data is written. Omitting this step results in misnamed or orphaned custom fields in the destination.

Migration approach

Six steps for a successful Daylite to Twenty CRM data migration

  1. Daylite export audit and scoping

    We begin by confirming your Daylite database export. We verify that the download link is still active (it expires after 14 days) and audit the exported table list for completeness. We identify all Daylite objects present (People, Companies, Opportunities, Projects, Tasks, Appointments, Notes, Groups), check for iOSXpert plugin tables (Time&Budget, FinanceConnector), and verify that attachment folders are included. We also extract the custom field metadata table at this stage. The output is a scoping document listing every table to be migrated and any missing tables requiring a fresh export.

  2. Stage normalization and custom field mapping

    We deduplicate all unique Opportunity stage strings from the export and present them as a stage mapping table. Your admin defines which stage names map to which Twenty CRM stage values and sets the probability percentage for each. Separately, we present the Daylite custom field metadata alongside a blank mapping worksheet. Your admin confirms the target field name, field type, and object placement in Twenty for each Daylite custom field. Both the stage normalization table and the custom field mapping must be completed and signed off before import begins.

  3. Twenty CRM workspace preparation

    We configure the Twenty CRM destination workspace based on the scoping output. This includes creating custom field definitions for each mapped Daylite custom field, configuring stage values in workspace settings using the normalized stage list, and setting up any custom objects (Projects) with the required fields. Twenty CRM's workspace is self-hosted or cloud-hosted depending on your deployment choice; we coordinate with your technical team on API endpoint access and authentication credentials.

  4. Relationship resolution and dependency-ordered import

    We resolve all foreign key relationships from the Daylite export before writing records to Twenty CRM. Companies are imported first (the 'one' side of the Person-Company relationship), followed by People with their CompanyId resolved. Opportunities follow with their linked Person and Company IDs resolved. Projects, Tasks, and Appointments are imported next, with Project foreign keys resolved after the Project phase. Notes and attachment references are imported last. Each phase emits a row-count reconciliation report.

  5. Attachment re-upload

    We reattach files to their parent records in Twenty CRM. Filenames in the Daylite export embed the parent object type and ID, which we parse to identify the target Person, Company, Opportunity, or Project in Twenty. Attachments are uploaded through Twenty's attachment API and linked to the correct record. Large attachment libraries (over 1 GB of files) may extend the migration timeline; we flag this during scoping if it applies.

  6. Cutover, validation, and workflow handoff

    We run a final delta migration to capture any records modified during the export-to-import window. Your team freezes writes to Daylite during the cutover window, and we switch the system of record to Twenty CRM. We deliver a reconciliation report comparing record counts in Daylite against Twenty for each object type, plus spot-check sampling of 25-50 records for field-level accuracy. We also deliver the Daylite workflow inventory document for your admin to evaluate for manual recreation or future automation support in Twenty.

Platform deep dives

Context on both ends of the pair

Daylite logo

Daylite

Source

Strengths

  • Deep Apple platform integration with Contacts, Calendar, Mail, and Siri.
  • Built-in project management with Tasks, Appointments, and budget tracking.
  • Full database CSV export available to all customers without restrictions.
  • Single pricing tier with no feature gating between plans.
  • Rich ORM-based data model with well-structured foreign key relationships.

Weaknesses

  • Apple-only deployment excludes all other desktop and mobile platforms.
  • Limited third-party integration ecosystem beyond native Apple apps.
  • Self-serve data export window expires after 14 days.
  • API documentation is sparse and not publicly indexed.
  • Plugin data from iOSXpert add-ons may not be consistently exportable.
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 Daylite 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

    Daylite: Not publicly documented as specific numeric quotas; standard SaaS limits assumed and confirmed during scoping.

  • Data volume sensitivity

    A

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Daylite to Twenty CRM migrations land between three and five weeks for accounts with under 5,000 People, 2,000 Opportunities, and no large attachment libraries. Migrations with iOSXpert plugin tables, complex custom field mappings, large attachment volumes (over 1 GB), or historical data spanning many years extend to seven to ten weeks because of plugin table auditing, custom field normalization, and attachment re-upload work.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Daylite.
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