
HR to ERP
HiBob to Coupa integration: Bob employees as Coupa users with department, manager and default account
With an integration between HiBob and Coupa, every employee from Bob becomes a user in Coupa, with work email, employee number, department, manager as approver and a default account for requests and expenses. A transfer in Bob updates Coupa on the effective date, and a departure sets the Coupa user to inactive.
What the integration does
Organisations that use HiBob as their HR system and Coupa for purchasing, invoices or expenses often create new colleagues in Coupa by hand. A new manager in Bob then stays outside the approval route for weeks, and people who have left can still submit requests.
- Bob reports a new or changed employee; KoppelHet fetches only the fields Coupa needs.
- KoppelHet checks whether department, manager and account already exist in Coupa.
- Managers go first, then the employees reporting to them.
- The user is created or updated; KoppelHet stores the Coupa ID with the employee from Bob.
- After the departure in Bob KoppelHet sets the user in Coupa to inactive.
What to watch for with HiBob and Coupa
- Bob's search API only filters on ID or email address, and Coupa's Users API documents the active status as its only filter. Neither therefore searches on employee number. KoppelHet therefore stores the Coupa ID with every employee from Bob, so a change always lands on the right user.
- Bob silently leaves out fields the service user cannot read and still answers 200 OK. Coupa does expect a department and a manager for a new user. KoppelHet compares every response with the requested fields and stops with an alert if the department or the manager is missing, instead of creating a user without an approver.
- Bob's departure event only arrives at midnight after the effective date, in the site's time zone. If finance wants someone unable to raise requests on the last working day, KoppelHet uses the event for immediate access revocation, which Bob sends as soon as the termination flow is completed.
- Coupa names department, manager, default account and content group as data that must already exist before a user comes in. In Bob the department is a list value with its own ID. KoppelHet translates that ID into the Coupa department and lists an employee with a department Coupa does not know yet for the Coupa administrator.
- Without a default currency Coupa falls back on the instance's reporting currency. Bob has no currency per employee, but it has a site per country. KoppelHet sets the default currency and default address through a table per site, so a colleague in London does not raise requests in euros.
- A transfer recorded ahead of time in Bob gives a table event straight away, but only becomes the current work entry on the effective date. KoppelHet waits with the new manager and department in Coupa until that date, so open requests still sit with the current approver.
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 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.
Frequently asked questions
Who sets the approval limits?
Finance, in Coupa. The integration sets department, manager and account; limits per job can be added later as an extension.
Does everyone from Bob get a purchasing licence?
No. At the start we agree which licences the integration sets. Anything beyond that is handled by the Coupa administrator.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- HiBob through employee data webhooks (employee.created, employee.updated with fieldUpdates, employee.left, employee.access.revoked.immediately, table.entry.created) and POST /people/search with fields (root.email, work.employeeIdInCompany, work.department, work.reportsTo, work.site) and filters only on root.id or root.email. Fields without permission are left out without warning.
- Coupa through the Users API - POST /api/users, PUT /api/users/:id, GET /api/users/:id and /api/users?status=active. Fields login, email, employee-number, firstname, lastname (string 40), department, manager, default-account, default-address, default-currency (not required, otherwise the reporting currency), content-groups, account-groups, licence flags such as expense-user and purchasing-user, authentication-method (coupa_credentials, ldap or saml, case-sensitive) and active.
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in HiBob | Field in Coupa | Notes |
|---|---|---|
/root/email | login en email | Both unique in Coupa |
/work/employeeIdInCompany | employee-number | |
/root/firstName, /root/surname | firstname, lastname | At most 40 characters |
/work/department | department | List ID from Bob through a lookup table |
/work/reportsTo/email | manager | |
/work/site | default-currency en default-address | Table per site |
Kostenplaats (veld in Bob) | default-account | Finance table |
Lifecycle (vertrek) | active = false |
Related
Ashby → HiBob
Ashby to HiBob integration: a hire from Ashby straight in as an employee in Bob
Bullhorn → HiBob
Bullhorn to HiBob integration: an approved placement as a new employee in Bob
Carerix → HiBob
Carerix to HiBob integration: successful match becomes a new employee in Bob
Greenhouse → HiBob
Greenhouse to HiBob integration: from a hire in Greenhouse to a new employee in Bob