Training and certificates
Factorial to GoodHabitz integration: GoodHabitz trainings in the Factorial training module, completed training on the employee
With an integration between Factorial and GoodHabitz, every GoodHabitz training in use is an external training in Factorial, and a completed GoodHabitz training then appears with date and time spent on the right employee in Factorial. Who may use GoodHabitz follows Factorial through your sign-in environment.
What the integration does
Organisations that use Factorial for HR and training, and GoodHabitz as online offering, keep two training overviews. Factorial holds classroom and internal trainings, while what employees complete at GoodHabitz is only visible in GoodHabitz reports.
- When someone first completes a particular GoodHabitz training, KoppelHet creates that training in Factorial, with a class and a self-paced session.
- KoppelHet fetches completed trainings and tests, period by period, and looks up the employee by work email in Factorial.
- The employee is added to the session without notification and their attendance is set to completed.
- KoppelHet sets the actual completion date from GoodHabitz on the participation.
- Access to GoodHabitz runs through single sign-on and follows hire and departure in Factorial.
Back: Completed trainings with completion date · Time spent per training in hours
What to watch for with Factorial and GoodHabitz
- For a new training Factorial asks for a name, description, year, attachments and whether the training is external. KoppelHet creates GoodHabitz trainings as external, with GoodHabitz as provider and the content ID as code, so HR sees them in Factorial separately from internal trainings.
- In Factorial an employee is not linked to a training directly but to a session, and a session is only visible in the app if it sits under a class. KoppelHet creates one class with one self-paced session per GoodHabitz training, and adds completions there.
- When adding someone to a session Factorial can notify the employee. KoppelHet switches that off, because the employee has already done the training and would otherwise get an invitation for something behind them.
- When KoppelHet sets an attendance to completed, Factorial counts the session duration as time spent. GoodHabitz gives the duration as ISO text such as PT45M; KoppelHet converts it to 0.75 hours on creation, so the training hours in Factorial are right.
- A completed attendance does not yet say when the training was finished. KoppelHet therefore sets the timestamp of the GoodHabitz completion separately as completion date on the participation, even when the period is only fetched days later.
- Factorial can record a validity in years per training and calculates an expiry date per employee from it. For GoodHabitz trainings that are mandatory every year, such as information security, KoppelHet sets that validity, so HR sees in Factorial who has to retake the training.
- GoodHabitz returns completions per period of at most seven days and ten requests per minute per key. KoppelHet keeps track of how far it has fetched and only creates a training in Factorial for GoodHabitz content someone actually completed, not for the whole catalogue.
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
Does the integration create accounts in GoodHabitz?
No, the GoodHabitz API cannot do that. Access runs through single sign-on, and who may sign in there follows Factorial.
Does the whole GoodHabitz catalogue go to Factorial?
No, only trainings someone has completed. Putting the whole catalogue in Factorial as an offering can follow later as an extension.
Do we need the Factorial training module for this?
Yes. Trainings, sessions and participations belong to that module; without it there is no place in Factorial for completed training.
Technical details for IT
For those who want to know how it works under the hood: APIs, fields and sources used.
- GoodHabitz API v2 with an API key from GoodHabitz support: GET /v2/contents, /v2/deleted-contents, /v2/milestones (Finished, TestPassed, TestFailed) and /v2/progress (test_score). Time window 0 to 7 days; 10 requests per minute per key and 20 per IP address. No endpoint to create users; access through SSO with SAML 2.0.
- Factorial API (version 2026-10-01) with OAuth 2.0: POST /resources/trainings/trainings (name, description, external, external_provider, code, year, attachments, total_duration, valid_for), training_classes, POST /resources/trainings/sessions (training_id, training_class_id, schedule selfpaced, duration in hours), session_access_memberships/bulk_create (employee_ids, notify false), session_attendances/bulk_update (status completed) and PUT /resources/trainings/training_memberships/{id} (training_completed_at).
Which fields are transferred
The key fields. The full mapping is agreed per customer.
| Field in Factorial | Field in GoodHabitz | Notes |
|---|---|---|
content id | code van de training | Fixed key to find the training again |
title en description | name en description | |
GoodHabitz | external = true, external_provider | |
duration (ISO-8601, bijvoorbeeld PT45M) | duration van de sessie in uren (0.75) | |
user_id (werkadres) | employee_id | Looked up by email in Factorial |
Finished of TestPassed | session attendance status completed | |
timestamp | training_completed_at | |
deleted-contents | Status van de training in Factorial bijwerken |
Related
Factorial → 4PS Construct
Factorial to 4PS Construct integration: fitters and site managers with their cost centre as a dimension in 4PS
Factorial → Active Directory
Factorial to Active Directory integration: domain accounts from Factorial
Factorial → ADP iHCM
Factorial to ADP iHCM integration: contract versions and terminations of the Dutch entity to ADP
Factorial → AFAS Profit
Factorial to AFAS integration: employees and contracts from Factorial in AFAS Profit Payroll