Import from CSV
The CSV importer lets you bulk-import work items from any CSV (comma-separated values) file. This is the most flexible importer -- it works with data exported from any tool, manually prepared spreadsheets, or custom data pipelines. You upload a file, map columns to SetGet fields, review validation results, and run the import.
File format requirements
| Requirement | Detail |
|---|---|
| Encoding | UTF-8 (BOM is accepted but not required) |
| Delimiter | Comma (,) |
| Header row | Required as the first row |
| Maximum file size | 10 MB |
| Maximum rows | 10,000 work items per file |
| Quoting | Fields containing commas or newlines must be enclosed in double quotes |
| Line endings | \n (LF) or \r\n (CRLF) |
Sample CSV template
Download the sample template from the import page, or use this format:
Title,Description,State,Priority,Assignee,Labels,Due Date,Estimate
"Fix login bug","Users cannot log in when password contains special characters",In Progress,High,alice@example.com,"bug,frontend",2026-04-15,3
"Add dark mode","Implement dark mode toggle in settings",Backlog,Medium,bob@example.com,"feature,ui",2026-05-01,8
"Update API docs","Document the new /v2/projects endpoint",Todo,Low,,"docs",2026-04-20,2Column descriptions
| Column | Required | Format | Notes |
|---|---|---|---|
| Title | Yes | Plain text | Work item title |
| Description | No | Plain text or Markdown | Work item description |
| State | No | State name | Must match an existing SetGet state or be mapped |
| Priority | No | Urgent, High, Medium, Low, or None | Case-insensitive |
| Assignee | No | Email address | Must match a workspace member's email |
| Labels | No | Comma-separated list (inside quotes) | Created if they do not exist |
| Due Date | No | YYYY-MM-DD | ISO 8601 date format |
| Start Date | No | YYYY-MM-DD | ISO 8601 date format |
| Estimate | No | Integer | Points or hours depending on project settings |
| Parent | No | Title of another row | Creates a sub-work-item relationship |
Setup steps
Step 1 -- Upload the CSV file
- Go to Settings > Import.
- Select CSV.
- Click Upload File and select your CSV file.
- SetGet parses the file and shows a preview of the first 10 rows.
Step 2 -- Map columns to fields
SetGet auto-detects common column names. For columns that are not automatically matched, manually select the target field.
| CSV column header | Auto-detected SetGet field |
|---|---|
Title, Name, Summary | Work item title |
Description, Body, Details | Description |
State, Status | State |
Priority | Priority |
Assignee, Assigned To, Owner | Assignee |
Labels, Tags | Labels |
Due Date, Due, Deadline | Due date |
Estimate, Points, Story Points | Estimate |
Columns that do not map to any field can be ignored or appended to the description.
Step 3 -- Choose the target project
- Create new project -- enter a project name and identifier.
- Import into existing project -- select an existing project.
Step 4 -- Map state and priority values
If your CSV uses state or priority names that differ from SetGet defaults, map them:
| CSV state value | SetGet state |
|---|---|
Open | Backlog |
Doing | In Progress |
Finished | Done |
| CSV priority value | SetGet priority |
|---|---|
P0 | Urgent |
P1 | High |
P2 | Medium |
P3 | Low |
Step 5 -- Validate
Click Validate to check the data before importing. The validator reports:
| Validation check | What it catches |
|---|---|
| Missing title | Rows without a title value |
| Invalid date format | Dates not in YYYY-MM-DD format |
| Unknown state | State values not mapped to a SetGet state |
| Unknown priority | Priority values not in the mapping |
| Unmatched assignee | Emails not matching any workspace member |
| Duplicate titles | Rows with identical titles (warning, not blocking) |
Errors are shown per-row with the row number and column. Fix errors in the CSV file and re-upload, or accept warnings and proceed.
TIP
Fix validation errors before importing. While warnings can be accepted, errors will cause those rows to be skipped.
Step 6 -- Start import
Click Start Import. The progress screen shows rows processed and any rows skipped due to errors.
Error handling
| Error type | Behavior |
|---|---|
| Missing required field (title) | Row is skipped |
| Invalid date | Date field is left empty; row is imported |
| Unknown state (unmapped) | State defaults to Backlog; row is imported |
| Unknown priority (unmapped) | Priority defaults to None; row is imported |
| Unmatched assignee | Assignee is left empty; row is imported |
After import, a summary report lists all skipped rows and warnings with row numbers.
Post-import validation
- Compare imported work item count with the CSV row count (minus header, minus skipped rows).
- Spot-check several items for correct field values.
- Verify labels were created.
- Check parent-child relationships if the Parent column was used.
WARNING
The CSV importer does not detect duplicates. Importing the same file twice creates duplicate work items. Delete duplicates manually or clear the project before re-importing.
Preparing data from other tools
If you are importing from a tool that does not have a dedicated importer, export to CSV from that tool and use this importer. Common sources:
| Source tool | Export method | Notes |
|---|---|---|
| Trello | Menu > More > Print and Export > CSV | Requires a Trello Power-Up or third-party export |
| Monday.com | Board menu > Export to Excel/CSV | Maps columns to CSV headers |
| Basecamp | Third-party export tools | No native CSV export |
| Airtable | View > Download CSV | Each view can be exported separately |
| Google Sheets | File > Download > CSV | Save as .csv before importing |
| Excel | File > Save As > CSV | Choose "CSV UTF-8" format |
After exporting, review the CSV to ensure it meets the format requirements above, then upload to SetGet.
Advanced: Parent-child relationships
The Parent column creates sub-work-item relationships:
- Set the Parent column value to the exact title of another row in the CSV.
- The parent row must also exist in the same CSV file.
- Nesting is limited to one level (sub-work-items cannot have their own children via CSV import).
Example:
Title,State,Parent
"Authentication module",Backlog,
"Implement login endpoint",Backlog,"Authentication module"
"Implement logout endpoint",Backlog,"Authentication module"Best practices
- Clean your data before importing. Remove empty rows, fix encoding issues, and standardize state/priority names.
- Use the sample template as a starting point to ensure correct formatting.
- Test with a small file (10-20 rows) before importing a large dataset.
- Standardize email addresses to match workspace members for accurate assignee mapping.
- Check encoding -- if you see garbled characters, ensure the file is saved as UTF-8.
- Remove BOM -- some tools add a BOM (Byte Order Mark) to the beginning of UTF-8 files. SetGet handles BOM gracefully, but removing it avoids potential issues.