Skip to main content
Outbound webhooks let you push candidate lifecycle events from Outhire to your own systems in real time. When a candidate applies or moves between stages, Outhire sends an HTTP POST request to the URL you configure.

Supported events

EventDescription
candidate.appliedA candidate submits a self-serve application
candidate.stage_changedA candidate moves from one pipeline stage to another
A single webhook endpoint can subscribe to one or both events.

Setting up a webhook

1

Open webhook settings

Navigate to Settings > Webhooks in the Outhire app, or go directly to /settings/webhooks.Webhook management is available to admin users only.
2

Add an endpoint

Click Add webhook and enter the URL that should receive events. Your endpoint must:
  • Accept POST requests
  • Return a 2xx status code within 10 seconds
  • Be reachable over HTTPS (recommended)
3

Select event types

Choose which events your endpoint should receive. At least one event type is required.
4

Save and copy your signing secret

After saving, Outhire generates a signing secret (prefixed with whsec_). Copy this secret — you’ll need it to verify webhook signatures.

Custom headers

You can add custom HTTP headers that Outhire will include on every delivery to your endpoint. This is useful for authentication tokens or routing metadata.
  • Maximum 10 custom headers per webhook
  • Header names: up to 100 characters, must be valid HTTP token names
  • Header values: up to 2000 characters
  • Duplicate header names are rejected (case-insensitive)
The following headers are managed by Outhire and cannot be overridden:
  • content-type
  • webhook-id
  • webhook-timestamp
  • webhook-signature

Managing webhooks

From the webhooks settings page, admins can:
  • Enable / disable a webhook without deleting it
  • Delete a webhook permanently
  • View the signing secret for signature verification
  • Edit custom headers sent with each delivery
  • Send a test ping to verify connectivity
  • Inspect delivery logs with full request and response details
Each URL can only be registered once per company. To change event subscriptions, edit the existing webhook rather than creating a duplicate.

Test ping

Use the Send test ping button to verify your endpoint is reachable. The test ping sends a webhook.ping event:
{
  "event": "webhook.ping",
  "occurred_at": "2026-03-11T00:00:00.000Z",
  "webhook": {
    "id": 123,
    "url": "https://example.com/webhooks/outhire"
  }
}
Test pings are logged like normal deliveries and appear in your delivery history. webhook.ping is not a subscribable production event — it exists solely for testing.

Delivery logs

Every webhook delivery attempt is logged and visible in the admin UI. For each delivery you can inspect:
  • HTTP status code
  • Request headers and payload
  • Response headers and body (truncated to 4000 characters)
  • Delivery status: sending, success, or failed
  • Timestamp and attempt count

Delivery behavior

Outhire uses a unique event key per delivery to prevent duplicate sends:
EventKey format
candidate.appliedcandidate.applied:{webhookId}:{candidateId}
candidate.stage_changedcandidate.stage_changed:{webhookId}:{candidateId}:{occurredAtMillis}
webhook.pingwebhook.ping:{webhookId}:{uuid}
If a delivery has already completed successfully, the same event will not be sent again. Your endpoint should still be designed to handle the possibility of receiving the same event more than once — use idempotent processing where possible.

Next steps