Skip to main content

Spreadsheet Column Reference

Every column in Oho's import template, what it expects, and which ones are required. This is the reference behind the spreadsheet import walkthrough — use the walkthrough to run the import, and this page while you're filling the template in.

It applies to every file-based source, because they all read the same template: Excel, Google Sheets, and SFTP.

⬇ Download the Excel template (.xlsx)

How to read this page

  • Required columns are the ones Oho refuses a row without. Leave one blank and that row is skipped, and the skip is counted in your sync report.
  • Recommended columns don't block the import, but leaving them blank costs you something concrete — the table says what.
  • Optional columns can be left blank — leave the empty column in place rather than deleting it.
  • Dates use YYYY-MM-DD (for example 2026-03-31).
  • Values shown in code are the values Oho accepts. Case doesn't matter — Oho normalises them as it reads, so active, Active and ACTIVE are the same value, as are WWCC and wwcc. The one exception is Worker Type, which is free text and is stored exactly as you type it.
  • Column headings aren't case-sensitive either, and a trailing * is ignored. What matters is the wording — see the caution below.
The template's asterisks are advice, not enforcement

The * markers in the downloaded template flag the columns you'll want filled in for a useful record. They're broader than the short list Oho actually refuses a row without — the Needed? column in the tables below is the accurate one.

Keep the headings unchanged

Oho reads your columns by heading name. If a heading is renamed, moved, or removed, Oho can't map that column and those rows won't import. Add your data under the headings exactly as they come in the template.

The row directly under the headings on each sheet is a hint row describing what the column expects. Leave it in place — Oho skips it — and start your data on the row below.

The four sheets

SheetWhat goes on itNeeded?
WorkersOne row per person you employ or engage.Yes
ApplicantsOne row per candidate you're still hiring, before they become a worker.Optional
CredentialsOne row per card or registration a worker holds.Optional
ExemptionsOne row per requirement a worker is formally excused from.Optional

Fill in the sheets you need and leave the others empty. Don't delete a sheet you're not using — leave it in place with just its headings.

Worker ID is the match key

Worker ID does two jobs, and both depend on you keeping it stable:

  • It links a worker's Credentials and Exemptions rows to their Workers row. Oho never matches on email.
  • It tells Oho a person on this run is someone it already has, so a re-import updates them instead of creating a duplicate.

Use the identifier the person already has in your HR or payroll system, use exactly the same value across all three sheets, and reuse it on every later run. A row with a blank Worker ID can't be linked; a credential or exemption row whose Worker ID doesn't appear on the Workers sheet is reported as an orphan rather than guessed at. More in Map your fields → Recognising the same person again.

Workers

One row per person. 19 columns. Only Worker ID and a name will stop a row importing.

ColumnNeeded?What it expects
Worker IDRequiredThe person's unique ID from your HR or payroll system. Oho's match key — keep it stable.
OrganisationOptionalThe Oho organisation the worker belongs to. A worker belongs to exactly one.
First NameRequiredTheir given name.
Middle NameOptionalTheir middle name, if you hold it.
Last NameRequiredTheir family name.
EmailRecommendedTheir email address. Without one Oho can't send this worker a check request or a reminder — they still import.
Email TypeOptionalwork or personal. Describes the address in Email.
PhoneOptionalInternational format, for example +61 2 1234 5678.
Date of BirthRecommendedYYYY-MM-DD. Several registers match on it — see the note below.
NationalityOptionalFor example Australian.
Street AddressOptionalStreet number and name.
CityOptionalSuburb or city.
StateRecommendedNSW, VIC, QLD, WA, SA, TAS, NT or ACT. Sets the worker's address — put the credential's own state on its own row.
PostcodeOptionalFour-digit Australian postcode.
Job TitleOptionalTheir role, for example Case Manager.
DepartmentOptionalTheir team or department.
Worker TypeRecommendedFree text, stored exactly as you type it. Use Employee, Contractor or Volunteer so the filter stays tidy.
StatusRecommendedACTIVE, ON_LEAVE or TERMINATED, in any case. Blank counts as active. See Active vs. inactive.
Start DateOptionalYYYY-MM-DD.
What actually stops a worker row importing

Only two things: a blank Worker ID, or no name at all. Oho builds the worker's name from First Name, Middle Name and Last Name together, so a row with any one of them filled in will import. Fill in both First Name and Last Name anyway — name-matching at the issuing register compares against the full name Oho holds.

Fill in Date of Birth wherever you can

It's optional, but several credential checks match on date of birth at the issuing authority. A worker without one may not verify automatically even when their card details are correct.

Credentials

One row per card or registration. 9 columns, 3 of them required. A worker can have as many rows as they hold cards — repeat their Worker ID on each one.

ColumnNeeded?What it expects
Worker IDRequiredMust match a Worker ID on the Workers sheet — this is what links the credential to its holder.
Credential TypeRequiredOne of the codes in Credential Type values below. A code Oho doesn't recognise is skipped, not guessed at.
Reference NumberRequiredThe official ID or registration number, exactly as it appears on the card.
StateRecommendedThe state or territory the credential was issued in. It picks the register Oho checks — without it a state-based card won't verify.
Issuing AuthorityOptionalThe body that issued it, for example Blue Card Services.
Country of IssueOptionalUsed for VEVO checks.
Issue DateOptionalYYYY-MM-DD.
Expiry DateOptionalYYYY-MM-DD.
StatusRecommendedACTIVE, EXPIRED or PENDING, in any case. Blank counts as ACTIVE.
What actually stops a credential row importing

