3.7 - CSV Importer: How can I import existing databases into Timly?

The Timly CSV Importer is a powerful tool designed to quickly and efficiently upload data from a CSV file in just a few clicks. It is particularly useful when importing large volumes of data, especially during the initial setup of your Timly account. The CSV Importer helps you save valuable time when setting up and managing your inventory.

In this article, you will find a detailed step-by-step guide, a practical example, a FAQ, and all the information you need to complete your import on your own. 

 

⚙️ Steps


|Step 0: Navigate To The CSV Importer
 

Select the type of data you want to import and upload the corresponding file.

  • To access the CSV Importer, click on "Settings," then "CSV Data Import."
    Timly’s CSV Importer allows you to perform various types of imports. You can choose to import data in order to create or update the following:

    - Items

    - People

    - Places

    - Assignments and Return
    - Organisational Units

    - Tickets  
     

Note:

The available import types in the CSV Importer depend on your contracted services with Timly.

💡 To perform your import, you can either use your own CSV file or download our pre-formatted CSV template.  
Please note that each pre-formatted template is unique, as it includes:
- Timly’s default attributes (e.g. “item_id”, “item_name”, etc.)
- Your custom attributes 

 

|Step 1: Select and Upload Data
 



Step 1 – Summary:

Download and upload your CSV file.


Step 1 – Guide:

  • Optional: Download a pre-formatted CSV template.
  • Open your file in Excel.
  • Fill in the relevant data.
  • Save the file in UTF-8 format.
  • Upload your file into Timly’s CSV Importer.
  • Optional: To add an additional file, click "Upload another."
  • Click "Next" to proceed.

 

|Step 2: Mapping




Step 2 – Summary:

Map your data.  


Step 2 – Guide: 

  1. 
Mapping Columns

    All column headers from your file are listed under "Headers (CSV)."
Next to each header, you'll see a "Timly Attributes" column, where you can define how each column maps to the corresponding attribute in Timly.

     
  2. Automatic Mapping:

    If you use the provided template, mapping will be done automatically based on the default names. However, it is necessary to explicitly pair each column in your CSV.
     
  3. Excluding Columns:

    If you do not wish to import a specific column, you can either delete it from your CSV or select the option “Do not import.”
     
  4. Sample Data:
Under the "Samples" column, you can view the first three rows of each column to get an overview of the data present in that column.
     
  • Additional Options:
    • Toggles to choose whether to create, update, or perform both actions.
    • An advanced option to select the type of separator used in your file (default is “;”).
    • An option to create new attributes: By clicking on “+ Create new attributes,” you can add new attributes that will be incorporated into the system. For instance, if you create an attribute called “Brand,” it will be added to all relevant categories during import.


|Step 3: Preview



Step 3 – Summary:

Get a preview of your import and identify any errors that need to be corrected.

Step 3 – Guide:

  1. Overview of Outcomes

    At this stage, you will see a summary that includes:
    The number of rows processed from your file
    The number of records that will be created and/or updated once the import is completed
    The number of errors detected, if your file contains blocking issues
     
  2. Error Details

    Below the summary, detailed error messages will be displayed — including the type of error and the specific rows concerned — allowing you to correct them before proceeding with the import. You can go back to steps 1 or 2 to correct any errors. Records will only be created or updated once you click the “Import” button. This action is irreversible and cannot be undone — a confirmation prompt will be displayed before proceeding.

 

|Step 4: Results
 


 

Step 4 – Summary:
Get a detailed summary of your import.  



Step 4 – Guide:    

  • Confirmation Information:
This page contains similar information as the preview but confirms that the import was successful.

  • PDF Report:
You will have the option to download a PDF report that includes all information displayed in this step.
  • Considerations: If this is your first import, it is highly recommended to conduct a trial import with just 1 or 2 resources (items or places). We encourage using the template provided by Timly, which will also include your custom attributes.

 

✅ Import Sample


Would you like to see a concrete example of a CSV import?
This section walks you through how to import a sample CSV file (containing 2 rows) into Timly.

