Introduction to Webhooks
Webhooks allow JobAffinity to notify your system when an application changes step. Notifications are sent in batches, within minutes of the change.Available Events
TheProcessStepChange event is emitted each time an application changes step. If you need other events, let support know.
Configuration
To enable webhooks, contact Intuition-Software support: support@intuition-software.fr, providing the HTTPS URL of your endpoint. A single URL is configured per organisation. The notification body contains no personal data: only identifiers and links to the REST API. We recommend including an unguessable secret token in the URL (for examplehttps://example.com/webhook/jobaffinity/7f3a9c2e...) and rejecting any call that does not carry it.
If you have other needs (call authentication, signature, additional events), let support know.
Notification Format
JobAffinity sends aPOST request with a JSON body:
_self,candidate._self,job._self: paths to prefix withhttps://jobaffinity.frto fetch details via the REST APIid,candidate.id,job.id: identifiers of the application, the candidate and the jobstep.name: name of the current stepstep.status: position of the step in the process:START(first step),CURRENT(intermediate step) orEND(final step)step.date: date the application entered the step, inYYYY-MM-DD HH:MM:SSformat
The notification describes the state of the application at the time it is sent. If an application changes step several times before the notification is sent, a single notification is emitted, carrying the latest step. Treat each notification as a signal that “this application has changed” and re-read its state via the API, rather than as an event log.
Webhook Call History
You can view the history of webhook calls made by JobAffinity.Request
Response
Response Fields
id: identifier of the call, used for paginationevent: Type of triggered eventdatetime: Date and time of the webhook callresponse_status: HTTP status code returned by your endpoint, or0if the endpoint could not be reached (the error message is then inresponse_body)response_body: Response body from your endpointapplication: Reference to the related application
This resource is paginated. Use the
_next field to browse the complete history.Implementing an Endpoint
Best Practices
- Respond quickly: Acknowledge the request, then process it asynchronously
- Return a 2xx code: The code and the first 1024 characters of your response are kept in the history
- Check the token: Reject calls that do not carry your secret token
- Make processing idempotent: Re-read the current state of the application via the API on each notification
- Log calls: Keep a record of received webhooks for debugging
Endpoint Example (Python/Flask)
Endpoint Example (Node.js/Express)
Monitoring
Use the webhook history to verify that your endpoint responds correctly, debug errors and audit received notifications. Aresponse_status of 0 means your endpoint could not be reached; response_body then contains the error message.