---
title: Importing from Trello, Jira and ClickUp
description: Turn an export from another tool into a Laver board, what comes across, and what re-importing does.
section: Boards and tickets
order: 6
---

# 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 `lists`
  and `cards` arrays. 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](/docs/agents-and-api/api-reference).