Here are the steps to follow:

  • Click on “Settings,” then on “CSV data import.”
  • Select the type of import (in this example: “Items”).
  • Download the pre-formatted CSV template.
  • Open the template in Excel.
  • Fill in the required columns: “Root category,” “Name”, and “Location" (Org. Unit).
    • Root category: This refers to the category under which the item will be created (one category per row). To define the target category, enter the name of the Timly category — e.g., “IT assets”.
💡 You can identify the category either by its name (e.g., “IT assets”) or its ID number (e.g., “42640”). To find a category ID, simply hover over the category name.
    • Name: This is the name you wish to assign to your item
    • Location (Organisational Unit): Required only if your Timly account includes multiple units. The item will be created under the specified organisational unit (one per row).
  • Upload your completed CSV file (ensure it is saved in UTF-8 format).
  • Click “Next.”
  • Choose whether you want to create and/or update items.
  • Map the attributes. If you don’t want to import a specific column, select “Do not import” from the dropdown menu.
  • Click “Next."
  • Review your import.
  • If no errors are detected, click “Import.”
  • Optionally, download the PDF summary of your import.

📥 Types of import

Each import is introducing new items to your Timly system, and each type of item has different requirements. For example, to create new items, some attributes are mandatory. However, to update, other attributes are required. To help you navigate the process, we have created a list of the system attributes that you can find and how to use them in the process

Items

🆕 To create new items: The following attributes are necessary:

  • Main category
  • Name
  • Org. Unit* (only if applicable)


🔄 To update existing items: One of the following attributes is required:

  • item_id
  • ref_no
  • barcode

The Org. Unit is necessary only if you have more than one.
 

ATTRIBUTE NAMETYPEREQUIRED?INFORMATION
item_idIntegerTo updateThis ID is unique and is automatically generated by the system.
ref_noStringTo updateThis ID is unique and it is generated by you , the user. You can use it as a personal identification number, or if you are coming from another system (for example SAP). When you create an item, you can specify a ref_no, which will help you update in the future.
item_nameStringTo create / To updateIt represents the item name. It is necessary to create an item, and it can be used to update an item, however, since it is not a unique attribute, it is possible to have 2 items with the same name, which will cause a problem in the update. It is recommended to use other identifier to update.
barcodeStringTo updateThe barcodes are unique. Hence, it can be used to update an existing item.
org_unit_nicknameStringTo create

*Only relevant if you have more than one Org. Unit in your Timly contract.

It is necessary to specify the Org. Unit of the item in order to create it.

categoryStringTo createSpecifies which category the item belongs to. If the value introduced does not exist in Timly, Timly will create the new category and the attributes that this item has. It is really helpful to create your first structure in Timly.
subcategoryStringTo createSpecifies the subcategory of the item. Depending on the rules on your account, if you do not want to make subcategories mandatory, it will be saved as “Uncategorized” if there is no value in subcategory.
item_typeString (Limited to defined types)Not required

Normal, blueprint, twin, stock item.

If left empty, it is assumed “Normal” item.

