Import data from Linear

Overview

The Linear importer copies one Linear team into one Shortcut Workflow. It brings over the team’s issues, projects, cycles, comments, and uploaded files, and it keeps who created, owned, and followed each issue.

Shortcut Admins run the import from Settings > Import / Sync. To bring over several Linear teams, run one import for each team.

Before you begin

Make sure that you have:

  • Admin access in Shortcut.
  • A Linear account that can see the team you want to import.
  • The Shortcut Workflow States you want to use. Create any new Workflow States before you start, so that every Linear state has a place to go.
  • Iterations turned on in Workspace Features, if you want to import Linear cycles. When Iterations are off, the importer skips cycles.

Start the import

  1. In Linear, open Settings > Security & access and create a personal API key.
  2. In Shortcut, go to Settings > Import / Sync.
  3. Under Auto-Import, select Linear.
  4. Paste the API key into API Key.
  5. In Team Key, type the prefix of the team’s issue IDs. For the issue ENG-123, the Team Key is ENG.
  6. Click Next. Shortcut downloads the team’s data from Linear.
  7. Choose the Shortcut Workflow for the imported Stories, then click Next: Map Workflow States.
  8. Map each Linear workflow state to a Shortcut Workflow State, then click Next: Map Users.
  9. Map each Linear user, then click Next to start the import.

Shortcut emails you when the import finishes. You can delete the API key in Linear after that.

Map Workflow States

Shortcut preselects a Workflow State for each Linear state, based on the Linear state’s type. You can change any of them before you continue.

Linear state typePreselected Shortcut Workflow State type
Triage, BacklogBacklog
UnstartedUnstarted
StartedStarted
Completed, Canceled, DuplicateDone

If the Workflow has no state of the matching type, Shortcut preselects its first Unstarted state.

Map users

For each Linear user, you can:

  • Map the user to an existing Shortcut member.
  • Invite the user to Shortcut.
  • Leave the user unmapped.

An unmapped user becomes a disabled placeholder member with their Linear name. Their Stories, Comments, and other activity stay attributed to them, and you can invite them after the import.

What gets imported from Linear

LinearShortcutNotes
Issue titleStory name
Issue descriptionStory descriptionMarkdown is kept. Shortcut adds a line that links back to the Linear issue.
Issue ID, for example ENG-123Story external IDThe Linear issue URL is also added as an external link.
Workflow stateWorkflow StateUses your mapping.
LabelsLabelsColors are kept. A label in a group is named Group: Label.
A label named Bug, Feature, or ChoreStory typeStories without one of these labels are Features.
AssigneeOwner
CreatorRequester
SubscribersFollowers
CommentsCommentsThreaded replies are flattened into one list, in the order they were posted.
EstimateEstimateRounded to a whole number of points.
Priority Urgent, High, Medium, LowPriority Highest, High, Medium, LowUses the built-in Priority field. If the field is off, or one of these values is renamed or turned off, those Stories get no Priority.
Due dateDeadline
Started, completed, and canceled datesStarted and completed datesA canceled date becomes the Story’s completed date.
ProjectsEpicsThe project lead becomes the Epic Owner, the project creator becomes the Requester, and project members become Followers. The start date becomes the planned start date, and the target date becomes the Epic deadline.
Project statusEpic stateBacklog and Planned become Unstarted. Started and Paused become Started. Completed and Canceled become Done.
An issue’s projectThe Story’s Epic
CyclesIterationsOnly when Iterations are on. Cycle dates use the Linear team’s timezone.
Sub-issuesSub-tasksSee Sub-issues.
Blocks, Duplicate, and Related relationsStory linksThese become “blocks”, “duplicates”, and “relates to” links.
Link attachments, such as GitHub pull requestsExternal links
Uploaded files and imagesFiles on the StoryCovers uploads in descriptions, comments, and attachments. Links in the text point at the copy in Shortcut.
Archived issuesStoriesArchived issues are imported like any other issue.

Shortcut does not import deleted issues, which are issues in Linear’s trash.

Sub-issues

Shortcut Sub-tasks have one level, and Linear sub-issues can nest. The importer places every sub-issue, at any depth, under its top-level issue.

Each Story can hold up to 100 Sub-tasks. When a top-level issue has more than 100 sub-issues, the importer adds the first 100 by creation date as Sub-tasks. Each remaining sub-issue stays a regular Story with a “relates to” link to the top-level Story.

If a sub-issue’s parent is in a different Linear team, the sub-issue is imported as a regular Story.

People, integrations, and bots

When an integration or a bot acted in Linear, the importer credits a placeholder member named after the bot, with ” (bot)” at the end. For example, a comment posted from Slack comes from Slack (bot). This covers Linear’s own onboarding issues, integrations such as Slack and GitHub, and Linear agents.

An issue that a bot created gets you, the Admin who runs the import, as its Requester.

What is not imported

The importer does not bring over:

  • Initiatives.
  • Project milestones and project updates.
  • Documents.
  • Customer requests.
  • Views.
  • Notifications.
  • Linear’s “similar issue” suggestions.

Epic descriptions keep their text, but links to files uploaded in Linear still point at Linear. The importer attaches files to Stories only.

Files larger than 50 MB are not copied, which is the same limit as for a file attached to a Story in Shortcut. Links to those files still point at Linear.

How long an import takes

The importer stays within the hourly limits that Linear sets for each API key, and it leaves part of each limit unused so that other tools on the same key keep working. When an import reaches the limit, it waits for the limit to reset and then continues. Large teams take longer to import.

Undo an import

To undo an import, go to the Past Imports tab in Settings > Import / Sync and click Undo next to the import. Undoing deletes every Story the import created, including Stories that someone edited after the import.

Run a second import

Each import creates new Stories. Importing the same Linear team again creates a duplicate of every Story. To start over, undo the first import, then import again.

In a second import into the same Workspace, each Linear user from an earlier import is already mapped to the same Shortcut member as before. You cannot change these mappings.