Copy a Workspace

Create a complete copy of an existing workspace with configurable options for what to include.


Copy a Workspace

The copy workspace mutation allows you to duplicate an existing workspace within the same organization or to a different organization. This is useful for creating workspace templates, setting up similar workspaces, or moving workspaces between organizations. The copy operation runs asynchronously to handle large workspaces efficiently.

Basic Example

mutation CopyProject {
  copyProject(
    input: {
      projectId: "proj_123abc"
      name: "New Project Copy"
      options: {
        todos: true
        todoLists: true
        people: true
      }
    }
  )
}

Advanced Example

mutation CopyProject {
  copyProject(
    input: {
      projectId: "proj_123abc"
      name: "Q2 Marketing Campaign"
      description: "Copy of Q1 campaign with updated timeline"
      imageURL: "https://example.com/campaign-logo.png"
      companyId: "comp_789xyz"
      options: {
        assignees: true
        automations: true
        checklists: true
        customFields: true
        discussions: false
        discussionComments: false
        dueDates: true
        files: true
        forms: true
        people: true
        projectUserRoles: true
        statusUpdates: false
        statusUpdateComments: false
        tags: true
        todoActions: true
        todoComments: false
        todoLists: true
        todos: true
      }
    }
  )
}

Input Parameters

CopyProjectInput

ParameterTypeRequiredDescription
projectIdString!✅ YesThe ID of the workspace to be copied
nameString!✅ YesThe name for the new workspace (max 50 characters)
descriptionStringNoThe description for the new workspace (max 500 characters)
imageURLStringNoThe image URL for the new workspace
companyIdStringNoThe ID of the organization where the new workspace should be created. If not provided, uses the source workspace’s organization
optionsCopyProjectOptionsInput!✅ YesConfiguration for what elements to copy

CopyProjectOptionsInput

ParameterTypeRequiredDescription
assigneesBooleanNoCopy task assignees (requires people: true)
automationsBooleanNoCopy workspace automations and workflows
checklistsBooleanNoCopy task checklists
customFieldsBooleanNoCopy custom field definitions and values
discussionsBooleanNoCopy workspace discussions
discussionCommentsBooleanNoCopy comments on discussions (requires discussions: true)
dueDatesBooleanNoCopy due dates on tasks
filesBooleanNoCopy file attachments
formsBooleanNoCopy workspace forms
peopleBooleanNoCopy workspace members
projectUserRolesBooleanNoCopy user roles and permissions (requires people: true)
statusUpdatesBooleanNoCopy workspace status updates
statusUpdateCommentsBooleanNoCopy comments on status updates (requires statusUpdates: true)
tagsBooleanNoCopy workspace tags
todoActionsBooleanNoCopy task actions/subtasks
todoCommentsBooleanNoCopy task comments
todoListsBooleanNoCopy task lists/sections
todosBooleanNoCopy tasks
coverConfigBooleanNoCopy todo cover image configuration

Response

The mutation returns a Boolean value:

  • true - The copy job has been successfully queued
  • false - The copy job could not be started

Checking Copy Status

Since copying is asynchronous, use the copyProjectStatus query to check progress:

Copy Status Fields

FieldTypeDescription
queuePositionIntPosition in the copy queue
totalQueuesIntTotal number of items in the queue
isActiveBooleanWhether the copy operation is currently active
oldProjectProjectThe source workspace being copied
newProjectNameStringName of the new workspace being created
isTemplateBooleanWhether this is copying as a template
oldCompanyCompanySource organization
newCompanyCompanyTarget organization
query CheckCopyStatus {
  copyProjectStatus {
    queuePosition
    totalQueues
    isActive
    oldProject {
      id
      name
    }
    newProjectName
    isTemplate
    oldCompany {
      id
      name
    }
    newCompany {
      id
      name
    }
  }
}

Required Permissions

To copy a workspace, you need appropriate permissions in both the source and target locations:

ScenarioRequired Permissions
Copy within same organizationOWNER, ADMIN, or MEMBER role in the source workspace
Copy to different organizationOWNER, ADMIN, or MEMBER role in the source workspace
• Must be a member of the target organization

The source workspace must be active (not archived) to be copied.

Error Responses

Workspace Not Found

{
  "errors": [{
    "message": "Record not found",
    "extensions": {
      "code": "PROJECT_NOT_FOUND"
    }
  }]
}

Occurs when the source workspace doesn’t exist or you lack access.

Organization Not Found

{
  "errors": [{
    "message": "Record not found",
    "extensions": {
      "code": "COMPANY_NOT_FOUND"
    }
  }]
}

Occurs when the target organization doesn’t exist or you lack access.

Workspace Too Large

{
  "errors": [{
    "message": "Project is too large to copy",
    "extensions": {
      "code": "CREATE_PROJECT_LIMIT"
    }
  }]
}

Occurs when the workspace has more than 250,000 tasks.

Copy Already In Progress

{
  "errors": [{
    "message": "Oops!"
  }]
}

Occurs when you already have a copy operation in progress.

Important Notes

  • Asynchronous Operation: The mutation queues a background job and returns immediately. Use copyProjectStatus to track progress.
  • One Copy at a Time: Only one copy operation per user can be active at any time.
  • Size Limitations: Workspaces with more than 250,000 tasks cannot be copied.
  • Logical Dependencies: Some options work best together:
    • assignees works with people: true (assignees won’t be copied without people)
    • discussionComments works with discussions: true
    • statusUpdateComments works with statusUpdates: true
    • projectUserRoles works with people: true
  • Name Processing: Workspace names are trimmed and any URLs are automatically removed.
  • Queue Priority: Enterprise customers receive higher priority in the copy queue.
  • Status Caching: Copy status is cached for 6 hours after completion.