ResponsibleString/IntegerNot requiredSpecifies the person responsible for the item. Can be specified as Surname, Name - Name Surname - or by using the person_id
blueprint_nameStringNot required 
(Only if you want to create a twin)
If you want to create a twin item, it is necessary to specify which blueprint it is attached to. You can do that by including either the blueprint_name, the blueprint_id or the blueprint_ref_no. Be aware that the blueprint_name is not unique, in case of multiple equal names, the import will fail.
blueprint_idIntegerNot required 
(Only if you want to create a twin)
If you want to create a twin item, it is necessary to specify which blueprint it is attached to. You can do that by including either the blueprint_name, the blueprint_id or the blueprint_ref_no.
blueprint_ref_noStringNot required 
(Only if you want to create a twin)
If you want to create a twin item, it is necessary to specify which blueprint it is attached to. You can do that by including either the blueprint_name, the blueprint_id or the blueprint_ref_no.
StatusString (Limited to defined types)Not required If not filled, the status will be assumed “Active”. The possible states are, Active, Inactive, Defective, Missing, and custom status introduced by the user.
remarksStringNot required Comments that you would like to add to the item.
price_without_vatDoubleNot required The price of the item before taxes
price_with_vatDoubleNot required The price of the item after taxes
vatDoubleNot required The imposed taxes of the item. If the price without vat and with vat has been introduced, vat is calculated automatically.
purchase_dateDateNot required Indicates the date when the item was bought. Recommended format: dd.mm.yyyy
initial_amountDoubleNot required 
(Only if you want to create a stock item)
Determines the original quantity of a stock.
minimum_amountDoubleNot required Set a quantity to trigger an alert. If the stock falls under that quantity, the corresponding user will receive an email.
consumableString (Limited to defined types)Not required Can be filled with a yes/no. It will determine if the stock item can be consumed. (Is depleted when used).
assigned_consumableString (Limited to defined types)Not required Can be filled with a yes/no. It will determine if the stock item is consumed upon assignment.
custom_attributesDepends on the attributeNot required There will be one column for each of your existing custom_attributes that you want to update.


Persons

 

ATTRIBUTE NAMETYPEREQUIRED?INFORMATION
person_idIntegerTo updateThis ID is unique and is automatically generated by the system.
ref_noStringTo updateThis ID is unique and it is generated by you - the user. You can use it as a personal identification number, or if you are coming from another system (for example SAP). When you create a person, you can specify a ref_no, which will help you update in the future.
person_nameStringTo create / To updateThe name of the person. In order to update, it is required to also put the surname. In case that it is not unique the import would fail.
person_surnameStringTo create / To updateThe surname of the person. In order to update, it is required to also put the name. In case that it is not unique the import would fail.
barcodeStringTo updateThe barcodes are unique. Hence, it can be used to update an existing item.
org_unit_nicknameStringTo create

Only relevant if you have more than one Org Unit in your Timly contract.

It is necessary to specify the Org Unit of the item in order to create it.

person_typeStringTo createSpecifies which category the person belongs to. Only relevant if you have more than one category of people.
sexString (Limited to defined types)Not requiredMale/Female.
pers_noStringTo updateIt can be used to identify a person. However, it is not unique, so it can cause the update to fail if there are more than one person with the same pers_no.
date_of_birthDateNot requiredFormat recommended: “dd.mm.yyyy”
start_dateDateNot requiredFormat recommended: “dd.mm.yyyy”. Indicates the first working day of the person.
last_dateDateNot requiredFormat recommended: “dd.mm.yyyy”. Indicates the last working day of the person.
manager_idIntegerNot requiredIt would the person_id of the manager. Indicates who is the manager of this person.
manager_first_nameStringNot requiredIndicates the first name of the manager, it requires the last in order to update. If it is not unique, it will cause an error, and it is recommended to use the person_id.
manager_last_nameStringNot requiredIndicates the last name of the manager, it requires the name in order to update. If it is not unique, it will cause an error, and it is recommended to use the person_id.
custom_attributesDepends on the attribute There are custom attributes that depend on on how they are defined by the user.


Assignments and Returns

With this import, you can create new records of assignments or returns, as well as schedules. In Timly, you can assign items to persons or places. Hence, in order to make an import, if you want to create a record or import items, it is necessary to specify which item is being updated, either by the item_id, the item_ref_no, or the item_name. Additionally, it is necessary to use an identifier for the resource to which it is being assigned/returned, hence, it will be necessary to use either the resource_id or the resource_ref_no, where the resource could be a person, a place, or a container_item.

 

