Skip to main content

Connect Deel

Import your workers and their current job from Deel, the global HR and payroll platform. You give Oho a read-only token once, and Oho creates your workers and keeps them in step with Deel on the schedule you choose — so people don't have to be added in two places.

Deel is in Beta

This connector is still being rolled out. It imports people from your Deel directory, their current job title, their status, and the legal entity employing them — not full job history yet. If you hit something unexpected, contact support@weareoho.com.

What you'll end up with

Your Deel people in Oho as workers — each ready for credentials to be added and checked — kept in step with Deel, without maintaining two lists.

Before you start

You'll need:

  • Your people already recorded in Deel, with the details you want in Oho — their names, contact details, and current engagement.
  • A Deel login that can create tokens in the Developer Center, or someone who has one, to create the token in Step 1. This is done inside Deel, not in Oho.

Step 1: Get your auth details

What you'll need for this step

A Deel login with access to the Developer Center. You'll finish this step holding one value to paste into Oho: an organisation token.

Deel uses the API token pattern: you create a token in Deel and paste it into Oho. There's no sign-in redirect and nothing for Oho to refresh.

  1. In Deel, open the Developer Center and create a token.
  2. Choose an organisation token — not a personal or worker token. Only an organisation token represents the whole org, so only it returns every person in the directory.
  3. Grant it the people:read scope.
  4. Copy the token.
Technical detail: auth, scope & pagination

Hand these points to whoever administers Deel — a non-technical admin can skip them.

  • Auth. The token is sent as a static Authorization: Bearer <token> header against Deel's HRIS API. There is no OAuth exchange and no refresh, so the token stays valid until it's revoked or rotated in Deel.
  • Scope. people:read is what the directory read needs. A personal or worker token authenticates but returns only that person's scope, which is the usual cause of a sync that finds almost nobody.
  • Directory. People are read from GET /rest/people with offset / limit pagination against https://api.letsdeel.com by default.
  • Organisation. Each person carries their employing legal entity (client_legal_entity.name), which becomes the worker's organisation in Oho.
  • Where secrets live. Oho stores the token encrypted, referenced by a stored secret ref; the browser never handles it after you paste it.
Treat the token like a password

An organisation token grants ongoing read access to worker PII for as long as it's valid. Never post it in email, chat, or a ticket, and revoke it in Deel if the connection is removed or someone with access to it leaves.

Expected outcome: you have an organisation token with the people:read scope copied, ready to paste into Oho.

Step 2: Connect it in Oho

In the left menu under Admin, click Integrations, then start a new integration.

The Integrations page in Oho

Pick Deel from the list of sources.

Choosing a source in Oho

Paste your token into API Token, then continue. Leave Base URL as it comes unless Deel has told you to use a different host.

Expected outcome: the Deel connection is accepted in Oho, and it moves you on to field mapping.

Step 3: Map your fields

Oho creates one worker per person in your Deel directory. It recognises a returning worker by their Deel person ID, carried on source.externalId — so a re-sync updates the existing worker in place rather than creating a duplicate.

Deel has its own names for things — hiring statuses such as active and onboarding, and legal entities that become organisations in Oho. The setup screen asks you to line each value up with its Oho equivalent before your first sync. For what each field expects, which are required, and how re-syncs avoid duplicates, see the shared Map your fields reference, and the Deel integration reference for what this connector imports at a glance.

Map every value, or those records won't land where you expect

A Deel value you leave unmapped still imports, but Oho can't place it correctly until it's mapped. Unmapped statuses fall back to inactive — only active counts as active by default — so map every status you use in Deel.

Expected outcome: every Deel value the setup screen lists maps to its Oho equivalent, and each worker carries their Deel person ID as the match key.

Step 4: Set the schedule

Choose how often the sync runs, then name it and save.

  • Once — a one-off load to get started. You can revoke the token in Deel afterwards if you don't intend to sync again.
  • Recurring — Oho re-reads Deel on a schedule, so new starters, role changes, and terminations flow through automatically. The token from Step 1 must stay valid for future runs.

Setting the sync schedule

Expected outcome: the connection is saved and scheduled, and appears in your Integrations list.

Step 5: Run & verify your first sync

Run it now with Save & Run, or wait for the first scheduled run. Once it's run, confirm your people are in: they appear under All Workers, and each credential you later add is checked against its official source (see One-off verification).

The new connection in your Integrations list

If the run didn't bring everyone in, check the run history and the Common questions below.

Expected outcome: your people are in Oho under All Workers, ready for credentials to be added and checked.

What happens next

  • Your people appear under All Workers, ready for checks.
  • To keep those checks current, add a verification source for the credential types you hold — synced credentials then verify at the register automatically.
  • If recurring, you don't re-import by hand — change it in Deel and Oho picks it up on the next run.

Common questions

The sync found nothing, or only one person. The most common cause is the wrong token type — a personal or worker token authenticates but only returns its own scope. Create an organisation token with people:read and replace it in the integration's settings.

Everyone imported as inactive. Deel statuses other than active map to inactive unless you say otherwise. Map the statuses you use — onboarding, for example — in Step 3.

Only part of one legal entity imported. If organisation mappings are set, they also act as an allow-list: only workers whose legal entity has a mapping are imported. Add a mapping for the missing entity, or clear the mappings to take everything.

Some workers didn't import. Oho matches returning workers on their Deel person ID (source.externalId). Check the match key and the values you mapped in Step 3.

I don't see Integrations. This is an admin area — if it's not in your menu, ask an admin in your organisation, or contact support@weareoho.com.