Use this guide to move task data from another system into Cogno with a controlled review step. Cogno imports CSV files, asks you to confirm every column, maps source statuses and members, then creates Cogno tasks.
When to use CSV import
CSV import is best when:
- You are moving from Linear, Notion, GitHub Issues, Asana, Jira Cloud, or another task system.
- You want to review the mapping before tasks are created.
- You need source URLs, IDs, labels, milestones, priorities, or custom fields preserved as metadata.
- You are doing a one-time migration or a controlled batch import.
CSV import creates tasks. It is not a live sync.
Before you export
Prepare the source system first.
| Check | Reason |
|---|---|
| One row per task | Cogno creates one task from each valid CSV row. |
| Header row present | Cogno uses the first row as column names. |
| Source URL or external ID present | Humans and AI can trace tasks back to the original system. |
| Stable assignee values | Names, emails, or handles can be mapped to workspace members. |
| Absolute dates | Import accepts absolute date values, not relative phrases. |
| Parent references are stable | Parent task mapping needs a title, source URL, external ID, or other stable lookup value. |
Invite members before import when you want assignees or collaborators to map to Cogno members.
Import flow
- Export a CSV from the source app.
- Open the Cogno app.
- Select the target workspace.
- Open Settings > General.
- Drop one or more CSV files into Task import, or choose files from your computer.
- Select each uploaded file and review the mapping.
- Map every CSV column to a Cogno field, or choose Do not import.
- Map every source status value to a Cogno status.
- Map source assignees and collaborators to workspace members, or choose Do not assign.
- Check the mapped preview.
- Mark each file Mapping complete.
- Select Import.
- Spot-check the created tasks from the Tasks page.
Supported sources
| Source | Recommended export | Best for |
|---|---|---|
| Linear | Issue CSV | Issue lists, project issues, custom views, workspace issue exports. |
| Notion | Markdown & CSV export | Task databases and project databases. |
| GitHub Issues | GitHub CLI JSON formatted as CSV | Repository issue migrations with labels, assignees, milestones, and URLs. |
| Asana | Project CSV | Project-level task movement. |
| Jira Cloud | Export CSV - all fields | Issues, comments, custom fields, and work item metadata. |
| Other CSV | Custom CSV | Any task-like table with a title column. |
Cogno fields
| Cogno field | Required | Multiple columns | Use it for |
|---|---|---|---|
| Task title | Yes | Yes | Main task title. Multiple title columns are joined with spaces. |
| Description | No | Yes | Long-form task body. Multiple description columns are joined with blank lines. |
| Status | No | No | Source workflow state. Source values are mapped before import. |
| Assignee | No | No | Primary owner. Multiple values in the cell are split by comma, semicolon, or newline. |
| Collaborators | No | Yes | Additional owners, followers, reviewers, or participants. |
| Due date | No | No | Task due date. |
| Start date | No | No | Task start date. |
| Project | No | No | Cogno project name. Cogno can create or reuse a project by name. |
| Parent Task | No | No | Parent reference for a one-level task hierarchy. |
| Source | No | No | Original URL or canonical source link. |
| Metadata | No | Yes | Labels, tags, priority, estimate, issue key, number, timestamps, reporter, creator, comments, and unsupported fields. |
| Do not import | No | Yes | Columns that should be ignored. |
Every column must be mapped or explicitly ignored.
Column mapping rules
- Task title is required.
- Status, Assignee, Due date, Start date, Project, Parent Task, and Source can each be mapped to one CSV column.
- Task title, Description, Collaborators, Metadata, and Do not import can each receive multiple CSV columns.
- Empty title rows are skipped.
- Unsupported fields are rejected.
- Source URL and metadata are stored under the task import metadata.
Date values
Cogno accepts absolute dates in common formats:
| Example | Accepted |
|---|---|
2026-06-11 | Yes |
2026/06/11 | Yes |
06/11/2026 | Yes |
11/06/2026 | Yes |
Jun 11, 2026 | Yes |
June 11, 2026 | Yes |
tomorrow | No |
next Friday | No |
Timestamps are handled when the first 10 characters form an ISO date.
Status mapping
Cogno statuses are:
proposedactivebacklogcompletedarchived
When you map a CSV column to Status, the importer lists each source status value. Map every source value before marking the file complete.
Source statuses are converted into Cogno statuses. To keep source-specific categories, manage them as workspace tags after import.
Member mapping
Map source assignees and collaborators to Cogno workspace members.
| Source value | Mapping behavior |
|---|---|
| Exact member name, user ID, or agent ID | Cogno can preselect the matching member when there is one match. |
| Multiple names in one cell | Values split by comma, semicolon, or newline. |
| First assignee value | Becomes primary assignee. |
| Extra assignee values | Become collaborators. |
| Unknown person | Choose a workspace member or Do not assign. |
| Ambiguous person | Choose the correct workspace member manually. |
Invite members before import when the CSV contains people.
Parent task mapping
Map a parent reference column to Parent Task when the source system has subtasks.
Cogno resolves a parent reference against:
- Tasks in the same CSV import batch.
- Previously imported tasks in the same workspace.
- Import metadata values, source URLs, task titles, and task titles derived from the CSV.
Rules:
- Cogno supports one level of task nesting.
- A child can link to a parent imported in the same file.
- A child can link to a parent imported earlier when the reference is still present in metadata.
- Ambiguous parent references are skipped.
- Cycles are skipped.
For large migrations, import parent tasks first when the source export separates parents and children.
Import limits
| Limit | Value |
|---|---|
| CSV headers | Required |
| CSV task rows | At least 1 |
| Columns | Up to 100 |
| Cell length | Up to 20,000 characters |
| API payload text | Up to 2,000,000 characters |
| UI batch size | 250 rows per request |
| UI batch text | Up to 1,500,000 characters per request |
Large files are sent in batches. If a batch partially succeeds, Cogno shows created, skipped, and error counts.
Export from Linear
Linear supports issue CSV exports from issue views, projects, custom views, and workspace-level export tools.
Recommended steps:
- Open the issue list, project, or custom view you want to move.
- Open the command menu with
Cmd/Ctrl + K. - Choose Export issues as CSV.
- Upload the downloaded CSV to Cogno.
Recommended mapping:
| Linear column | Cogno field |
|---|---|
Title | Task title |
Description | Description |
Status | Status |
Assignee | Assignee |
Project | Project |
Due Date | Due date |
Parent issue | Parent Task |
ID, Priority, Estimate, Labels, Cycle, Created, Updated, milestones | Metadata |
Export from Notion
Use the CSV inside a Notion Markdown & CSV export.
Recommended steps:
- Open the Notion database that contains the tasks.
- Open the top-right page menu.
- Choose Export.
- Select Markdown & CSV.
- Download and unzip the export.
- Upload the database CSV to Cogno.
Recommended mapping:
| Notion column | Cogno field |
|---|---|
| Task name or page title | Task title |
| Description or notes | Description |
| Status | Status |
| Assignee or People | Assignee |
| Due date | Due date |
| Project or milestone | Project |
| Tags, priority, relation fields, rollups | Metadata |
Export from GitHub Issues
GitHub Issues does not provide a browser CSV export. Use GitHub CLI to export issue data as JSON and format it as CSV.
gh auth login
REPO="OWNER/REPO"
OUT="github-${REPO//\//-}-issues.csv"
gh issue list -R "$REPO" --state all --limit 1000 \
--json number,title,body,state,stateReason,labels,assignees,milestone,createdAt,updatedAt,closedAt,url \
--jq '(["number","title","body","state","stateReason","labels","assignees","milestone","createdAt","updatedAt","closedAt","url"], (.[] | [.number,.title,.body,.state,(.stateReason // ""),([.labels[].name] | join(";")),([.assignees[].login] | join(";")),(.milestone.title // ""),.createdAt,.updatedAt,(.closedAt // ""),.url])) | @csv' \
> "$OUT"
Recommended mapping:
| GitHub column | Cogno field |
|---|---|
title | Task title |
body | Description |
state | Status |
assignees | Assignee |
milestone | Project or Metadata |
url | Source |
number, stateReason, labels, timestamps | Metadata |
Use --limit high enough for the repository. Use --search when you need a scoped subset.
Export from Asana
Use a project CSV export for the cleanest task set.
Recommended steps:
- Open the Asana project.
- Open the dropdown next to the project title.
- Choose the CSV export option from the project export menu.
- Upload the CSV to Cogno.
Recommended mapping:
| Asana column | Cogno field |
|---|---|
| Task name | Task title |
| Notes or Description | Description |
| Section or Status | Status or Metadata |
| Assignee | Assignee |
| Collaborators or Followers | Collaborators |
| Due Date | Due date |
| Projects | Project |
| Tags, custom fields, task ID, created date, completed date | Metadata |
Export from Jira Cloud
Jira Cloud can export work items from a project list or from global work item search.
Recommended steps:
- Open a Jira project and select List, or open Filters > Search work items.
- Apply the query or filter for the work items you want.
- Open the more actions menu.
- Choose Export.
- Select Export CSV - all fields.
- Upload the CSV to Cogno.
Recommended mapping:
| Jira column | Cogno field |
|---|---|
Summary | Task title |
Description | Description |
Status | Status |
Assignee | Assignee |
Due date | Due date |
Project name or Project key | Project |
Parent or parent issue key | Parent Task |
Issue key or issue URL | Source |
| Comments, labels, components, priority, custom fields, created/updated timestamps | Metadata |
Use all fields when comments and custom fields matter. Jira Cloud exports CSV in UTF-8.
Validate after import
Spot-check at least five tasks:
| Check | Expected result |
|---|---|
| Title | The task title is readable and unique enough. |
| Description | Important source details appear in the task body. |
| Status | Source states landed in the intended Cogno statuses. |
| Status tag | Source workflow details are preserved when useful. |
| Assignee | The correct workspace member owns the task. |
| Collaborators | Secondary owners or followers are present. |
| Project | Tasks appear under the expected project. |
| Parent task | Child tasks link to the intended root parent. |
| Source | The task can be traced back to the original app. |
| Metadata | Labels, priorities, IDs, and custom fields are preserved. |
Troubleshooting
| Problem | Fix |
|---|---|
| File cannot load | Confirm the CSV has a header row and at least one task row. |
| Mapping complete is disabled | Map every column, every status value, and every assignee value. |
| Task title is required | Map a non-empty title, name, or summary column to Task title. |
| A single-value field has multiple columns | Keep one column mapped to that field and move the others to Metadata or Do not import. |
| Assignee not found | Invite the member, map the source value manually, or choose Do not assign. |
| Status looks too broad | Map source status to Cogno status and use tags for source-specific workflow steps. |
| Date is invalid | Convert dates to an accepted absolute date format. |
| Parent task not found | Import parents first or preserve stable parent IDs/source URLs. |
| Characters look corrupted | Re-export as UTF-8 or resave with a modern spreadsheet app. |
See Troubleshooting for symptom-first diagnosis.
LLM handoff
When asking an assistant to help with an import, provide:
- Source app name.
- CSV header row.
- Three representative rows with sensitive values removed.
- Desired Cogno field mapping.
- Status mapping decisions.
- Assignee mapping decisions.
- Parent task strategy.
- Any import error messages.
Use Copy for LLM on this page to pass the complete import rules as Markdown context.