ATTRIBUTE NAMETYPEREQUIRED?INFORMATION
item_idIntegerTo create / To updateThis ID is unique and is automatically generated by the system.
item_ref_noStringTo create / To updateThis ID is unique and it is generated by you - the user. You can use it as a personal identification number, or if you are coming from another system (for example SAP). When you create a person, you can specify a ref_no, which will help you update in the future.
item_nameStringTo create / To updateIt represents the item name, since it is not a unique attribute, it is possible to have 2 items with the same name - which will cause a problem in the update. It is recommended to use other identifiers to update.
container_idIntegerTo create / To updateThis ID is unique and is automatically generated by the system.
container_ref_noStringTo create / To updateThis ID is unique and is generated by you - the user. You can use it as a personal identification number, or if you are coming from another system (for example SAP). When you create a person, you can specify a ref_no, which will help you update in the future.
container_nameStringTo create / To updateIt represents the container name, since it is not a unique attribute, it is possible to have 2 items with the same name - which will cause a problem in the update. It is recommended to use other identifiers to update.
container_item_idIntegerTo create / To updateThis ID is unique and is automatically generated by the system.
container_item_ref_noStringTo create / To updateThis ID is unique and is generated by you - the user. You can use it as a personal identification number, or if you are coming from another system (for example SAP). When you create a person, you can specify a ref_no, which will help you update in the future.
person_idIntegerTo create / To updateThis ID is unique and is automatically generated by the system.
person_ref_noStringTo create / To updateThis ID is unique and is generated by you, the user. You can use it as a personal identification number, or if you are coming from another system (for example SAP). When you create a person, you can specify a ref_no, which will help you update in the future.
person_nameStringTo create / To updateIndicates the first name of the person to be assigned to, it requires the name in order to update. In case of not being unique, it will cause an error and it is recommended to use the person_id.
person_surnameStringTo create / To updateIndicates the last name of the person to be assigned to, it requires the name in order to update. In case of not being unique, it will cause an error and it is recommended to use the person_id.
quantityDoubleTo create / To updateNecessary in case of a stock item.
assign_dateDateTo create / To update

Format recommended: “dd.mm.yyyy”

It is mandatory to put either assign/return or the scheduled date.

return_dateDateTo create / To update

Format recommended: “dd.mm.yyyy”

It is mandatory to put either assign/return the schedule. It is however possible to not have a return date.

schedule_assign_dateDateTo create / To update

Format recommended: “dd.mm.yyyy”

It is mandatory to put either assign/return or the scheduled date.

schedule_return_dateDateTo create / To update

Format recommended: “dd.mm.yyyy”

It is mandatory to put either assign/return or the scheduled date. It is however possible to not have a scheduled return date.

remarksStringNot requiredComments for the assignment/schedule.

 

|Places

 

💡 Note
What we now call "places" were previously referred to as "containers".

 

ATTRIBUTE NAMETYPEREQUIRED?INFORMATION
container_idIntegerTo updateThis ID is unique and is automatically generated by the system.
ref_noStringTo updateThis ID is unique and is generated by you, the user. You can use it as a personal identification number, or if you are coming from another system (for example SAP). When you create an org_unit, you can specify a ref_no, which will help you update in the future.
container_nameStringTo create /To updateThe name of the container.
barcodeStringTo updateThe barcodes are unique. Hence, it can be used to update an existing item.
org_unit_nicknameStringTo create

Only relevant if you have more than one Org. Unit in your Timly contract.

It is necessary to specify the Org. Unit of the item in order to create it.

container_typeStringTo createSpecifies which container_type the container belongs to.
subcontainerStringTo createSpecifies which subcontainer the person belongs to. Depending on the rules on your account, if you do not want to make subcontainers mandatory, it will be saved as “Uncategorized” if there is no value in subcontainer.
start_dateDateNot requiredFormat recommended: “dd.mm.yyyy”. Indicates the first working day of the person.
last_dateDateNot requiredFormat recommended: “dd.mm.yyyy”. Indicates the last working day of the person.
activeString (Limited to defined types)Not requiredLimited to Active/Inactive
Custom attributes  There are custom attributes that depend on on how they are defined by the user.

 

Organisational units
 

