Webhook event
A candidate's status changed
candidate.status_changedSent when a candidate's status changes after it was first reported, for example when a recruiter shortlists them.
Alfa sends this event to your webhook endpoint as a signed POST. How to verify and acknowledge webhooks
Headers
Alfa-Signaturestringrequired`t=<unix seconds>,v1=<hex HMAC-SHA256 of "<t>.<raw body>">`, keyed with the endpoint's signing secret. Reject a request whose signature does not match or whose timestamp is more than 5 minutes from your clock.
Payload
idstringrequiredThe event id. Deliveries can repeat; ignore an id you have already processed.
type"candidate.status_changed"requiredSent when a candidate's status changes after it was first reported, for example when a recruiter shortlists them.
apiVersion"v1"requiredThe API version the payload follows.
occurredAtstringrequiredWhen the event happened.
organizationIdstringrequiredThe company the event belongs to (its Company ID).
jobIdinteger | nullrequiredAlfa's id for the job.
externalJobIdstring | nullrequiredThe ATS job the Alfa job is linked to.
candidateobject | nullrequiredThe candidate as of this event.
Show fields
candidateIdstringrequiredAlfa's id for the candidate: `app_…` for an applicant, `src_…` for a candidate Alfa sourced.
externalCandidateIdstring | nullrequiredYour candidate id, for applicants you sent through applicant intake.
externalApplicationIdstring | nullrequiredYour application id, for applicants you sent through applicant intake.
firstNamestring | nullrequiredFirst name.
lastNamestring | nullrequiredLast name.
emailstring | nullrequiredEmail address.
phonestring | nullrequiredPhone number, when known.
linkedinUrlstring | nullrequiredLinkedIn profile URL, when known.
source"application" | "sourced"required`application` for an applicant, `sourced` for a candidate Alfa found and approached.
status"shortlisted" | "suitable" | "not_suitable" | "sourced_potential"required`shortlisted`: a recruiter shortlisted them. `suitable` or `not_suitable`: the screening outcome. `sourced_potential`: a sourced candidate who fits the job.
statusUpdatedAtstringrequiredWhen the status last changed. Keep the newest one you receive.
scorenumber | nullrequiredThe candidate score from 0 to 100; for a sourced candidate, the sourcing score.
summarystring | nullrequiredAlfa's summary of the candidate against the job.
resumeUrlstring | nullrequiredA signed link to the resume PDF, valid for 24 hours. Null when there is none.
profileUrlstringrequiredThe candidate's page in Alfa, for signed-in recruiters.
Responses
- 200Any 2xx status acknowledges the event. Anything else, a redirect or no answer within 10 seconds is retried with exponential backoff for 24 hours.
