Webhook event

A candidate's status changed

POSTcandidate.status_changed

Sent 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

  • idstringrequired

    The event id. Deliveries can repeat; ignore an id you have already processed.

  • type"candidate.status_changed"required

    Sent when a candidate's status changes after it was first reported, for example when a recruiter shortlists them.

  • apiVersion"v1"required

    The API version the payload follows.

  • occurredAtstringrequired

    When the event happened.

  • organizationIdstringrequired

    The company the event belongs to (its Company ID).

  • jobIdinteger | nullrequired

    Alfa's id for the job.

  • externalJobIdstring | nullrequired

    The ATS job the Alfa job is linked to.

  • candidateobject | nullrequired

    The candidate as of this event.

    Show fields
    • candidateIdstringrequired

      Alfa's id for the candidate: `app_…` for an applicant, `src_…` for a candidate Alfa sourced.

    • externalCandidateIdstring | nullrequired

      Your candidate id, for applicants you sent through applicant intake.

    • externalApplicationIdstring | nullrequired

      Your application id, for applicants you sent through applicant intake.

    • firstNamestring | nullrequired

      First name.

    • lastNamestring | nullrequired

      Last name.

    • emailstring | nullrequired

      Email address.

    • phonestring | nullrequired

      Phone number, when known.

    • linkedinUrlstring | nullrequired

      LinkedIn 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.

    • statusUpdatedAtstringrequired

      When the status last changed. Keep the newest one you receive.

    • scorenumber | nullrequired

      The candidate score from 0 to 100; for a sourced candidate, the sourcing score.

    • summarystring | nullrequired

      Alfa's summary of the candidate against the job.

    • resumeUrlstring | nullrequired

      A signed link to the resume PDF, valid for 24 hours. Null when there is none.

    • profileUrlstringrequired

      The 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.