A webhook is an event notification system. When a specific event occurs in Gupy, a JSON with the data is triggered to a URL registered in the webhook.
Upon receipt of the webhook, the target system can take the steps you need.
An example of use is the hiring of the candidate, where an event is triggered with the data of the candidate hired for the registered URL.
Thus, the developer can use the data of this new employee and update the database of employees of the target system.
In this example, the target system would receive a message like this:
POST https://mycompany.com/callback
Authorization: XXXXXX
{
"companyName": "ACME",
"id": "24e99765-8583-4be5-87ae-489c86642964",
"event": "candidate.hired",
"date": "2019-06-19T23:48:46.952Z",
"data": {
"job": {
"id": 19139,
"name": "Developer"
"departmentCode": "D-100",
"roleCode": "R-200",
"branchCode": "B-300",
},
"application": {
"id": 2937132,
"vacancyCode": null,
"score": 71.570454783086,
"preHiringInformation": {},
"tags": ["tagHired"],
"hiringDate": "2019-06-19T03:00:00.000Z",
"currentStep": {
"id": 86547,
"name": "Contratação"
}
},
"candidate": {
"id": 1999450,
"name": "John",
"lastName": "Doe",
"email": "[email protected]",
"identificationDocument": "25272626207",
"countryOfOrigin": "Brasil",
"birthdate": "1994-11-16",
"addressZipCode": "",
"addressStreet": "Rua Haddock Lobo",
"addressNumber": "595 - 10º andar",
"addressCity": "São Paulo",
"addressState": "São Paulo",
"addressStateShortName": "SP",
"addressCountry": "Brasil",
"addressCountryShortName": "BR",
"mobileNumber": "+5511999990000",
"phoneNumber": "+551130000000",
"schooling": "technical_course",
"schoolingStatus": "complete",
"disabilities": false,
"gender": "Male"
}
}
}
We will expect a 200 OK response status from your server. If your server does not return this status, the API will attempt to send the notification over the next 2 hours with an increasing delay. The first attempt will happen after 1 minute, and the next ones after 5, 15, 30 minutes. Once the delay hits 30 minutes it will stay constant until the end of the retry period.
Note that you can also specify the authorization header that will be sent.
Notification Properties
Every notification will be sent with the following properties:
Property | Type | Description |
---|---|---|
id | string | Indentification of the event that generated the identification, can be used for deduplication |
companyName | string | The name of the Gupy customer |
event | string | Name of the event that generated the notification. |
date | datetime | Date of the event that generated the notification |
data | object | Notification data. |
Available Notifications
At this moment, the following events are available:
Event | Description |
---|---|
application.created | Sent when a candidate applies for a job or is assigned to a job in the platform. |
application.completed | Sent when a candidate completes the application for a job |
application.moved | Sent when a candidate is moved between steps of a job. |
application.assigned | Sent when an application is assigned to another job. |
application.pre-hiring-information-filled | Sent when the candidate completes the pre-hiring step |
candidate.hired | Sent when a candidate is hired by the company. |
job.published | Sent when a job is published |
job.status-changed | Sent when the status of a job is changed (eg. from published to frozen. |
job.changed | Sent every time a job is changed. |
pre-employee.moved | Sent when a pre-employee in an admission process is moved from a status to another. |
Important Notes
The URL used to receive the webhook MUST be a valid, publicly exposed, HTTPS address. To configure the webhook, see Webhook Configurarion.
URLs with high rate of error (100% of errors in the last 7 days) will be removed without notice.
Webhook expects a response in 30000ms. If the response has not occurred before this time, we consider it a timeout, consequently, an error.
The system guarantees at least once delivery, meaning that there can be multiple notification of the same event, use id property to identify duplicates.
There is no guaratee of order of delivery, use date property to verify which event happened first and sort the events. i.e. an application.moved can be notified before application.created
DO NOT USE services like requestcatcher which can expose data.
When we set a value in the clientHeaders, the default header 'Content-type: application/json;charset=utf-8' is no longer sent because the header values become what was defined. If it is necessary for the Content-type to always have the default value, we recommend including it in the clientHeaders
Sender IP addresses
In order to receive our webhooks, your servers must be able to receive HTTPS requests from the following IP addresses. Don't forget to create entry rules in your firewall for these IPs:
- 3.225.75.195
- 3.213.125.198
- 3.81.178.137
- 18.235.49.246
- 18.209.132.16
- 34.231.178.88
- 34.237.26.228
- 52.3.10.144
- 54.87.127.240