Skip to content
OneForce Care
Browse help topics

Bulk import workers

Bring many workers in at once from a spreadsheet, with payroll and availability, and a login invite emailed to each new worker.

Last updated · 10 November 2026


Setting up more than a handful of workers one at a time is slow. Import brings many in at once from a single spreadsheet, with their SCHADS payroll classification and availability, all checked before anything is saved. When the import finishes, each newly created worker is emailed a login invite to set their own password, so a batch of workers arrives ready to sign in.

Open Import

Go to Workforce›Workers and select Import at the top right, just to the left of Invite worker. The dialog opens, titled Import workers. It explains that archived workers matched by email are reactivated with their history kept, and that new and reactivated workers receive login invitations after import.

Note

Import is available when your role can create workers, the same permission Invite worker needs. If your role can’t, neither button appears on the page.

Download the template and fill it in

Select Download template to get workers-import.xlsx. It has three sheets: Workers, Payroll and Availability. Fill in the Workers sheet first, then add rows to the other two for the workers who need them. See The three tabs below for the full field list of each one.

  • Required columns carry a trailing * in the header.
  • Enum columns (like State, Account type or Worker category) are spreadsheet dropdowns.
  • Hover over a column header for notes on its format and rules, for example “Enter the ID as issued” on NDIS Worker Screening ID.
  • Two grey, italicised EXAMPLE rows sit under each header, already filled in as a worked example (EXAMPLE Owen Sutton and EXAMPLE Zoe Ali). Leave them, delete them, or type over them: the import skips any row whose first cell starts with “EXAMPLE”, so an untouched template can never import sample data by accident.
  • Columns are matched by their header text, not by position, so you can delete columns you don’t need, as long as every required header is still there and reads the same.

Note

There is no reference column on the worker template. Everything is keyed on the worker’s email address: the Workers sheet uses it to decide whether a row creates a worker or updates one, and the Payroll and Availability sheets point back at a worker by putting the same address in their Worker email column. Both note it the same way: “Email of a worker on the Workers sheet, or of an existing worker.”

The sample rows use clean placeholder addresses so you can see the link at a glance: example.owen@example.com and example.zoe@example.com appear on the Workers sheet and again on the Payroll and Availability sheets, pointing at the same two people. (The participants template does have a separate Ref column, so do not go looking for one here.)

Upload your file

Back in the dialog, select Browse and choose your filled-in file. Uploading starts checking it immediately: while it runs, the file control is disabled. When it finishes, you land on either an issues list or a ready summary.

If the file is over 5 MB, you’ll see “That file is over the 5 MB import limit.” and the file is cleared. If it can’t be read as a workbook (wrong format, corrupted, or not really .xlsx/.csv), you’ll see “Could not read that file. Save it as .xlsx or .csv and try again.”

Note

A .csv file only carries the Workers sheet: a CSV has no way to hold three sheets. Use .xlsx if you also want to import payroll or availability in the same run.

Fix issues, or import

  • Issues found: you’ll see “1 issue must be fixed before importing.” or “N issues must be fixed before importing.”, above a scrollable table with a Sheet, Row and Issue column for each problem (a file-level problem shows File as its sheet, with no row). Select Download issue report for a CSV with a Sheet, Row, Column and Problem column for every issue. Fix your file and select Browse again to re-run the checks; there is no partial re-check.
  • Ready to import: you’ll see “Ready to import.” with a row count per sheet, for example “Workers: 12 rows” and “Payroll: 12 rows”, plus a reminder that the import is all-or-nothing: if anything fails, no rows are saved.
Validation-only worker CSV has one invalid phone on Workers row 2; Import is disabled and no record is saved.
Enlarge screenshot

Swipe across the enlarged image to read each part of the screen.

Validation-only worker CSV has one invalid phone on Workers row 2; Import is disabled and no record is saved.
View full-size screenshot
1The selected file is validated before any import is committed.
2Read Sheet, Row and Issue, then correct that row in the file.
3Import stays disabled while any validation issue remains.

The deliberate invalid phone is identified on Workers row 2. Fix the private input file and validate again; Import has not been selected.

One existing-worker CSV row passes validation and is Ready to import; the demonstration cancels without importing or sending invitations.
Enlarge screenshot

Swipe across the enlarged image to read each part of the screen.

One existing-worker CSV row passes validation and is Ready to import; the demonstration cancels without importing or sending invitations.
View full-size screenshot
1Start from the current template and retain its headers.
2Ready means validation passed, not that data was saved.
3Import would save records and start any applicable invitations; it is not selected here.

One existing-worker CSV row passes validation and is Ready to import; the demonstration cancels without importing or sending invitations.

Select Import. It stays disabled until every issue is cleared and the Workers sheet has at least one row.

Wait for records and invitation processing

After Import, keep the dialog open while it saves records and processes any new or reactivated worker invitations. Its footer reports progress as Creating n of N and prevents another import while it is busy.

