How to Import A CSV File Into UpStream

Steve

Steve

Last updated on Nov 7, 2026

THIS IS A BETA FEATURE. WE ARE STILL DEVELOPING IT, AND THIS DOCUMENTATION IS PRELIMINARY. PLEASE USE CAREFULLY ON A NON-PRODUCTION SERVER

UpStream allows you to import your data from almost any major project management software using a CSV file. In this article we will look at how to use the UpStream import tool in order to import your data.

Importing Data From Monday, Asana, or Wrike

If you use a common project management tool, you can follow our software specific guides here:

Importing Data From Other Project Management Tools

If you are not using one of the above tools, you can probably still import your data into UpStream, but you will have to tell UpStream which columns in the CSV map to which fields in UpStream.

Preparing Your CSV

When importing data, UpStream looks at the first line of the CSV in order to determine where each column goes.

In order to tell UpStream how to import the data, you will have to add or change the header field in your CSV so that it contains the proper field information for UpStream.

Here is an example CSV:

project.id project.status project.endDate task.title task.endDate
1 In Progress 2020-12-22 Task A 2020-12-25
2 Overdue 2020-12-26 Task B 2020-12-29

You will notice that there is a header for each column in the first row. Each column header has the form object.field

The options for column headers are below.

Using CSV to Create or Edit

The CSV can be used either to create or edit projects, files, bugs, tasks, or milestones.

If the importer finds a header with an ID (like project.id in the example above), it will try to load the project for editing. If it can’t find the project with the given ID, it will stop and show an error message.

If the importer finds no header with an ID for an object, but does find a title, it will try to load the object by that title. If the object with that title doesn’t exist, it will create the object. You can see this in the example below:

task.title task.endDate task.assignedTo:byEmail
Task A 2020-02-03 123456 davis@abcdefg.com

The example above will look for a task with the title “Task A”. If it finds the task, it will load it for editing. If it doesn’t find it, it will create a task with the title “Task A”, and set the end date and assigned to fields.

You will notice that there’s a column with no header. UpStream will ignore columns with no headers, so in the above example, “123456” won’t be imported.

Project FieldsFieldDescriptionData Typeproject.idThis is the ID of the project (if this is included in the CSV, the ID must already have been entered in UpStream, otherwise you will receive an error). Use this in order to tell UpStream to update or add to an already existing project.Integer. You can find this in the WordPress admin dashboard in the table under Projects.project.titleThe title of the project. If this exact title was already entered into UpStream, the importer will modify the existing project. If the project with this title is not already in UpStream, a new project will be created.Textproject.descriptionThe description of the project.Textproject.statusThe status of the project. Instructions on how to find this are below.Text project.categoryIdsThe IDs of the categories of this project. project.assignedToThe WordPress user ID of the owner of the project.Integer project.assignedTo:byUsernameThe WordPress username of the owner of the project.Text project.assignedTo:byEmailThe email of the WordPress user to set as the owner of the project.Text project.startDateThe start date of the project.Date formatted as YYYY-MM-DD project.endDateThe end date of the project.Date formatted as YYYY-MM-DD project.clientIdThe client ID of the client to attach this project to. IntegerTask FieldsFieldDescriptionRequired Data Typetask.idThis is the ID of the task (if this is included in the CSV, the ID must already have been entered in UpStream, otherwise you will receive an error). Use this in order to tell UpStream to update or add to an already existing task.

