• Administrator

Importing data

Import people, customers, projects, tracking targets, field-service sites and equipment, work-time history and opening balances from CSV files, and check how imports affect existing data.

Updated

You can import data into Kelomo from CSV files or paste rows straight from Excel. Every import follows the same four steps, whether it holds customers, people, sites or work-time history.

Start with a small sample and check the results before importing more. Imports have different effects: a register import adds and updates records, while a work-time import can replace a day’s existing entries.

Prepare the file

  • Save Excel spreadsheets as CSV, or copy the rows straight from Excel.
  • Use clear column headings: Kelomo matches columns to fields by them.
  • Import records before anything that refers to them: people before working time and balances, customers before projects, projects before tasks, and sites before equipment.
  • A file can hold up to 5,000 rows. Split a larger data set and import the parts one after another.
  • Keep the original file so you can correct rejected rows in it.

How an import works

Open the import with Import from file in the register or on the settings page. The steps are shown at the top of the page.

  1. Source. Choose a file, drag it onto the page or paste the contents into the text box. Say whether the first row is a header row. Kelomo recognises semicolons, commas and tabs, so rows copied from Excel work as they are. A separator or line break inside quotes is read as part of the field. If the file was saved in Excel’s older character encoding, Kelomo reads it and asks you to check accented letters. You can choose the same file again after correcting it.
  2. Mapping. Kelomo suggests a column for each field and shows whether it matched the heading exactly, loosely or not at all. Change a column where needed or leave it out. Match columns again restores the suggestions based on the headings.
  3. Check. The server goes through the rows without saving anything and reports how many rows are ready and how many errors it found. Show errors only, correct them in the file and choose the file again.
  4. Import n rows. Confirm the import. Rows with errors are left out. The results show which rows were created, updated, skipped or rejected. A row that passed the check can still be left out if the data changed in the meantime.

Every import appears in Import history with its file name, row count and result. Undo import is available for work-time and balance imports. A register import cannot be undone, because other records may already refer to the imported rows. Correct register records by importing a corrected file or by editing them in the register.

Customers, projects, tasks, leads and contacts

Open Import from file from Projects, the customer register or the lead list and choose what to import. You need organisation administration permission and access to the feature associated with the records you are importing.

Customers require a name and code. Projects and contacts can refer to a customer by code or name. If you enable automatic creation of missing customers, check spelling carefully: a wrong name may create a new customer instead of linking to an existing one.

Duplicate leads are identified by email address or a matching combination of title and the organisation name recorded on the lead. Duplicate contacts are identified by email address within the same customer. These checks do not catch every possible duplicate.

The same file can be run again: a customer or project recognised by its code is skipped, and earlier data stays as it is.

Customers and projects from another system

When the customer register or the projects live elsewhere, add the Source and Identifier columns to the file and choose Update existing records (continuous sync) in the mapping step. The source names the system and the identifier its own key — for example hubspot_acme_company and the customer number. The next run recognises the row by that pair: the code stays, the other fields follow the source, the customer’s Active column retires the account and the project’s Status column closes or reopens the project.

The check states how many rows would be created, updated and left unchanged. If the code already belongs to a row created by hand in Kelomo, the Link by code when a row matches a record created here option attaches the source and identifier to that row; otherwise the row is reported as an error, so that one source’s account cannot move to another.

An imported customer’s source appears in the customer’s basic details and a project’s in the project settings.

Tracking targets

Open the tracking level under Settings → Projects → Tracking levels and choose Import from file in the level’s action menu. The level comes from the page, so the file holds only the target’s own columns: code, name, parent, source, identifier and active. The code is required, the rest are optional. More about the targets in Tracking levels and tracking targets.

The check groups the rows: new is a target that would be created, update changes a name or a state, unchanged is a row that matches a stored target already, and error says what the row needs.

The source and the identifier say which system the target came from and by which key — jira_acme_issue and the issue number, for instance. The next import recognises the target by that same pair: the code stays, the name and the state follow the source, and a target closed in the source is taken out of use when the row’s Active column says closed, done or no. The same file can therefore be imported again every month.