On successful processing, the worker import closes automatically and the register refreshes. It does not show the participant import’s separate Import complete panel. Search for the intended workers and inspect their Details, Access and invitation state before rostering.

If invitations fail after records saved, the dialog remains open and lists Could not invite: with each affected name, email and reason. The saved worker records remain. Close the dialog and recover those existing workers’ invitations from the register or Access workflow; do not import the whole file again to resend email. A general processing failure also needs a current-record check before retrying.

If the import itself fails, read the actual error. The import failed. Nothing was saved. is the fallback message, not the wording of every failure. Correct the cause and validate the file again before retrying.

Update existing workers by email

The Email column on the Workers sheet is the match key. A new email creates a worker; an email that matches one you already have updates that worker instead of making a duplicate.

  • Blank cells keep the stored value. On an update row, a required cell you leave empty keeps whatever is already on file rather than erroring. Fill only the cells you want to change.
  • Archived workers can be reactivated. Include their matching email on the Workers sheet. The import restores that worker with their history kept and sends a login invitation after it finishes. A row on another sheet alone does not reactivate them; validation asks you to include them on Workers. Review the intended access before importing.
  • Account type can’t change on an update. An import cannot switch someone between support worker, admin and provider: “Account type cannot be changed by an import; edit the worker profile instead.”
  • Screening IDs stay their own. An NDIS Worker Screening ID already used by a different worker is rejected as a clash, but a worker keeps their own on an update.

The Payroll and Availability sheets can point at someone already in the app the same way: put that worker’s email in the Worker email column even if they aren’t on the Workers sheet.

The three tabs

Workers

The Workers sheet is required and needs at least one row. Payroll and Availability rows may also refer to an existing worker who is not listed on that sheet.

Account type and role

Column Required Notes
Account type No Support worker (the default), Admin or Provider. Admin and Provider are office logins with no roster, payroll or availability
Role Sometimes Provider accounts only, and it must match a role name configured in the workspace

A Role on a support worker or admin row is rejected with “Role can only be set for provider employees.”, and a role that isn’t configured gives ‘Role “…” does not match any role in this workspace.’ Leave the account type blank and the worker imports as a Support worker.

Personal, contact and address

Column Required Notes
First name Yes
Middle name No
Last name Yes
Email Yes The match key and the worker’s login email. A new email creates; a matching one updates. Unique within the file
Phone Yes Australian format, e.g. 04XX XXX XXX or 0X XXXX XXXX
ABN No Support workers only. 11 digits
NDIS Worker Screening ID Sometimes Support workers only, and required for them. Enter the ID as issued. Unique within your provider
WWCC number No Support workers only. State WWCC or equivalent, e.g. NSW WWC1234567E, QLD 12345/1, VIC 1234567A
Default travel vehicle No Support workers only. Standard vehicle, or Modified vehicle or bus
Address line Yes
Suburb No
State Yes NSW, VIC, QLD, WA, SA, TAS, NT or ACT. The worker’s residential state
Postcode Yes A valid Australian postcode, e.g. 2000

Note

ABN, NDIS Worker Screening ID, WWCC number, Worker Vehicle Type and Default travel vehicle belong to support workers only. Put a value in one on an admin or provider row and it’s rejected, e.g. “ABN can only be provided for support workers.” Only support workers must carry a screening ID; leaving it blank on one gives “NDIS Worker Screening ID is required.”

The optional Worker Vehicle Type column accepts Personal or Company. Blank defaults new workers to Personal and preserves the choice for existing workers. This is separate from Default travel vehicle, which describes the vehicle class.

Payroll

The owner must enable Payroll under Account > Features before importing Payroll-sheet rows. New workspaces start with Payroll off. If it is off, remove the payroll rows for a people-only import or ask the owner to enable and prepare Payroll first. The import rejects these rows while the module is off.

One optional row per worker sets their SCHADS pay classification, matching the Payroll tab. Link the row to a worker with the Worker email column.

Column Required Notes
Worker email Yes Email of a worker on the Workers sheet, or an existing worker
SCHADS stream Sometimes Social and Community Services (SACS), Home Care: Disability, or Home Care: Aged Care
Employment type Sometimes Full-time, Part-time or Casual
Classification level Sometimes 1 to 8 (SCHADS Schedule B)
Pay point Sometimes 1 to 4, within the classification level
Work state Sometimes The state whose public holidays apply to this worker’s pay
Worker category Sometimes Day worker (work outside 6am-8pm is overtime, cl. 28.2) or Shift worker (the shift loading applies instead, cl. 29.3)
Agreed weekly hours Sometimes Required when Employment type is Part-time. Maximum 38
Agreed hourly rate No Leave blank to pay the SCHADS award rate (it follows the annual sync)
Travel pay No Y when the worker is paid for provider travel time

Watch out

The six SCHADS columns (SCHADS stream, Employment type, Classification level, Pay point, Work state and Worker category) are all-or-none: fill all six together, or leave all six blank. A partial set is rejected: “SCHADS classification is all-or-none: fill SCHADS stream, Employment type, Classification level, Pay point, Work state and Worker category together.” On an update row the check runs on the merged record, so a blank cell falls back to the worker’s stored value.

