Importing from Trello, Jira and ClickUp#
You can create a board from an export file taken out of Trello, Jira or ClickUp. Nothing is connected to those products — you export a file, and Laver reads it. The file never leaves your browser except as the body of the request that creates the board.
Where it is#
In the sidebar, click New board. Underneath the name field and the template picker there is a line reading or import from Trello, Jira or ClickUp (JSON or CSV). Click it and choose your file.
You do not tell Laver which product the file came from. It works that out from the file itself, so choosing the wrong option is not a mistake you can make. If the file is not one of the three, you get a message saying so and nothing is created.
Getting the file out of each product#
Trello#
Board → Show menu → More → Print, export and share → Export as JSON.
One file for the whole board. Lists become status columns in their existing order; cards become tickets. Archived cards and cards on archived lists are skipped, and card labels become workspace labels, keeping roughly their Trello colour.
Jira#
Either of these works:
- CSV — from the issue search, Export → CSV (all fields). This is the button most people find, and it is the easier one.
- JSON — the response body of
GET /rest/api/3/search, saved to a file. Use this if you are already scripting against the Jira API.
Statuses become columns in the order they are first seen — a search result
carries no column ordering, so there is nothing better to go on. Ticket titles
keep their issue key, so PROJ-14 Rotate the signing key stays the thing
everybody has been calling it.
ClickUp#
Either of these works:
- CSV — List → ⋯ → Download CSV.
- JSON — the response body of
GET /api/v2/list/{list_id}/task.
Tags become labels. With the JSON export, columns are ordered by ClickUp's own
orderindex; the CSV does not carry it, so columns come out in first-seen order
instead.
What comes across#
| Comes across | Does not |
|---|---|
| The board and its name | Attachments |
| Status columns | Comments and history |
| Ticket titles | Assignees |
| Ticket descriptions | Due dates, priorities, estimates |
| Labels, tags and colours | Subtasks and links between tickets |
Descriptions arrive as plain text. Jira Cloud stores them in Atlassian Document Format rather than as a string, so the text is flattened out of it — you will see the words, not the formatting.
Importing the same file twice#
Re-importing is safe and is the intended way to bring a board up to date. The second import finds the board the first one made and updates it, rather than making a second board:
- Tickets that already exist are updated in place.
- Tickets that are new in the export are added.
- Tickets you have since deleted in Laver are not brought back.
Matching is by the vendor's own identifier — the Trello board id, the Jira project key, the ClickUp list id. One exception: a ClickUp CSV carries the list's name rather than its id, so if you rename a list in ClickUp and export it again, that import creates a new board. A name is not an identifier, and silently overwriting the wrong board would be worse.
Limits#
- 2,000 tickets per import. A bigger export is refused with a message saying how many it contained.
- The workspace's own plan limits still apply — an import that would take you past your board limit is refused like any other board.
If it does not work#
The messages are specific, and each one names the thing that is missing:
- "That does not look like a Trello board export" — the JSON has no
listsandcardsarrays. You have probably exported a single card, or a whole workspace rather than one board. - "That does not look like a Jira CSV export — no 'Issue key' column" — the CSV came from somewhere else, or from a Jira export with the key column deselected.
- "That does not look like a ClickUp CSV export — no 'Task Name' column" — same, for ClickUp.
- "That file is not JSON or CSV" — the file is something else, or was saved with the wrong extension.
Doing it over the API#
The same thing, if you are scripting it:
POST /workspaces/{workspace_uuid}/imports
{
"source": "trello" | "jira" | "clickup" | "jira-csv" | "clickup-csv",
"export": <the parsed JSON object, or the CSV file's text>,
"name": "Optional board name"
}
201 with the new board on a first import, 200 with "reimported": true
when it updated one that already existed. See the
API reference.