Creating and importing jobs
Add jobs one at a time or several in a grid, import thousands from a spreadsheet, and copy or change many at once.
Jobs arrive one at a time from a phone call, or hundreds at a time from a client's spreadsheet. Maliru handles both, and every job lands in a workstream with a status from that workstream's own list.
Adding a job
Choose Add job in the Jobs header (on a phone, the + button). The form asks for:
- Title — required. A workstream can rename it, for example to Address or Permit ref.
- Client — pick one, or leave it as No client. Only active clients are offered.
- Workstream — the job type it belongs to.
- Description — optional.
- Client PO — "Their order number, quoted on the invoice (optional)". Every invoice built from this job's measures quotes it as Your ref.
- Status — required. A new job starts with none chosen, and saving without one says "Choose a status for the job."
- Assignee — the one office person who owns the job. This is not the crew; see Jobs, workstreams and statuses.
- {Workstream} fields — one input for each custom field the workstream carries.
- Required credentials — tick the credentials this work demands. "Workers without a valid one are flagged when assigned." How hard each one bites is set on the credential type; see Eligibility.

Scheduled dates and the team are not typed here. They come from published work in the Schedule, including shared route allocations. When you edit a job that has no published work yet, a Schedule section lets you type a Scheduled start, Scheduled end and Team by hand; once published work drives them, the fields lock and read "Managed in Schedule".
Adding several jobs at once
For a handful of jobs that aren't in a spreadsheet, choose Add multiple in the Jobs header (on a phone, the Add multiple jobs icon). One batch goes into one workstream: on the All tab, Maliru first asks Which workstream?
Add multiple jobs opens a grid with a row for each job (on a phone, a form for each job). A row has the title, Client, Status (required), Assignee, Description, Client PO, Notes and the workstream's own fields.
- Add row adds another job. Copy row adds a copy underneath with the same details and an empty title, ready for the next reference. Remove row takes one out.
- Rows left blank are ignored. The foot of the grid counts how many jobs will be created and how many are saved.
- Choose Create jobs. Every filled-in row is checked first, and a row with a problem says what it is, for example "Choose a status."
- If some rows fail, the ones that saved are locked and the rest keep their values and the reason. Fix them and choose Create jobs again: saved rows are skipped. If a save couldn't be confirmed, Maliru says "Could not confirm the save. Check Jobs before retrying.", so you don't create the same job twice.
File fields aren't in the grid: "Attach files from each job after saving."
Importing from a spreadsheet
The Import button (desktop only) opens Import jobs: "Upload a spreadsheet or paste rows to prepare your import."
Choose Upload file to load an .xlsx or .csv (or drag the file in), or Paste rows to paste straight from Excel. Keep the column headings in the first row. Copy header row copies a heading row that already matches this workstream, if you want to start a sheet from scratch.

Match columns
The left-hand panel, Match columns, reads "Map your file columns to job fields." Every column in your sheet has a tick and a destination: the title, Client, State, Description, Notes, one of the workstream's custom fields, or New field. Select all and Clear all tick or untick every column at once.
Maliru recognises common headings (Job, Work order, Customer, Status and so on). A Notes, Note, Comments or Remarks column fills the job's Notes, not its description. A column that matches nothing is set to New field, so it becomes a custom field when you import, unless you untick it.
Under the list, Maliru says which key columns are missing, so a result doesn't surprise you:
- "No Client column — jobs import without a client."
- "No State column — every job imports as Planned."
Statuses, clients and duplicates
- Status wording — Done, WIP, Booked, Closed and similar map onto the right statuses. Wording the workstream doesn't have yet creates a new status, and the preview marks those rows new status.
- Create clients that aren't in the workspace yet — ticked, new client names become client records.
- Skip jobs already in the app (same title and client) — ticked, a row matching an existing job is skipped as "Already in the app". Unticked, it is imported anyway with a warning.
Preview and import
The preview shows every included column, in the same order as the mapping list, with counts of rows ready, issues and skipped. Fix a flagged row in your sheet, or skip it: Skip it (one problem row), Skip all {n}, or Skip and Keep on each row. Rows with nothing to import are ignored.
A mapping that imported successfully is remembered for this workstream and sheet layout. The next matching sheet opens with "Columns are ticked and matched the way this sheet was imported last time". Choose Use defaults to go back to automatic matching if the layout has changed, or Use remembered to return to it.
Then choose Import {n} jobs. An import takes up to 2,000 jobs at once.
Dates are day-first (14/07/2026). A month-first date is flagged as out of range rather than silently swapped, so March can't be imported as the 3rd of the month.
Importing routes

On a route workstream the importer is the same, and each row becomes a job. The one extra key column is Route: map it to whichever column groups your rows (a project, a cable route, an area). Without one, Maliru says "No Route column — pick the column that groups rows into a route, so Schedule can give a whole route to someone." The Schedule's route board uses it to select a whole route with one tick; see Allocating routes to a worker or crew. If the workstream has no Route field yet, the import creates it.
Changing many jobs at once
Tick rows in the table to open the bulk bar:
- Set state, Set client, Assign (the assignee) and Move to workstream.
- Duplicate — with one job ticked, this opens Duplicate job already filled in, so you can type the new reference before anything is created. "Its dates, status and assignee are left behind". With several ticked, the copies are created straight away with (copy) after the title. A copy takes the client, site, team, description, note, custom fields and required credentials. It never takes file-field attachments, updates, photos, time or money.
- Delete — the warning spells out what goes with the jobs: "This also deletes their assignments, required-credential rules and commercial records, and detaches linked authorisations and time entries. This cannot be undone."
A column went into the wrong field
You can move values into the right field without importing the sheet again. Open Jobs set-up › Fields, open the field's Field options menu and choose Move values…. See Custom fields and columns.
Tip: importing is the fastest way to stand up a workstream — the sheet brings its own columns, statuses and clients with it.
To import sub-jobs under their parents, map your sheet's parent column to Parent. See Parents and sub-jobs in route workstreams.