If the code already belongs to a target added by hand, the check offers a choice that links the source and the identifier to that target. The fixed project level is filled from the project register, so no import is offered there.

Field-service sites and equipment

Open Field service → Sites or Equipment and choose Import from file in the action menu. Import the sites first and the equipment after them, because each equipment row names its site by the site’s code.

  • Sites: code, name, customer code, address and coordinates. The customer code and the name are required, and the customer must already exist in Kelomo.
  • Equipment: code, name, site code, equipment type, serial number, installation date and parent unit. The site code and the name are required. You can also import details such as manufacturer, model, service interval and refrigerant.

The check shows what the run would do before anything is saved. If the same code appears twice in the file, those rows are rejected. A name that closely resembles an existing site or piece of equipment raises a warning, but the row can still be imported. Alarm and gate codes and the key safe location are added to each site by hand.

People

Open People → Import from file. If you have access to HR bulk actions, the import is also on the Bulk actions page.

Basic fields are first names, last name, email and role. A preferred name can be given in a column of its own. A single Name column works too: its last word is read as the last name, and the check step shows the split before the import. With a header row, you can also import details such as unit, work-time model, employment start and end dates, employment type, job title and language. Units and work-time models must already exist in Kelomo under the names given in the file.

Review the licence selections before importing. Confirm your own email address before sending invitations. New app users receive an email link to set their own password. If clocking is enabled, you can also import device users without an email address. They do not receive an email invitation.

The results show invited, created, skipped and invalid rows. Existing members are skipped; this import does not update their details.

Work-time history and absences

Open Settings → Organisation → Imports → Working time import. You need permission to manage the working time of the people in the file.

In the mapping step, match the employee, date and entry type, plus start and end times or duration for work-time rows. The check shows how people were identified, the entry types, dates and times, and lists work-time rows and absences separately.

People are identified by email address or exact name. Dates can use formats such as 2026-04-01 or 1.4.2026. Enter working time as start and end times, such as 8:00 and 16:00, or as a duration such as 7:30 or 7.5. An end time earlier than the start is treated as the following day. A day can have up to 20 work-time entries.

Check the effects before importing

Work-time rows are saved as drafts and replace the person’s existing work-time entries for that day. The import does not simply append rows. It does not clear the day’s breaks. Work-time rows cannot be imported into a confirmed day or a closed payroll period.

Absence rows work differently: the import grants the absence and may create a confirmed day from it. Do not treat the whole file as work-time drafts.

If you correct the file and import it again, check what has already been saved. Include every work-time row you want to keep for a day you are correcting. Importing only the missing row can replace the rows already saved.

What does Undo import do?

Select the import in Import history and choose Undo import. This removes the import’s identifiable work-time rows from draft days that can still be edited. Rows edited later, confirmed days and days in closed periods may remain unchanged. Imported absences are cancelled separately under the rules for handling absences. Always review the undo results.

Undoing an import does not restore the day’s pre-import entries. It is not a backup restore.

Opening balances

Open Settings → Organisation → Imports → Balance import. This requires payroll permission.

Check the automatic column mapping, or choose a suitable preset. Required fields are employee, balance account or type, value and effective date.

  • Balance account values are in hours, such as 7:30 or 7.5. Negative opening balances are also allowed.
  • Leave type values are in days, −365…365. A negative value is leave taken in advance.
  • Leave year is the year the days are taken in, written 2026–2027 (also 2026-2027 or just 2026). Left empty, a row belongs to the leave year running on its effective date. The check shows each row’s leave year.
  • You can create missing balance accounts listed in the check. Check the account type before creating it and run the check again afterwards.

The import adds balance transactions on the given effective dates. Check previous opening balances before importing again: a new import does not correct an earlier balance.

Undoing a balance import creates offsetting transactions that cancel its effect. The original transactions remain in the history.

If rows are rejected, see Rejected import rows.

Was this guide helpful?

Guides on this topic

Related