ATTRIBUTE NAMETYPEREQUIRED?INFORMATION
org_unit_idIntegerTo updateThis ID is unique and is automatically generated by the system.
ref_noStringTo updateThis ID is unique and is generated by you, the user. You can use it as a personal identification number, or if you are coming from another system (for example SAP). When you create a container, you can specify a ref_no, which will help you update in the future.
org_unit_nameStringTo create / To updateThe name of the container.
Custom attributes  There are custom attributes that depend on on how they are defined by the user.

Tickets

 

ATTRIBUTE NAMETYPEREQUIRED?INFORMATION
idIntegerTo updateThis ID is unique and is automatically generated by the system.
nameStringTo create / Not sureThe name of the ticket.
ticket_typeIntegerTo create / Not sureID of the ticket type of the ticket.
statusStringTo create / Not sureNeeds to exactly match one of the statuses in Timly, i.e. To do, In progress, Done
execution_dateDateTo create / Not sureFormat recommended: “dd.mm.yyyy”
due_onDateTo create / Not sure

Format recommended: “dd.mm.yyyy”

Required if the due date feature is active on the ticket type.

locationIntegerTo create / Not sureID of the org. unit of the ticket
watcher_idIntegerNot requiredAdd user IDs to make them watch the ticket
responsible_idIntegerNot requiredAdd user IDs to assign the ticket to them
root_categoryIntegerNot requiredAdd a category ID to add it to the ticket
responsible_first_nameStringNot requiredAdd an assignee via first name / last name
responsible_last_nameStringNot requiredAdd an assignee via first name / last name
watcher_first_nameStringNot requiredAdd an assignee via first name / last name
watcher_last_nameStringNot requiredAdd an assignee via first name / last name
item_idIntegerNot requiredAdd items to this ticket via item ID
item_ref_noStringNot requiredAdd items to this ticket via item ref_no
item_barcodeStringNot requiredAdd items to this ticket via item barcode

 

💡 FAQ
 

How should CSV files be formatted?

Standard CSV file conventions apply. The records to be inserted must be listed line by line with a delimiter between attributes. Acceptable delimiters are semicolon, comma, TAB, and the vertical bar. Additionally, a header with the respective column names must be present. Empty column contents are allowed; in this case, the attribute will not be populated in the object.

 

Why is mapping so important?

Timly interprets the content separated by delimiters as individual attributes. These are the characteristics and additional information of each object. Therefore, you must specify for each column which attribute in the respective Timly category it corresponds to. If you want to import content that cannot be mapped to any existing attribute, you can create new attributes in step 2 of the import process.


Where can I find possible attributes for CSV import?

After opening the CSV Import function, the possible attribute names for the category to be imported are displayed in an overview below the selection area of the input mask. You can also download sample files with prefilled attribute headers in step 1.


Is it possible to import from other data formats?

CSV is both simple and universal, as many applications support it and it can be edited with basic tools. Additionally, many other file formats can easily be converted into CSV files. Therefore, Timly currently focuses on CSV import. If you need to import from other formats, feel free to contact our support team for a custom solution.

 

I receive an error message during import – what could be the reason?

In most cases, this is due to an incorrectly formatted CSV file. The file must meet the specifications for automated processing precisely in order to avoid generating inconsistent data sets. The most common error is the absence of one of the required attribute categories.

 

Can I update or supplement existing records?

It is also possible to supplement existing records. To do this, select the "Update existing" option in step 2 during the attribute mapping. The easiest way to update is to first export data from Timly using the "Inventory CSV" option for the items you want to update. In this case, the tables are already correctly formatted, and you can easily add the desired records.

Note: Before importing, it may be necessary to delete the row above the attribute names, as translations are automatically included there.

 

Can I undo imports?
Except for the "Assignment and Returns" category, it is not possible to undo imports. Therefore, CSV import files should be carefully checked. Additionally, control mechanisms in steps 3 and 4 of the import process will display errors in the input file. If you have any questions, please contact our support team in advance. If an incorrect import occurs, please retain the import file so our support team can review it.

Did you find this article useful?