A blank Worker ID, a blank Reference Number, or a Credential Type that's blank or not on the accepted list. Everything else imports — but a row with no State may sit unverified, because Oho uses the state to pick which register to check.

Credential Type values

These are the codes the Credential Type column accepts. Anything else is skipped with an "unknown credential type" warning in your sync report.

CodeWhat it isOho verifies it
wwccWorking With Children Check. State names it — QLD is the Blue Card, NT the Ochre Card, TAS the WWVP Registration, ACT the WWVP Check.NSW, VIC, QLD, WA, SA, TAS, NT. ACT capture-only
wwvpWorking With Vulnerable People Registration, when you'd rather name it directly than as wwcc + TAS.TAS
ndwsNDIS Worker Screening Check, against the NDIS Quality and Safeguards Commission register.Australia-wide
ahpraAHPRA registration — nurses, doctors, allied health.Australia-wide
teacherTeacher registration. State picks the board — VIT, NESA, QCT and the state TRBs.NSW, VIC, QLD, WA, SA, TAS, NT. ACT capture-only
vevoVEVO visa entitlement check with the Department of Home Affairs.Australia-wide
npcA National Police Check you already hold from a prior system. See the note below.Loaded as a completed check, not re-run
passportPassport.No — recorded and tracked for expiry
driverslicenseDriver's licence. Add the state in the State column.No — recorded and tracked for expiry
firstaidFirst aid certificate.No — recorded and tracked for expiry
cprCPR certificate.No — recorded and tracked for expiry
driverslicense_actdriverslicense_waThe same, with the state baked into the code. One per state and territory.No — recorded and tracked for expiry
Your own custom credential codesAnything you've defined yourself. Use the code Oho shows you, or the slugified name.No — see Create a custom credential

The Exemptions sheet takes a shorter list than Credentials: wwcc, wwvp, teacher, ahpra, ndws, npc, vevo, visaentitlement, righttowork, driverslicense, firstaid, cpr. It has no passport, and no per-state driverslicense_* — use driverslicense with the State column. As on the Credentials sheet, a code that isn't on the list is skipped.

"Oho verifies it" means Oho checks the number against the issuing register and keeps re-checking it. Everything else is stored, shown on the worker's profile, and tracked for expiry — Oho just can't confirm it with the issuer.

Importing police checks you already hold

npc rows don't trigger a new police check. Oho loads them as a completed, historic check so the worker's record is accurate from day one. Two conditions: leave State blank or set it to AUS, and give the row an Issue Date — without one the row is skipped, because the check's expiry is calculated from it.

Not on the list?

Credentials Oho doesn't verify still belong in your import — they count towards compliance and Oho tracks their expiry. If the type you need isn't listed, create it as a custom credential first, then use its code here.

Applicants

One row per candidate you're still considering. 7 columns. Fill this sheet in only if you want to bring a recruitment list in alongside your workforce — otherwise leave it blank.

ColumnNeeded?What it expects
Applicant IDRequired — keyTheir unique ID in your ATS or HR system. Applicants are keyed on it, so a row without one is skipped.
OrganisationRecommendedThe organisation they're being considered for. Leave it blank and the applicant imports unassigned.
First NameRequiredTheir given name.
Last NameRequiredTheir family name.
EmailRecommendedWhere Oho sends their Recruitment Check. Applicants with no email address import — you just can't send them a check.
PhoneOptionalInternational format, for example +61 4 1234 5678.
External IDOptionalA second reference of your own, for example an ATS reference.
What actually stops an applicant row importing

A blank Applicant ID, or no name in either name column. Note that Applicant ID carries no * in the template, unlike the other key columns — Oho keys applicants on it regardless, so treat it as required.

Applicants don't take credential rows — their credentials arrive when they complete a Recruitment Check. When you take an applicant on, you promote them to a worker and their credentials carry across. See Applicants.

Exemptions

An exemption records that a worker is formally excused from a requirement — a registered teacher exempt from holding a Queensland Blue Card, for example. Exemptions count towards compliance, so a properly exempt worker doesn't also need the underlying card.

The sheet takes the same 9 columns as Credentials, with two differences in meaning:

  • Credential Type names the requirement the worker is excused from, rather than a card they hold.
  • State is what makes the exemption specific — wwcc + QLD is the Blue Card exemption.

The exact codes the Exemptions sheet takes are listed with the Credential Type values above.

Worker ID, Credential Type and Reference Number are required, exactly as on the Credentials sheet — and State matters just as much here, because it's what turns wwcc into the specific state exemption.

Use this sheet when you're loading a batch of known exemptions alongside your workforce. For one-off exemptions — and where you need to capture a reason and a review-by date — record them on the worker's profile instead: see Record an exemption.

When rows don't import

What you seeWhyFix
A column is ignored entirelyIts heading was renamed, moved, or deletedRestore the heading exactly as the template has it
Some worker rows missingWorker ID is blank, or the row has no nameFill in Worker ID and at least one name column
Some credential rows missingWorker ID, Reference Number or Credential Type is blank — or the Credential Type isn't one Oho acceptsFill all three, and use an accepted Credential Type code
A credential has no workerIts Worker ID isn't on the Workers sheetUse the same Worker ID on both sheets
The same person imported twiceTheir Worker ID changed between runsKeep Worker ID stable for the life of the person's record
A value was rejectedIt isn't one of the accepted valuesUse one of the code values above. Case doesn't matter — spelling does

More in Run and verify your first sync.