Quevell imports CSV, not "data from a specific tracker": any tool that can export a table can be a source. An import goes into a project and is available to anyone who can create issues there.
Two phases
Every import passes through the same mechanism twice:
- Preview — the file is parsed and validated in full, and nothing is written. You see how the columns were recognized, how many rows are ready, and what is wrong with the rest.
- Apply — the file is validated again and written in one transaction. Either the whole file lands, or nothing does and you get the error report.
Practically: there is no such thing as a half-imported file. Fix the source and retry as many times as needed, with nothing to clean up between attempts.
Every created issue takes the same path a hand-created one takes: permissions, field validation, hierarchy rules. An import cannot put data into a state a person could not. Automation rules do not fire on imported rows — a thousand rules woken by one file helps nobody.
The file format
- Encoding: UTF-8, BOM included. A file that does not read as strict UTF-8 is read as windows-1251 — the encoding legacy exports use. The recognized encoding is named in the preview report.
- Delimiter: semicolon, comma or tab, detected from the header line — the candidate that yields the most columns wins.
- Quoting: RFC 4180. A double-quoted cell may contain the delimiter, line breaks and doubled quotes.
- The first line names the columns. It is required.
- Limits: up to 5 MB and 5000 rows per file.
Columns
Columns are recognized by name, in English and in Russian. The only required column is the summary (Summary, Title, Subject). A description column is needed in practice too: descriptions are mandatory in Quevell, and a row without one is refused into the report.
| Target | Recognized names | Required |
|---|---|---|
| Summary | Summary, Title, Subject | yes |
| Description | Description | a value is required in every row |
| Issue type | Type, Issue type | no — the project default applies |
| Status | Status | no — the initial status applies |
| Priority | Priority | no |
| Assignee | Assignee | no |
| Reporter | Reporter | no |
| Created date | Created, Created at | no |
| Key in the file | Key, Issue key | no — used for hierarchy and references |
| Parent | Parent, Parent key | no |
| Original estimate | Original estimate, Estimate | no |
| Remaining estimate | Remaining, Remaining estimate | no |
A column whose header matches a custom field's name writes into that field. An unrecognized column is ignored and marked so in the report. When two headers claim one target, the first column wins and the second is marked ignored.
When automatic recognition is not enough, the mapping is set explicitly in the import dialog — which column goes where, including "nowhere". The instructions can be saved and reused: their format is stable and meant to live in a migration playbook.
Values
Statuses, types and select options are recognized by any of their spellings: the key, the default name and every translation. A value written the way the interface shows it resolves regardless of language.
- Priority:
Highest,High,Medium,Low,Lowest, their Russian equivalents, plusBlockerandTrivial. - People: by name or email. Email is the reliable spelling — when two people share a name, the row with the name is refused and the report asks for the address.
- Created dates:
2026-08-24,24.08.2026, ISO timestamps, and24.08.2026 18:30. - Estimates: in the time-tracking form, e.g.
1w 2d 4h 30m, where1w= 5 days and1d= 8 hours. A missing remaining estimate equals the original — nothing is spent yet. - Select fields: the value must be one of the field's options. Several values for a multi-select go on separate lines inside one cell.
Unknown values
A row with an unknown status, type, priority or option is not imported: silently creating an issue with "roughly that" value is worse than naming the row and the value. The report aggregates them — not three hundred errors saying "no status called Wait", but one line saying Wait, 300 rows, with the list of what the project does have. In the import dialog such a value can be mapped to an existing one without editing the file.
Hierarchy
Hierarchy travels in two columns: key in the file and parent. A parent may name a key of another row in this file, or an existing issue in Quevell.
- Keys inside the file win: if a key duplicates an existing issue, the parent means the file's row. This is what lets a re-imported export keep its old keys.
- A parent must sit exactly one level above its child in the type hierarchy, as when creating by hand.
- Rows are written parents-first regardless of their order in the file.
- When a parent row is refused, its children are refused with a message pointing at it, not with a puzzling "parent not found".
After all rows are written, issue references in "issue" custom fields that point at this file's keys are rewritten to the new keys — numbering belongs to the receiving project and is known only after the write. The report returns the old-to-new key mapping, so links in the old tracker can be rewritten too.
The report
Both phases return the same report: the encoding, the delimiter, how each column was recognized, the row counts, per-row errors with row numbers and reasons, and the aggregated unknown values. After an apply, the report also lists the created issues with their new keys.
An example file
The file below can be copied, saved as import.csv and uploaded as is. The delimiter is a semicolon.
Key;Summary;Description;Type;Status;Priority;Assignee;Parent;Estimate
EPIC-1;Office move;Everything about moving the team to the new office;Epic;In progress;High;;;
T-1;Collect requirements;Ask the teams what they need: desks, meeting rooms, a server room;Task;Done;High;anna@example.com;EPIC-1;2d
T-2;Choose the space;Visit the three shortlisted addresses and compare against the checklist;Task;In progress;Medium;anna@example.com;EPIC-1;1w
T-3;Arrange moving the hardware;Packing, insurance, the mover, acceptance on site;Task;To do;Medium;;EPIC-1;3d 4h
The type and status names in the example must exist in your project; if yours are named differently, rename them in the file or map them in the import dialog.