Qualitysignals Webhook

Business rationale

At StepStone, we care not only about quantity but also about the quality of applicants delivered to our clients. We’d like to build our stronger partnerships with ATSes and Clients and receive feedback on Application Status to be able to provide this feedback to jobseekers using our services.

We’d like to:

  • get some data proving the quality of applicants we send to clients and their ATSes in order to improve our services
  • show job seekers information about their applications in one place for all jobs they applied to

Technical implementation

Candidate Status flow for ATSes that implement ATSi Apply API:

  1. ATS receives an apply request and saves the value of ATSI application ID (an ‘Id’ field in the Header section) with the job application.
  2. Any change in the job application status on the ATS side should trigger sending a message to the ATSi Application Status service with a status change information and ATSi application ID correlated with the application (field called ‘Id’ in the Header section).

Authorization

Authorization to ATSi Application Status service is done by setting a token value into the request header.
A token value must be set under a request header key: X-AtsiToken.

Below is a sample curl request with an authorization token and an application status change body.

curl -X POST https://www.at-ats.com/qs-api/public/atsi/v1/ATS_ID \
  -H 'Content-Type: application/json' \
  -H 'X-AtsiToken: 1nwh2px2exa8a1d7006h0cnbof7' \
  -d '{
    "AtsiApplicationId": "string",
    "Status": "CONTACT",
    "RawStatus": "1st phone interview",
    "BusinessDate":"2022-07-29T11:26:11.106Z"
  }'

Please contact Connect Support team to get details of the test, tokens and ATS_ID.

Application status change message

Every change of a job application status should trigger sending an ApplicationStatus message to the ATSi Application Status service. The message must have a format as below and contain X-AtsiToken in the request header.

{
   "AtsiApplicationId": "Id from apply request body Header section", 
   "Status": "one of the standardized statuses",
   "RawStatus": "your raw status",
   "BusinessDate":"business date of the status change"
}

“AtsiApplicationId”, “Status”, “RawStatus” and “BusinessDate” are mandatory fields.

Available statuses:
IN_REVIEW – Candidate has successfully applied – Application is received by the ATS and is under review
CONTACT – Application has successfully passed the review and recruiter has scheduled for a call (contact) with the applicant (including phone screening)
INTERVIEW – Candidate has passed the initial screening and recruiter arranged for an interview, background check or competence test with the applicant.
OFFER – Recruiter created an offer for an applicant
HIRED – Candidate was hired
REJECTED – Candidate was rejected/has withdrawn interest

API Responses

Successfull response – HTTP 200 OK

{
   "Status": "OK"
}

Invalid status or ATS_ID – HTTP 400 BAD REQUEST

{
   "Status": "ERROR",
   "Message": "Invalid Status value, supported values are [IN_REVIEW, CONTACT, INTERVIEW, OFFER, HIRED, REJECTED]"
}

Invalid X-AtsiToken – HTTP 401 Unauthorized

{
   "Status": "ERROR",
   "Message": "Unauthorized, invalid token"
}