Hoe komt een assessmentresultaat als status in je ATS?
Via statusmapping. Dat is de regel die een assessmentuitkomst (geslaagd, gezakt, onvolledig, afgebroken of proctoring mislukt) vertaalt naar een fase of status in Recruitee of SmartRecruiters. Pas daarna kan het ATS uitnodigen, afwijzen of een recruiter waarschuwen. Belangrijkste regel, onvolledig is nooit hetzelfde als gezakt.
Zodra Selection Lab een assessment heeft verwerkt, moet de uitkomst zichtbaar worden als status in het ATS voordat er iets anders kan gebeuren. Ontbreekt een vaste mappinglaag, dan zie je twee dingen gebeuren. Recruiters grijpen bij elk resultaat handmatig in, of automatische regels vuren verkeerd en wijzen kandidaten af die alleen een technisch probleem hadden.
Vier begrippen bepalen hoe het systeem werkt.
Eén onderscheid weegt zwaarder dan alle andere. Onvolledig is niet gezakt. Een kandidaat die de sessie afbrak, verbinding verloor of in een proctoring-hold terechtkwam, is niet gezakt voor het assessment. Wie incomplete rechtstreeks naar een afgewezen fase stuurt, krijgt onterechte afwijzingen en recruiters die het systeem niet meer vertrouwen. Stuur onvolledige uitkomsten altijd naar een aparte fase als "actie nodig" of "in beoordeling", in afwachting van een menselijke check of een nieuwe uitnodiging.
De hele keten ziet er zo uit.
Intake / order aangemaakt
→ Kandidaat krijgt toegang tot het assessment
→ Uitkomst berekend (pass / fail / incomplete)
→ Uitkomst gemapt naar ATS-fase of status
→ ATS-fase bijgewerkt via API of webhook
→ ATS-automatisering start (uitnodigen / onderdrukken / melden)
Selection Lab automatiseert selectiebeslissingen tot aan het interview en zet assessmentresultaten direct in het ATS, terwijl de kandidaat een gesprek voert via SmartChat, dat binnen 10 seconden reageert op WhatsApp en webchat. De standaardtabel hieronder volgt dat werkmodel.
| Assessmentuitkomst | Resultaatstatus Selection Lab | ATS-fasecategorie | Uitnodigingsactie | Auditvelden |
|---|---|---|---|---|
pass | RESULT_PASS | interview | Uitnodiging verstuurd | jobId, orderId, correlationId |
fail | RESULT_FAIL | disqualified | Uitnodiging onderdrukt | jobId, orderId, correlationId |
incomplete | RESULT_INCOMPLETE | needs_action | Uitnodiging onderdrukt, recruiter krijgt melding | jobId, orderId, correlationId |
abandoned | RESULT_ABANDONED | needs_action | Uitnodiging onderdrukt, opnieuw uitnodigen mogelijk | jobId, orderId, correlationId |
proctoring_failed | RESULT_PROCTORING_FAIL | needs_action | Uitnodiging onderdrukt, handmatige beoordeling vereist | jobId, offerId, orderId |
In een standaardpipeline (apply → phone_screen → interview → evaluation → hire) gaat fail naar disqualified en blokkeert daarmee elke verdere uitnodiging. incomplete gaat naar needs_action en niet naar disqualified, zodat een recruiter kan besluiten om opnieuw uit te nodigen of de sollicitatie te sluiten. Deze voorzichtige standaard is wat de uitval in flows van Selection Lab 27% lager houdt dan in onbeheerde flows (Selection Lab Main Deck 2026, maart 2025).
De standaardmapping geldt op accountniveau, maar je kunt hem overschrijven per vacature, per offer en per assessmentpakket. Dat is nodig omdat het afwijsbeleid per functie verschilt. Bij volumewerving voor een magazijn is automatisch afwijzen bij een fail vaak acceptabel, terwijl bij een juridische functie elk afgerond resultaat eerst bij een recruiter moet komen voordat er een fase verandert.
Je stelt twee dingen in.
De drie meest gebruikte patronen naast elkaar.
| Beleid | Gedrag bij pass | Gedrag bij fail | Gedrag bij incomplete |
|---|---|---|---|
reject-on-fail | Door naar interview, uitnodiging versturen | Naar disqualified, geen uitnodiging | Naar needs_action, recruiter krijgt melding |
notify-on-complete | Rapport opslaan in ATS, uitnodiging versturen | Rapport opslaan in ATS, fase ongewijzigd | Naar needs_action, geen uitnodiging |
manual-review-on-incomplete | Door naar interview, uitnodiging versturen | Naar disqualified, geen uitnodiging | Blijft in huidige fase, gemarkeerd voor beoordeling |
Een mapping wijzigen nadat kandidaten al zijn verwerkt, draait hun status niet met terugwerkende kracht opnieuw. Het systeem schrijft een no-op auditregel voor elke kandidaat van wie de combinatie (candidateId, jobId, orderId) al een vastgelegde uitkomst heeft. Wil je een specifieke kandidaat opnieuw door de nieuwe mapping halen, dan vraag je dat expliciet aan. Dat levert een nieuw auditrecord op in plaats van een overschrijving van het origineel.
Webhooks in Recruitee stel je in onder Settings > Apps and Plugins > Webhooks. Je endpoint moet HTTPS gebruiken en de configuratie krijgt pas de status "Verified and created" nadat je service met HTTP 200 antwoordt op het eerste testverzoek. De gebruiker die dit instelt heeft de rol-bevoegdheid "Manage webhooks" nodig.
Elk webhook-event bevat deze velden.
{
"id": "evt_01abc23def",
"attempt_count": 1,
"created_at": "2026-08-29T10:00:00Z",
"event_type": "candidate_moved",
"event_subtype": "disqualified",
"payload": {
"candidate_id": "cand_99887766",
"job_id": "job_11223344",
"details": {
"to_stage": "disqualified",
"disqualify_reason": "Assessment score below threshold"
}
}
}
Bij een fasewissel vooruit (pass gemapt naar interview) is het event_subtype stage_changed en bevat payload.details zowel from_stage als to_stage. Bij een afwijzing is het event_subtype disqualified en bevat payload.details to_stage plus disqualify_reason. Het subtype requalified draait een eerdere afwijzing terug, wat relevant is als een handmatige beoordeling een automatische afwijzing overrulet.
Controleer elk binnenkomend event door een HMAC-SHA256-digest van de ruwe request body te berekenen met je webhook-secret en die te vergelijken met de header X-Recruitee-Signature (hex-gecodeerd). Wijs events met een afwijkende signature af met een niet-200-status, zodat de fout in de afleverlogs van Recruitee terechtkomt.
De assessmentpartner-integratie van SmartRecruiters werkt met OAuth. Na het uitwisselen van credentials ontvangt de partner een callback voor het aanmaken van een order zodra een kandidaat de assessmentfase bereikt. Selection Lab stuurt de resultaten terug met een PATCH op het status-endpoint van de order en vult het resultaatobject met onder meer status (bijvoorbeeld COMPLETED of FAILED), score en completedAt. Het ATS verwerkt die callback en zet de kandidaat door of houdt hem vast op basis van zijn eigen automatiseringsregels, die moeten aansluiten op de fasemapping van die vacature.
Geef orderId, packageId en het interne assessmentSessionId van Selection Lab in beide richtingen mee als correlatie-identifiers. Mislukt een callback en volgt een retry, dan kan de ontvangende kant de combinatie (candidateId, orderId) controleren en het verwerken overslaan als de faseupdate al is toegepast.
Drie soorten fouten vragen elk een eigen aanpak.
Bij Recruitee telt elke andere status dan 200 als afleverfout. Recruitee probeert het maximaal negen keer opnieuw, volgens dit schema uit de Recruitee Webhooks-documentatie.
| Poging | Wachttijd na de vorige |
|---|---|
| 1e | 1 minuut |
| 2e | 3 minuten |
| 3e | 10 minuten |
| 4e | 45 minuten |
| 5e | 2 uur |
| 6e | 5 uur |
| 7e | 10 uur |
| 8e | 24 uur |
| 9e | 48 uur |
Elke retry draagt hetzelfde id en verhoogt attempt_count. Je handler moet idempotent zijn. Controleer (candidateId, jobId, orderId) voordat je een fasewissel of uitnodigingsactie toepast. Elk verzoek wordt 30 dagen gelogd, met request body, response, het volgende geplande moment en de mogelijkheid om automatische retries te stoppen of direct een handmatige retry te starten.
Wat de limieten betreft, trial-accounts van Recruitee zijn begrensd op 5 webhook-verzoeken per minuut, alle andere accounts op 100 per minuut. Is de limiet bereikt, dan worden volgende verzoeken ongeveer 10 ± 5 minuten uitgesteld.
Bij SmartRecruiters geldt een callback als geslaagd bij een HTTP 2xx binnen de time-out van het platform. Behandel alle niet-2xx-antwoorden als herhaalbaar en voer dezelfde idempotentiecheck op orderId uit voordat je een statusupdate opnieuw toepast.
Bij inhoudelijke fouten geldt dat je een uitkomst abandoned of proctoring_failed nooit naar disqualified mapt zonder expliciete bevestiging van een recruiter. Stuur hem naar needs_action en zet het assessmentSessionId in het notitieveld van het ATS, zodat de recruiter de volledige context heeft.
Mapping op vacatureniveau. fail → disqualified, pass → interview, incomplete → needs_action.
RESULT_FAIL en stuurt een fasewissel naar Recruitee (of een PATCH naar het order-endpoint van SmartRecruiters) met to_stage: disqualified en disqualify_reason: "Assessment score below threshold".disqualified (afwijsmail, sollicitatie sluiten). Er gaat geen interviewuitnodiging uit.(candidateId, jobId, orderId) al naar disqualified wijst. Zo ja, dan geeft hij direct 200 terug zonder de fase opnieuw te schrijven, zodat er geen dubbele afwijsmails ontstaan.attempt_count in het Recruitee-event loopt op met elke afleverpoging. Daarmee zie je in je logs of er structureel iets mis is met je endpoint.Mapping op vacatureniveau. pass → interview (uitnodiging verstuurd), fail → evaluation (rapport opgeslagen, geen uitnodiging, geen automatische afwijzing), incomplete → needs_action.
pass zet het ATS de kandidaat door naar interview en start de uitnodigingsautomatisering.fail blijft de kandidaat in evaluation. De recruiter bekijkt het rapport en besluit of hij de sollicitatie sluit of de kandidaat voor een andere functie overweegt. Er wordt niet automatisch een afwijsfase geschreven.incomplete gaat de kandidaat naar needs_action. Na een instelbare wachttijd (bijvoorbeeld 48 uur) kan Selection Lab één nieuwe uitnodiging sturen als de recruiter niets heeft gedaan. Een teller per (candidateId, orderId) voorkomt lussen. Standaard is het maximum één nieuwe uitnodiging, daarna gaat het record alleen nog naar handmatige beoordeling.Dit patroon past bij organisaties die geen automatische afwijzing toestaan zonder menselijke goedkeuring, en het houdt de pipeline schoon zonder dat recruiters elk gezakt resultaat direct hoeven te verwerken.
De ingestelde regel die een assessmentuitkomst (geslaagd, gezakt, onvolledig, afgebroken of proctoring mislukt) vertaalt naar een specifieke fase of status in het ATS. Pas na die faseupdate kan de automatisering van het ATS starten, zoals een interviewuitnodiging of een afwijsmail.
Nee. Een kandidaat die de sessie afbrak, verbinding verloor of in een proctoring-hold kwam, is niet gezakt. Map onvolledig, afgebroken en proctoring mislukt naar een aparte fase needs_action, zodat een recruiter besluit of hij opnieuw uitnodigt of de sollicitatie sluit.
Ja. De standaardmapping geldt op accountniveau en is per vacature, per offer en per assessmentpakket te overschrijven, zowel voor de fase als voor het uitnodigingsbeleid. Een wijziging draait al verwerkte kandidaten niet opnieuw. Daarvoor is een expliciet verzoek nodig.
Bij Recruitee komen fasewissels binnen als webhook-events met een event_subtype als stage_changed, disqualified of requalified, ondertekend met HMAC-SHA256 in de header X-Recruitee-Signature. Bij SmartRecruiters stuurt Selection Lab een PATCH naar het status-endpoint van de order met status, score en completedAt, waarna het ATS zijn eigen fase-automatisering toepast.
Recruitee probeert het maximaal negen keer opnieuw met oplopende wachttijden van 1 minuut tot 48 uur en logt elk verzoek 30 dagen. SmartRecruiters behandelt elk niet-2xx-antwoord als herhaalbaar. Je handler moet idempotent zijn en de combinatie candidateId, jobId en orderId controleren voordat hij een fase wijzigt, zodat retries nooit dubbele berichten sturen.