**If you use this field, you don’t have to have a project.id or project.title column in your CSV. UpStream will find the task by ID.**Alphanumeric IDtask.titleThe title of the task.Texttask.notesThe notes for the task.Texttask.statusThe status of the task. You can find instructions below.Texttask.assignedToThe WordPress user ID of the owner of the task.Integertask.assignedTo:byUsernameThe WordPress username of the owner of the task.Texttask.assignedTo:byEmailThe email of the WordPress user to set as the owner of the task.Texttask.milestoneIdThe ID of the milestone this task is attached to.Integertask.startDateThe start date of the task.Date formatted as YYYY-MM-DDtask.endDateThe end date of the task. Date formatted as YYYY-MM-DDtask.progressThe numerical progress percentage. UpStream only accepts integer multiples of 5 between 0 and 100. (Example: 0, 5, 10, 15, …)IntegerMilestone FieldsFieldDescriptionRequired Data Typemilestone.idThe ID of the milestone. You can find this next to the milestone in UpStream -> Milestones.Integermilestone.titleThe title of the milestone.Textmilestone.notesThe notes for the milestone.Textmilestone.colorThe color of the milestone.Hexadecimal Color Valuemilestone.categoryIdsThe category IDs of the milestone.milestone.assignedToThe WordPress user ID of the owner of the milestone.Integermilestone.assignedTo:byUsernameThe WordPress username of the owner of the milestone.Textmilestone.assignedTo:byEmailThe email of the WordPress user to set as the owner of the milestone.Textmilestone.startDateThe start date of the milestone.Date formatted as YYYY-MM-DDmilestone.endDateThe end date of the milestone.Date formatted as YYYY-MM-DDFile FieldsFieldDescriptionRequired Data Typefile.id This is the ID of the file (if this is included in the CSV, the ID must already have been entered in UpStream, otherwise you will receive an error). Use this in order to tell UpStream to update or add to an already existing file.

**If you use this field, you don’t have to have a project.id or project.title column in your CSV. UpStream will find the file by ID.**Alphanumeric IDfile.titleThe title of the file.Textfile.descriptionThe description of the file.Textfile.assignedToThe WordPress user ID of the owner of the file.Integerfile.assignedTo:byUsernameThe WordPress username of the owner of the file.Textfile.assignedTo:byEmailThe email of the WordPress user to set as the owner of the file.Textfile.fileIdThe WordPress media ID of the file. You will need to upload the file separately.IntegerBug FieldsFieldDescriptionRequired Data Typebug.id This is the ID of the bug (if this is included in the CSV, the ID must already have been entered in UpStream, otherwise you will receive an error). Use this in order to tell UpStream to update or add to an already existing bug.

**If you use this field, you don’t have to have a project.id or project.title column in your CSV. UpStream will find the bug by ID.**Alphanumeric IDbug.titleThe title of the bug.Textbug.descriptionThe description of the bug.Textbug.dueDate The due date of the bug. Date formatted as YYYY-MM-DDbug.severityThe severity of the bug. Follow the instructions for statuses.Textbug.statusThe status of the bug. You can find the status using the instructions below.Textbug.assignedToThe WordPress user ID of the owner of the bug.Integerbug.assignedTo:byUsernameThe WordPress username of the owner of the bug.Textbug.assignedTo:byEmailThe email of the WordPress user to set as the owner of the bug.TextfileIdThe WordPress media ID of the attached file.IntegerCustom FieldsTo reference custom fields in your CSV, you will need to supply the slug for each field as the field name in the CSV header. You can find the slug in the custom fields list under Projects -> Custom Fields in your WordPress admin dashboard.imageUse the slug for a custom field as its field name in your XMLIn the screenshot above, to reference the first field (“Country check”) for a task, you would enter task.country-check as the header of a column in your CSV.DropdownFor dropdown custom fields, you must enter the value in your CSV, as opposed to the label. You can see the correct field in the image below.imageimageNote that you can set the label and value to the same thing when you create your dropdown Custom Field to help with importing.Country FieldsWhen you create a country field in WPForms, you will need to provide the 3 letter country code as the value for the form — not the country name. You can find the 3 letter country code here.User FieldsUser custom fields work a lot like assignedToabove, but you can only use user IDs — not emails or user logins.Field Specific NotesStatusesThe statuses you enter in your CSV must match the ones entered in your settings exactly. Otherwise, you will receive an error.To change the status options for projects, go to your WordPress admin dashboard, and click UpStream -> Projects (for projects), UpStream -> Tasks (for tasks), or UpStream -> Bugs for bugs.imageimage