Watch out

On a fully classified row an Agreed hourly rate below the SCHADS award minimum is rejected: “Pay rate too low: $[rate]/h is below the SCHADS minimum of $[award rate]/h.” If a row raises someone’s classification but leaves the rate blank so their stored rate is now below award, the message names the saved rate instead: “Pay rate too low: the saved rate $[rate]/h is below the SCHADS minimum of $[award rate]/h for this classification.”

Payroll is a support-worker concept, so a row whose worker is an admin or provider is rejected with “Payroll can only be imported for support workers.”, and only one payroll row per worker is allowed (“Only one payroll row per worker can be imported.”).

Availability

Availability rows import availability windows and leave. Link each row to a worker with Worker email, then check the effective approved schedule under Workforce > Availability before rostering. An imported rule is not a worker’s approved collection response.

Column Required Notes
Worker email Yes Email of a worker on the Workers sheet, or an existing worker
Type Yes Availability, Annual leave, Sick leave, Personal/carer’s leave, Unpaid leave or Other
Day pattern No All days (default), Weekdays, Weekends or Custom
Custom days Sometimes Only for a Custom pattern. A comma-separated subset of mon, tue, wed, thu, fri, sat, sun
Start time No 24-hour HH:MM, e.g. 09:00. Leave both times blank for an all-day window
End time No 24-hour HH:MM, e.g. 17:00. Must be after the start time
Effective from Sometimes Required for every leave type. Also the start of a dated availability window
Effective to Sometimes Required for every leave type. On or after Effective from
Note No

Every type except Availability is a leave or exclusion window that hides the worker from overlapping shifts and needs both dates, or you’ll see “Leave must have an effective from and to date.” A Custom day pattern needs at least one valid day (“Choose at least one day for a custom availability rule.”), and the checks also cover time order (“Start time must be before end time.”) and date order (“Effective from must be before the effective to date.”).

Note

Exact duplicates are caught, both within the file (“This availability rule also appears on row N.”) and against a rule the worker already has (“This availability rule duplicates an existing rule for this worker.”), so re-running an import doesn’t stack up repeats. Availability is support-worker only: “Availability can only be imported for support workers.”

Login invites

Every worker the import creates is emailed a login invite to set their own password, sent one at a time after the import commits. The footer tracks processing as Creating n of N. Successful processing closes the dialog; failed invitations stay listed for follow-up. Reactivated archived workers also receive invitations. An ordinary update to an active worker does not re-invite them.

Note

An invite can fail on its own without touching the import (a recent invite to the same address triggers a short cooldown, for example). Each failure is listed under Could not invite: with the reason, and the worker is still created; resend from the Send invite action on their row or their Access tab when you’re ready.

Reading the issue list

Most issues name the field and the rule, for example “First name is required.”, “State must be one of: NSW, VIC, QLD, WA, SA, TAS, NT, ACT.”, “Agreed weekly hours must be at most 38.” or “Agreed weekly hours is required for part-time workers.” Format checks (email, phone, ABN, NDIS Worker Screening ID, WWCC, postcode) show the same message you’d see filling in the field by hand, for example “Enter a valid email address.” or “Enter a valid Australian postcode.”

A few issues are file-level rather than row-level, and show against File instead of a row number:

  • ‘The “Workers” sheet is missing.’ if the workbook has no sheet by that name.
  • ‘The “…” sheet is missing the “…” column.’ if a required column’s header was renamed or deleted.
  • ‘The “…” sheet has more than 500 data rows (limit 500 per import).’
  • “Unsupported file type. Upload a .xlsx or .csv file.” if the extension isn’t .xlsx or .csv.

Watch out

Every issue in the file must clear before Import turns on. The import is all-or-nothing, so a single bad row blocks the whole file rather than being skipped or imported partially.

Tip

Only need a handful of workers? Invite them one at a time instead; Import is for bringing in a batch.

Check an update before importing

For example, to correct an existing worker’s phone, put their exact saved Email on the Workers row and enter the correct Phone. Leave other update cells blank only where you intend to retain their stored values. Do not use a new email to target an existing person: that is treated as a new worker.

Use Browse to validate the workbook, then read Sheet, Row and Issue for each problem. Correct the file on your computer and choose it again. Ready to import means validation passed; selecting Import is the action that saves records and starts any invitations.

Verify the result before rostering

Open Workforce > Workers and search for two or three imported people by name or email. Check their Details, access/invitation state, Compliance and, when enabled, Payroll. New records are Active, but this does not mean their login setup or readiness is complete. Review approved coverage in Workforce > Availability: imported historical availability rows are not evidence that a current casual collection submission has been approved.

If an existing worker matched, inspect the retained and changed fields before making further edits. If an invitation failed after the import saved, recover access on that worker’s record. Do not repeat the full workbook just to resend email.