Hoe komt een assessmentresultaat als status in je ATS?
Via statusmapping. Dat is de regel die een assessmentuitkomst (geslaagd, gezakt, onvolledig, afgebroken of proctoring mislukt) vertaalt naar een fase of status in Recruitee of SmartRecruiters. Pas daarna kan het ATS uitnodigen, afwijzen of een recruiter waarschuwen. Belangrijkste regel, onvolledig is nooit hetzelfde als gezakt.
Zodra Selection Lab een assessment heeft verwerkt, moet de uitkomst zichtbaar worden als status in het ATS voordat er iets anders kan gebeuren. Ontbreekt een vaste mappinglaag, dan zie je twee dingen gebeuren. Recruiters grijpen bij elk resultaat handmatig in, of automatische regels vuren verkeerd en wijzen kandidaten af die alleen een technisch probleem hadden.
Vier begrippen bepalen hoe het systeem werkt.
Eén onderscheid weegt zwaarder dan alle andere. Onvolledig is niet gezakt. Een kandidaat die de sessie afbrak, verbinding verloor of in een proctoring-hold terechtkwam, is niet gezakt voor het assessment. Wie incomplete rechtstreeks naar een afgewezen fase stuurt, krijgt onterechte afwijzingen en recruiters die het systeem niet meer vertrouwen. Stuur onvolledige uitkomsten altijd naar een aparte fase als "actie nodig" of "in beoordeling", in afwachting van een menselijke check of een nieuwe uitnodiging.
De hele keten ziet er zo uit.
Intake / order aangemaakt
→ Kandidaat krijgt toegang tot het assessment
→ Uitkomst berekend (pass / fail / incomplete)
→ Uitkomst gemapt naar ATS-fase of status
→ ATS-fase bijgewerkt via API of webhook
→ ATS-automatisering start (uitnodigen / onderdrukken / melden)
Selection Lab automatiseert selectiebeslissingen tot aan het interview en zet assessmentresultaten direct in het ATS, terwijl de kandidaat een gesprek voert via SmartChat, dat binnen 10 seconden reageert op WhatsApp en webchat. De standaardtabel hieronder volgt dat werkmodel.
| Assessmentuitkomst | Resultaatstatus Selection Lab | ATS-fasecategorie | Uitnodigingsactie | Auditvelden |
|---|---|---|---|---|
pass | RESULT_PASS | interview | Uitnodiging verstuurd | jobId, orderId, correlationId |
fail | RESULT_FAIL | disqualified | Uitnodiging onderdrukt | jobId, orderId, correlationId |
incomplete | RESULT_INCOMPLETE | needs_action | Uitnodiging onderdrukt, recruiter krijgt melding | jobId, orderId, correlationId |
abandoned | RESULT_ABANDONED | needs_action | Uitnodiging onderdrukt, opnieuw uitnodigen mogelijk | jobId, orderId, correlationId |
proctoring_failed | RESULT_PROCTORING_FAIL | needs_action | Uitnodiging onderdrukt, handmatige beoordeling vereist | jobId, offerId, orderId |
In een standaardpipeline (apply → phone_screen → interview → evaluation → hire) gaat fail naar disqualified en blokkeert daarmee elke verdere uitnodiging. incomplete gaat naar needs_action en niet naar disqualified, zodat een recruiter kan besluiten om opnieuw uit te nodigen of de sollicitatie te sluiten. Deze voorzichtige standaard is wat de uitval in flows van Selection Lab 27% lager houdt dan in onbeheerde flows (Selection Lab Main Deck 2026, maart 2025).
De standaardmapping geldt op accountniveau, maar je kunt hem overschrijven per vacature, per offer en per assessmentpakket. Dat is nodig omdat het afwijsbeleid per functie verschilt. Bij volumewerving voor een magazijn is automatisch afwijzen bij een fail vaak acceptabel, terwijl bij een juridische functie elk afgerond resultaat eerst bij een recruiter moet komen voordat er een fase verandert.
Je stelt twee dingen in.
De drie meest gebruikte patronen naast elkaar.
| Beleid | Gedrag bij pass | Gedrag bij fail | Gedrag bij incomplete |
|---|---|---|---|
reject-on-fail | Door naar interview, uitnodiging versturen | Naar disqualified, geen uitnodiging | Naar needs_action, recruiter krijgt melding |
notify-on-complete | Rapport opslaan in ATS, uitnodiging versturen | Rapport opslaan in ATS, fase ongewijzigd | Naar needs_action, geen uitnodiging |
manual-review-on-incomplete | Door naar interview, uitnodiging versturen | Naar disqualified, geen uitnodiging | Blijft in huidige fase, gemarkeerd voor beoordeling |
Een mapping wijzigen nadat kandidaten al zijn verwerkt, draait hun status niet met terugwerkende kracht opnieuw. Het systeem schrijft een no-op auditregel voor elke kandidaat van wie de combinatie (candidateId, jobId, orderId) al een vastgelegde uitkomst heeft. Wil je een specifieke kandidaat opnieuw door de nieuwe mapping halen, dan vraag je dat expliciet aan. Dat levert een nieuw auditrecord op in plaats van een overschrijving van het origineel.
Webhooks in Recruitee stel je in onder Settings > Apps and Plugins > Webhooks. Je endpoint moet HTTPS gebruiken en de configuratie krijgt pas de status "Verified and created" nadat je service met HTTP 200 antwoordt op het eerste testverzoek. De gebruiker die dit instelt heeft de rol-bevoegdheid "Manage webhooks" nodig.
Elk webhook-event bevat deze velden.
{
"id": "evt_01abc23def",
"attempt_count": 1,
"created_at": "2026-08-29T10:00:00Z",
"event_type": "candidate_moved",
"event_subtype": "disqualified",
"payload": {
"candidate_id": "cand_99887766",
"job_id": "job_11223344",
"details": {
"to_stage": "disqualified",
"disqualify_reason": "Assessment score below threshold"
}
}
}
Bij een fasewissel vooruit (pass gemapt naar interview) is het event_subtype stage_changed en bevat payload.details zowel from_stage als to_stage. Bij een afwijzing is het event_subtype disqualified en bevat payload.details to_stage plus disqualify_reason. Het subtype requalified draait een eerdere afwijzing terug, wat relevant is als een handmatige beoordeling een automatische afwijzing overrulet.
Controleer elk binnenkomend event door een HMAC-SHA256-digest van de ruwe request body te berekenen met je webhook-secret en die te vergelijken met de header X-Recruitee-Signature (hex-gecodeerd). Wijs events met een afwijkende signature af met een niet-200-status, zodat de fout in de afleverlogs van Recruitee terechtkomt.
De assessmentpartner-integratie van SmartRecruiters werkt met OAuth. Na het uitwisselen van credentials ontvangt de partner een callback voor het aanmaken van een order zodra een kandidaat de assessmentfase bereikt. Selection Lab stuurt de resultaten terug met een PATCH op het status-endpoint van de order en vult het resultaatobject met onder meer status (bijvoorbeeld COMPLETED of FAILED), score en completedAt. Het ATS verwerkt die callback en zet de kandidaat door of houdt hem vast op basis van zijn eigen automatiseringsregels, die moeten aansluiten op de fasemapping van die vacature.
Geef orderId, packageId en het interne assessmentSessionId van Selection Lab in beide richtingen mee als correlatie-identifiers. Mislukt een callback en volgt een retry, dan kan de ontvangende kant de combinatie (candidateId, orderId) controleren en het verwerken overslaan als de faseupdate al is toegepast.
Drie soorten fouten vragen elk een eigen aanpak.
Bij Recruitee telt elke andere status dan 200 als afleverfout. Recruitee probeert het maximaal negen keer opnieuw, volgens dit schema uit de Recruitee Webhooks-documentatie.
| Poging | Wachttijd na de vorige |
|---|---|
| 1e | 1 minuut |
| 2e | 3 minuten |
| 3e | 10 minuten |
| 4e | 45 minuten |
| 5e | 2 uur |
| 6e | 5 uur |
| 7e | 10 uur |
| 8e | 24 uur |
| 9e | 48 uur |
Elke retry draagt hetzelfde id en verhoogt attempt_count. Je handler moet idempotent zijn. Controleer (candidateId, jobId, orderId) voordat je een fasewissel of uitnodigingsactie toepast. Elk verzoek wordt 30 dagen gelogd, met request body, response, het volgende geplande moment en de mogelijkheid om automatische retries te stoppen of direct een handmatige retry te starten.
Wat de limieten betreft, trial-accounts van Recruitee zijn begrensd op 5 webhook-verzoeken per minuut, alle andere accounts op 100 per minuut. Is de limiet bereikt, dan worden volgende verzoeken ongeveer 10 ± 5 minuten uitgesteld.
Bij SmartRecruiters geldt een callback als geslaagd bij een HTTP 2xx binnen de time-out van het platform. Behandel alle niet-2xx-antwoorden als herhaalbaar en voer dezelfde idempotentiecheck op orderId uit voordat je een statusupdate opnieuw toepast.
Bij inhoudelijke fouten geldt dat je een uitkomst abandoned of proctoring_failed nooit naar disqualified mapt zonder expliciete bevestiging van een recruiter. Stuur hem naar needs_action en zet het assessmentSessionId in het notitieveld van het ATS, zodat de recruiter de volledige context heeft.
Mapping op vacatureniveau. fail → disqualified, pass → interview, incomplete → needs_action.
RESULT_FAIL en stuurt een fasewissel naar Recruitee (of een PATCH naar het order-endpoint van SmartRecruiters) met to_stage: disqualified en disqualify_reason: "Assessment score below threshold".disqualified (afwijsmail, sollicitatie sluiten). Er gaat geen interviewuitnodiging uit.(candidateId, jobId, orderId) al naar disqualified wijst. Zo ja, dan geeft hij direct 200 terug zonder de fase opnieuw te schrijven, zodat er geen dubbele afwijsmails ontstaan.attempt_count in het Recruitee-event loopt op met elke afleverpoging. Daarmee zie je in je logs of er structureel iets mis is met je endpoint.Mapping op vacatureniveau. pass → interview (uitnodiging verstuurd), fail → evaluation (rapport opgeslagen, geen uitnodiging, geen automatische afwijzing), incomplete → needs_action.
pass zet het ATS de kandidaat door naar interview en start de uitnodigingsautomatisering.fail blijft de kandidaat in evaluation. De recruiter bekijkt het rapport en besluit of hij de sollicitatie sluit of de kandidaat voor een andere functie overweegt. Er wordt niet automatisch een afwijsfase geschreven.incomplete gaat de kandidaat naar needs_action. Na een instelbare wachttijd (bijvoorbeeld 48 uur) kan Selection Lab één nieuwe uitnodiging sturen als de recruiter niets heeft gedaan. Een teller per (candidateId, orderId) voorkomt lussen. Standaard is het maximum één nieuwe uitnodiging, daarna gaat het record alleen nog naar handmatige beoordeling.Dit patroon past bij organisaties die geen automatische afwijzing toestaan zonder menselijke goedkeuring, en het houdt de pipeline schoon zonder dat recruiters elk gezakt resultaat direct hoeven te verwerken.
De ingestelde regel die een assessmentuitkomst (geslaagd, gezakt, onvolledig, afgebroken of proctoring mislukt) vertaalt naar een specifieke fase of status in het ATS. Pas na die faseupdate kan de automatisering van het ATS starten, zoals een interviewuitnodiging of een afwijsmail.
Nee. Een kandidaat die de sessie afbrak, verbinding verloor of in een proctoring-hold kwam, is niet gezakt. Map onvolledig, afgebroken en proctoring mislukt naar een aparte fase needs_action, zodat een recruiter besluit of hij opnieuw uitnodigt of de sollicitatie sluit.
Ja. De standaardmapping geldt op accountniveau en is per vacature, per offer en per assessmentpakket te overschrijven, zowel voor de fase als voor het uitnodigingsbeleid. Een wijziging draait al verwerkte kandidaten niet opnieuw. Daarvoor is een expliciet verzoek nodig.
Bij Recruitee komen fasewissels binnen als webhook-events met een event_subtype als stage_changed, disqualified of requalified, ondertekend met HMAC-SHA256 in de header X-Recruitee-Signature. Bij SmartRecruiters stuurt Selection Lab een PATCH naar het status-endpoint van de order met status, score en completedAt, waarna het ATS zijn eigen fase-automatisering toepast.
Recruitee probeert het maximaal negen keer opnieuw met oplopende wachttijden van 1 minuut tot 48 uur en logt elk verzoek 30 dagen. SmartRecruiters behandelt elk niet-2xx-antwoord als herhaalbaar. Je handler moet idempotent zijn en de combinatie candidateId, jobId en orderId controleren voordat hij een fase wijzigt, zodat retries nooit dubbele berichten sturen.