Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s
80 lines
3.7 KiB
Plaintext
80 lines
3.7 KiB
Plaintext
---
|
|
title: Data Migration
|
|
description: Import and export your CRM data via CSV files or API.
|
|
---
|
|
|
|
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
|
|
|
|
## Import Methods
|
|
|
|
Twenty supports two main methods for importing data:
|
|
|
|
| Method | Best For | Volume Limit |
|
|
|--------|----------|--------------|
|
|
| **CSV Import** | Standard migrations, regular updates | 10,000 records per file |
|
|
| **API Import** | Large-scale migrations, automation | Unlimited |
|
|
|
|
<Note>For very large datasets (hundreds of thousands of records), use the API. Our [implementation partners](/user-guide/getting-started/capabilities/implementation-services) can help run these scripts if needed.</Note>
|
|
|
|
## CSV Import Basics
|
|
|
|
You can import data for any object using CSV, XLSX, or XLS files. Each file should contain **only one type of object** (e.g., only People records).
|
|
|
|
<Note>**Fields must exist before import.** Uploading a CSV creates records but does not create fields. If you need custom fields, create them first under **Settings → Data Model**.</Note>
|
|
|
|
### Steps
|
|
1. Navigate to the object where you want to import data
|
|
2. Click the **⋮** icon on the top right (this is the Command Menu) and click on **Import records**
|
|
3. Download the template file to ensure your data is in the expected format
|
|
4. Upload your formatted CSV file
|
|
5. Map your columns to Twenty fields
|
|
6. Review errors (highlighted in yellow) and fix them, directly editing in the UI
|
|
7. Confirm the import
|
|
|
|
### Importing Relations Between Objects
|
|
You can import relations between objects using the CSV import function. You need to reference the related object using a unique field from this object: the `id`, the `email` for People and Workspace Members, the `domain` for companies, any other field set as unique in the data model for any other object.
|
|
|
|
<Note>**Deleted records count toward uniqueness.** Soft-deleted records (visible under Command Menu → See deleted records) are included in uniqueness checks. If you import a record with the same unique value as a deleted record, the deleted record will be restored.</Note>
|
|
|
|
<Warning>
|
|
**Import Order Matters!**
|
|
|
|
When importing related objects, upload files in this order:
|
|
1. **Companies** first (the "one" side of relationships)
|
|
2. **People** second (linked to Companies via companyId)
|
|
3. **Opportunities** third (linked to Companies/People)
|
|
4. **Custom objects** with relations last
|
|
|
|
Why? The "one" side of a one-to-many relationship must exist before you can reference it. For example, the Company record must exist before you import a Person with that company's ID.
|
|
</Warning>
|
|
|
|
Please refer to [this article](/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) for a step-by-step guide on how to proceed.
|
|
|
|
## Export Data
|
|
|
|
Export your workspace data for backups, reporting, or migration.
|
|
|
|
### Steps
|
|
1. Navigate to the object you want to export
|
|
2. Configure the view with the columns you need
|
|
3. Click **⋮** → **Export view**
|
|
4. Save the CSV file
|
|
|
|
<Note>**Only visible columns are exported.** The CSV file will only contain the columns displayed in your current view. Add or hide columns before exporting to control what data is included.</Note>
|
|
|
|
<Note>**Export limits**: Up to 20,000 records per export.</Note>
|
|
|
|
## Permissions
|
|
|
|
Data import and export require specific permissions:
|
|
- **Import**: Requires "Import CSV" permission
|
|
- **Export**: Requires "Export CSV" permission
|
|
|
|
Contact your workspace admin if you don't have these permissions.
|
|
|
|
## Next Steps
|
|
|
|
- [Prepare your CSV files](/user-guide/data-migration/how-tos/prepare-your-csv-files)
|
|
- [Import relations between objects](/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
|
|
- [Import via API for large datasets](/user-guide/data-migration/how-tos/import-data-via-api)
|