Webhooks

List webhooks **Greenhouse partners exclusive**

Webhooks are partner-configured subscriptions that fire when a Greenhouse event occurs (e.g. a candidate is hired or moves stages, a job post is created, an offer is approved). Each webhook listens to one event_action_type and posts the event payload to its endpoint_url. Scoped to webhooks owned by the calling partner application — webhooks created by other partners or by the customer in the Dev Center are not returned.

get/v3/webhooks

Request

  • Base URL
    https://harvest.greenhouse.io
  • URL
    https://harvest.greenhouse.io/v3/webhooks
  • Auth
    • OAuth 2
      Authorization code: https://auth.greenhouse.io/authorize
      Client credentials
      Token URL: https://auth.greenhouse.io/token scopes: harvest:webhooks:list
    • or HTTP bearer

Query parameters

cursorstring

Cursor link for pagination from previous page response header. Do not use any other parameters when using this.

per_pageinteger

Number of results per page

idsinteger[]

Comma separated list

gtestring date-time
ltestring date-time
gtstring date-time
ltstring date-time
gtestring date-time
ltestring date-time
gtstring date-time
ltstring date-time
fieldsstring[]

Comma separated list of fields to return

gtestring date-time
ltestring date-time
gtstring date-time
ltstring date-time

Filter by the timestamp of the most recent successful delivery, in ISO 8601. Pair with _start and _end suffixes for a range; excludes webhooks that have never delivered.

event_action_type'application_updated' | 'candidate_anonymized' | 'candidate_stage_change' | 'delete_application' | 'delete_candidate' | 'department_deleted' | 'hire_candidate' | 'interview_deleted' | 'job_approved' | 'job_created' | 'job_deleted' | 'job_interview_stage_deleted' | 'job_post_created' | 'job_post_deleted' | 'job_post_updated' | 'job_updated' | 'merge_candidate' | 'new_candidate_application' | 'new_prospect_application' | 'offer_approved' | 'offer_created' | 'offer_deleted' | 'offer_updated' | 'office_deleted' | 'reject_candidate' | 'scorecard_deleted' | 'unhire_candidate' | 'unreject_candidate' | 'update_candidate'

Filter by Greenhouse event (e.g. hire_candidate, candidate_stage_change, job_post_created). Each webhook listens to exactly one event type.

deactivatedboolean

When true, return only paused webhooks; when false, return only active webhooks. Omit to return both.

Response

Successful

idinteger
created_atstring date-time
updated_atstring date-time
namestring

Human-readable label for the webhook shown in Greenhouse's Dev Center (e.g. Workday hire export). Used only for identification — does not affect delivery.

endpoint_urlstring

HTTPS URL Greenhouse posts the event payload to. Must use port 80, 443, 1880, 8081, 9090, or 54015. Greenhouse pings this URL on create; if the ping fails, the webhook is still saved but starts in a deactivated state.

event_action_type'application_updated' | 'candidate_anonymized' | 'candidate_stage_change' | 'delete_application' | 'delete_candidate' | 'department_deleted' | 'hire_candidate' | 'interview_deleted' | 'job_approved' | 'job_created' | 'job_deleted' | 'job_interview_stage_deleted' | 'job_post_created' | 'job_post_deleted' | 'job_post_updated' | 'job_updated' | 'merge_candidate' | 'new_candidate_application' | 'new_prospect_application' | 'offer_approved' | 'offer_created' | 'offer_deleted' | 'offer_updated' | 'office_deleted' | 'reject_candidate' | 'scorecard_deleted' | 'unhire_candidate' | 'unreject_candidate' | 'update_candidate'

Greenhouse event that fires this webhook (e.g. hire_candidate, candidate_stage_change, job_post_created, offer_created). A webhook listens to exactly one event type.

max_attemptsinteger

Maximum number of delivery attempts Sidekiq will make before giving up. Must be between 1 and 7 inclusive; defaults to 6 in Greenhouse. Failed attempts are retried with exponential backoff.

additional_headersstring nullable

Extra HTTP headers Greenhouse appends to the delivery request, one per line in Header-Name: value format (e.g. X-Tenant: acme\r\nX-Source: greenhouse). null when no custom headers are configured.

error_recipient_emailstring nullable

Email address notified when a webhook delivery exhausts its retries. null disables failure notifications — there is no in-app alert otherwise.

deactivatedboolean

If true, the webhook is paused and will not fire on its event. Set automatically when a newly created webhook fails its initial ping; can be toggled by partners through PATCH /v3/webhooks/{id}.

last_deliveredstring date-time nullable

Timestamp of the most recent successful delivery, in ISO 8601. null when the webhook has never delivered a payload (including newly created webhooks).

client_idstring nullable

The client_id of the partner client application that owns this webhook. A webhook is owned by the application that created it through the API; ownership scopes which application can see and modify it. null when the webhook is unattributed — created in the Greenhouse Dev Center, or before provenance tracking — in which case every one of the partner's applications can see and modify it.

Changes

No recorded changes to this operation across all 1 revision of this API.