Greenhouse logoLoket logo

Recruitment to HR

Greenhouse to Loket integration: accepted offer as a concept employee in the right payroll administration

With an integration between Greenhouse and Loket, a candidate whose offer is accepted in Greenhouse arrives in Loket automatically as a concept employee, at the employer and payroll administration that belong to the job's office. Start date, salary and employment type from Greenhouse come along, so payroll only adds the citizen service number and payroll tax details.

What the integration does

Organisations that recruit internationally in Greenhouse and have Dutch payroll processed in Loket now pass new Dutch colleagues to the payroll bureau by email. The bureau retypes the details and works out itself which employer and payroll administration the new employee belongs to.

  1. The recruiter accepts the offer in Greenhouse.
  2. KoppelHet receives the webhook and checks whether the job's office is in the Netherlands.
  3. In Loket a concept employee appears at the employer and payroll administration of that office, with the new hire checklist started.
  4. Payroll adds citizen service number, payroll tax credit and missing collective agreement details.
  5. After review payroll converts the concept into an employee.
Greenhouse → KoppelHet → LoketSOURCEGreenhouseTARGETLoketKoppelHetmapping · logging · monitoringGreenhouse → KoppelHet → LoketSOURCEGreenhouseTARGETLoketKoppelHetmapping · logging · monitoring
Out: Concept employee with name, date of birth and contact details · Employer and payroll administration from the office · Start date from the offer · Salary, scale and employment type

What to watch for with Greenhouse and Loket

  • Greenhouse reports a hire at the moment someone clicks Accept Offer, not when the offer is sent. KoppelHet therefore only creates the concept in Loket once the candidate has really said yes, not for an offer that can still be declined.
  • Greenhouse retries a failed notification up to seven times, spread over about fifteen hours, with its own event ID. KoppelHet recognises a second delivery by that ID and by the candidate number on the concept, so an outage at Loket does not produce a duplicate concept employee.
  • In Loket the fields of a new concept depend on the selected payroll administration, and the possible steps on the selected pay scale. KoppelHet first picks the payroll administration for the office and only then requests the scales, so a scale from another collective agreement does not end up on the concept.
  • Greenhouse records offices and departments on the job, not on the offer. With several Dutch employers in Loket the job's office determines the employer; jobs with an office outside the Netherlands do not go to Loket.
  • The salary in Greenhouse is often a custom field of the currency type on the offer, sometimes as an annual amount in another currency. KoppelHet only takes a monthly amount or hourly wage in euros; an annual amount or foreign currency becomes an alert for payroll.
  • Loket only admits external applications to production after approval, and a user with rights on the employer signs in once for the integration. With a payroll bureau the bureau does this, so recruiters in Greenhouse need no access to Loket.

How we build and run it

  • The integration runs on the KoppelHet platform, hosted in a data centre in the EU.
  • Every sync and every error is visible in the functional log; on an error your administrator is notified.
  • A change that cannot go through is not half-applied but queued for another attempt.
  • KoppelHet is ISO 27001 certified. Data travels encrypted and stays on the platform no longer than needed.
  • After go-live we manage the integration and adjust it when your process changes.
  • The integration fits next to your existing integration layer. Only the fields in the design are transferred; the platform keeps no register of its own.

Implementation, architecture and compliance

Implementation and price

This is not an app you switch on. We build the integration for your organisation on our platform, with building blocks we reuse on every project. So it is custom work that does not start from scratch.

A consultant prepares the intake and analyses both systems. We then record the mapping and exceptions field by field, test in the test or acceptance environment and go live at a moment you choose. Costs are a one-off amount for the setup and a monthly amount for platform, monitoring and support.

Price indication · Basic

Leave your work email and you see the price indication right away.

We only use your address to follow up on your question about this integration.

Frequently asked questions

What happens if a candidate drops out after Accept Offer?

The concept is already in Loket, but is not yet an employee. Payroll deletes it; an automatic alert for that can be added later as an extension.

Does this work if a payroll bureau manages Loket for us?

Yes. The bureau gives the integration access to your employers and sees the concepts appear with the checklist.

Technical details for IT

For those who want to know how it works under the hood: APIs, fields and sources used.

  • Greenhouse through the hire_candidate webhook (on Accept Offer; application with jobs[].offices and departments, offer with starts_at and custom_fields), signed with HMAC-SHA256 over the raw body in the Signature header, with Greenhouse-Event-ID and up to 7 attempts. Additional data through the Harvest API v3 with OAuth 2.0 client credentials.
  • Loket through the REST API with OAuth 2.0 (authorization code with refresh token). Metadata for a new concept in the employer context (jobapplicant/metadata), then per payroll administration and per pay scale (payScale, payGrade). Create the concept at the employer and start the new hire checklist. Acceptance environment api.loket-acc.nl with test data.

Which fields are transferred

The key fields. The full mapping is agreed per customer.

Field in GreenhouseField in LoketNotes
candidate.idVrij veld op het conceptTo recognise a repeated webhook
first_name en last_nameVoornaam, voorvoegsel en achternaamSplit the name prefix
jobs[].officesWerkgever en loonadministratieThrough a translation table
offer.starts_atDatum in dienst
offer.custom_fields (salary, currency)Loon per periodeOnly euro per month or per hour
Job custom field employment_typeSoort dienstverband
Offer custom field schaalpayScale en payGradeOnly if the collective agreement uses scales
email_addresses en phone_numbersPrivé-e-mail en telefoon

Related

Which systems do you want to connect?

Tell us which systems you use and what should happen automatically. Together we define the smallest working solution, with a clear design and a quote before building.