Greenhouse logoAFAS Profit logo

Recruitment to HR

Greenhouse to AFAS integration: an accepted offer starts onboarding in AFAS Profit

With an integration between Greenhouse and AFAS Profit, an accepted offer in Greenhouse starts the onboarding process in AFAS, with start date, salary, job and department from the offer and the vacancy. HR in AFAS completes the onboarding, and nobody retypes the candidate from Greenhouse.

What the integration does

Organisations that recruit worldwide through Greenhouse and run payroll for their Dutch entity in AFAS Profit email the offer letter to HR after an accepted offer. HR enters the details in AFAS by hand and only then starts onboarding.

  1. The recruiter marks the offer as accepted in Greenhouse.
  2. Greenhouse reports the hire to KoppelHet, with application, candidate, vacancy and offer.
  3. KoppelHet checks whether the vacancy's office belongs to the Dutch BV.
  4. In AFAS the onboarding process starts with name, contact details, start date, salary, job and organisational unit.
  5. HR in AFAS adds BSN and the Dutch details and completes the onboarding.
Greenhouse → KoppelHet → AFAS ProfitSOURCEGreenhouseTARGETAFAS ProfitKoppelHetmapping · logging · monitoringGreenhouse → KoppelHet → AFAS ProfitSOURCEGreenhouseTARGETAFAS ProfitKoppelHetmapping · logging · monitoring
Out: New employee with name and contact details · Start date and salary from the offer · Employer from the vacancy's office · Job and organisational unit · Onboarding process in AFAS

What to watch for with Greenhouse and AFAS Profit

  • Greenhouse reports a hire the moment the offer is marked as accepted. That is the starting point for AFAS; earlier steps in the recruitment process stay outside the integration.
  • The Greenhouse notification contains the offer itself, with start date and the offer's own fields. Salary is in there with currency, amount and unit, so KoppelHet recognises an annual salary in dollars and does not put it into AFAS as a monthly amount.
  • Greenhouse often serves every country of an organisation. The vacancy's office determines whether the candidate goes to AFAS and at which employer; KoppelHet skips candidates for other countries.
  • Greenhouse retries a failed notification up to seven times, spread over about fifteen hours. If KoppelHet is down at some point, the hire still arrives, and a daily check catches the rest.
  • Greenhouse retired its old API versions on 31 August 2026. This integration uses the new version with its own credentials and rights per area, so it does not need rebuilding.
  • AFAS has its own entry that starts the onboarding process, and recommends it over creating an applicant. HR thus keeps control, and HR can still reject a withdrawn offer in the AFAS workflow.
  • The BSN does not belong in Greenhouse, which is often managed in the United States. The new employee or HR adds it in AFAS during onboarding.

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 if the offer is withdrawn after acceptance?

The employee is then in onboarding in AFAS, and HR can reject it. KoppelHet reports the change in Greenhouse to HR.

If we also recruit for other countries, do those candidates go along?

No. Only vacancies of offices belonging to the Dutch BV produce an onboarding in AFAS.

What do we need to arrange in Greenhouse?

Credentials for the integration with only the required rights, and a webhook for hires. Your Greenhouse administrator does this once.

What about the GDPR?

You are the controller and KoppelHet is the processor, under a data processing agreement. Only data of hired candidates goes to AFAS, and every action is in the audit logging.

Technical details for IT

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

  • Greenhouse is read through the hire_candidate webhook (fires on Accept Offer; payload with application, candidate, job, offer with starts_at and custom fields, signed with HMAC-SHA256 in the Signature header) and the Harvest API v3 with OAuth 2.0 client credentials and only the required scopes. Harvest v1 and v2 were retired on 31 August 2026.
  • AFAS is written through the HrOnboarding UpdateConnector, which starts the onboarding process; AFAS recommends it over HrCreateApplicant. For an existing employee the employee number (EmId) is passed along.

Which fields are transferred

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

Field in GreenhouseField in AFAS ProfitNotes
application.id en candidate.idKenmerk in het onboardingprocesTo recognise a second notification
candidate.first_name en last_nameVoornaam, voorvoegsel en achternaamSplit the name prefix
candidate.email_addressesE-mail privé
candidate.phone_numbersTelefoon privé
offer.starts_atDatum in dienst
Salaris (offer custom field met valuta, bedrag en eenheid)SalarisConverted to a monthly amount if the unit is per year
job.officesWerkgeverThrough a lookup per office
job.departmentsOrganisatorische eenheidThrough a lookup table
Uren per week (offer custom field)Rooster

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.