New to webhooks? This guide covers everything you need to get started.

What is a webhook?

Whenever something noteworthy happens — a new request comes in, or a status changes — PeopleCheck pushes a message to a URL you specify. That way, you don’t have to repeatedly query our endpoints or check the dashboard yourself to stay current.

Benefits of using webhooks

  • Real-time visibility: Find out about changes as soon as they occur.
  • Workflow automation: Kick off processes automatically as soon as new data comes in.
  • Less overhead: Skip the manual polling and let updates reach you directly.

The mechanics of webhooks

Whenever a candidate fills out their onboarding form, a check element wraps up, or a screening changes status, PeopleCheck fires off a notification to your configured endpoint. Each notification is delivered as an HTTP POST request carrying the event’s data, so your systems can respond without manual intervention.

Common scenarios

  • New requests: Keep your systems synced by automatically capturing incoming candidate requests.
  • Status changes: Be alerted as soon as a screening’s status shifts, so your team can respond right away.
  • Workflow triggers: Use any event to kick off internal automations — like firing off an email or updating a record in your HRIS.

Reading a webhook notification

Every notification is a JSON body with two top-level fields:
  • event — which of the event types just happened in your PeopleCheck backoffice.
  • data — the details of that event. Rather than a fixed, webhook-only shape, data is exactly the same payload returned by the REST endpoint tied to that event — see the Payload matches column below.
Since the shapes are shared, any parsing logic you’ve already built around the REST responses can be reused as-is when handling webhook notifications.

Event types

The status and progress.status values found in the payload correspond to the same screening statuses covered in Managing results.

Example payloads

The COMPLETED example above also represents the shape you’ll get for IN_PROGRESS, COMPLETED_WITH_ALERT, UNABLE_TO_VERIFY, and CANCELLED — only progress.status (and completed) change to reflect the screening’s new state.
For ELEMENT_COMPLETED, the type and uri fields tell you which element just finished and where to fetch it directly — the same pair of fields returned in each components entry of a Screening overview. The result object itself is identical to what that element’s own endpoint (like Alias) returns.

Confirming notification authenticity

When you set a token while creating the webhook, that token gets sent along with every notification in the Authorization header as a Bearer token. Check this token on your server so you can confirm each request truly originated from PeopleCheck before you act on it.
Authorization header

Give it a try

Visit Create a new webhook to set one up. Once in place, you’ll see how webhooks save you time while keeping your team in the loop and ready to act.