Webhook polling, outbound delivery to your HTTPS endpoints, and signature verification.
Webhook subscriptions are managed by account admins and owners in the HiringCenter app
(Settings -> API / Webhooks). API keys can poll with GET /webhooks/poll but cannot create or change
subscriptions.
For the full outbound delivery contract (HTTP request shape, supported event types such as
prospect.created, payload envelope, suppression via muteWebhook, and step-by-step signature
verification), see x-outboundWebhookDelivery at the end of this document.
HiringCenter signs outbound webhook requests with the per-webhook endpoint secret and includes:
X-HiringCenter-Signature: t=<unix_timestamp>,v1=<hex_hmac>
During secret-rotation grace windows, the header can contain multiple v1 values:
X-HiringCenter-Signature: t=<unix_timestamp>,v1=<current_hex>,v1=<previous_hex>
Each v1 is computed as:
HMAC_SHA256(endpointSecret, t + "." + rawBody)
Verification rules:
- Use the exact raw request body bytes/string (no JSON parse + re-serialize).
- Parse
tand allv1values from the header. - Enforce timestamp tolerance (recommended: 300 seconds) for replay protection.
- Compute expected signature once:
expected = HMAC_SHA256(endpointSecret, t + "." + rawBody). - Compare in constant time.
- Accept if any provided
v1matches. - Parse JSON only after signature verification succeeds.
Node.js helper:
Code
Poll Prospect Feed (Zapier)
Returns up to 100 of the account's most recently created prospects, newest first, as a bare JSON array
of flat snake_case records. This endpoint is intended for Zapier-style polling triggers: deduplicate on
id.
Only prospect.created is supported. When the account has no prospects, the array contains one sample
record with id sample_prospect_123.
Timestamp fields in this payload are ISO 8601 strings (created_at, updated_at).
query Parameters
eventTypestringEvent feed to poll. Only
prospect.createdis supported;prospect_created,prospect-created,new_prospect, andnew-prospectare accepted as aliases.Example: prospect.createdDefault: prospect.created
Responses
OK
idstringfirst_namestringlast_namestringemailstringphonestring11-digit phone number without
+, or an empty string.titlestringcompanystringstreet_addressstringcitystringstatestringpostal_codestringcountrystringlatitudenumber | nulllongitudenumber | nulltime_zonestringstage_idstringstage_namestringpipeline_idstringpipeline_namestringoffice_idstringoffice_namestringsource_idstringsource_namestringowner_idstringowner_namestringowner_emailstringlabelsstring[]license_statusstringnot_started,in_progress,licensed, or an empty string.created_atstring | null · date-timeupdated_atstring | null · date-timestarredbooleancompleted_meetingbooleanincomplete_meetingbooleanpast_meetingbooleanupcoming_meetingbooleandue_taskbooleanfuture_taskbooleanurlstringaccount_idstringhas_emailbooleanhas_phoneboolean

