Webhook event
Alfa asks whether people may be contacted
contact.checkSent to your contact check endpoint (set with `PUT /v1/integration/contact-check-endpoint`), not your webhook endpoint. Before outbound sourcing first emails a person found for one of your jobs, Alfa sends your endpoint a signed `POST` (see the `contact-check` webhook) listing the people it is about to contact, each with a `ref` and the identifiers Alfa holds: `email`, `phone` and `linkedinUrl` (any can be null). Answer 200 with `{"results": [{"ref": "src_254928", "contactable": true}]}`, one entry for each `ref`, within 5 seconds. `contactable: false` stops that email and shows the candidate as not to be contacted. Alfa asks at the moment of sending and never caches an answer. Alfa fails closed: if your endpoint times out, cannot be reached, answers with a status other than 2xx, answers in another format, or gives no single clear answer for a person, the email is not sent and the recruiter can retry later.
Alfa sends this request to your contact check 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 request id.
type"contact.check"requiredAlways `contact.check`.
apiVersion"v1"requiredThe API version the payload follows.
requestedAtstringrequiredWhen Alfa asked.
organizationIdstringrequiredThe company whose outreach this is (its Company ID).
peopleobject[]requiredThe people Alfa is about to contact. Usually one.
Show fields
refstringrequiredIdentifies this person in the request. Echo it back in your answer.
candidateIdstringrequiredAlfa's id for the sourced candidate.
jobIdinteger | nullrequiredAlfa's id for the job they would be contacted about.
externalJobIdstring | nullrequiredThe ATS job the Alfa job is linked to.
firstNamestring | nullrequiredFirst name.
lastNamestring | nullrequiredLast name.
emailstring | nullrequiredThe email address Alfa would write to.
phonestring | nullrequiredPhone number, when Alfa holds one.
linkedinUrlstring | nullrequiredLinkedIn profile URL.
Response body
resultsobject[]requiredOne answer for each person in the request.
Show fields
refstringrequiredThe `ref` from the request.
contactablebooleanrequired`true` if Alfa may contact this person; `false` if it must not.
Responses
- 200Your answer for each person. Any other status, a redirect, a different format or no answer within 5 seconds means nobody in the request is contacted. Alfa does not retry the request; the recruiter can retry the outreach later.