Skip to main content
Sixtyfour POSTs to your URL when work completes, so you react in real time instead of polling. Outgoing webhooks come from two sources that share one signed, retried delivery pipeline: Headers, signing, retries and URL rules are the same for both sources. Only the payload differs.

Async-job webhooks

Pass an optional webhook_url in the request body. When the job completes, Sixtyfour POSTs the result to that URL.

Supported endpoints

webhook_url must be an https:// URL. A plain http:// URL is rejected with 422.

Request

The endpoint returns a task_id immediately:

Payload

Result fields by endpoint

Find Email, Find Phone, Reverse Email and Reverse Phone wrap records in result.leads, including single-record requests. cost_credits is the amount charged for the job; cost_cents is the legacy field. The callback’s task_type matches the Sixtyfour-Event-Type header and the task_type that /job-status/{task_id} returns.

Job failures

Sixtyfour sends callbacks for completed jobs only. Failed, cancelled and timed-out jobs send no callback. Keep the task_id and poll GET /job-status/{task_id} if no callback arrives within your deadline.

Workflow outgoing_webhook block

Add an outgoing_webhook block to POST the run’s results to your URL. The block sends one request per run, not per row.

Block specs

The block adds three columns to the workflow output: webhook_status_code, webhook_response (first 2,000 characters) and webhook_success.

Payload

Failed rows in the payload

The block receives every row, including rows that failed at an earlier step. A failed row has Failed in the columns its failing step would have filled and no values from later steps. The payload has no per-row outcome field and an ordinary value can also be Failed, so neither that text nor row_count identifies failed rows. To identify failed rows, wait for the run to reach a terminal status and read the Status column of the final result. See Failed rows and Download results. A run where every row fails ends as failed, and its results can still be downloaded.

Delivery

Headers

The Sixtyfour-* headers are sent only when your organization has a signing secret. Without one, deliveries are unsigned and carry no Sixtyfour-* headers.

Retries

If every attempt fails, the delivery is dropped. The job or run itself is unaffected, and its results stay available by polling.

URL rules

Sixtyfour checks the destination before every attempt. URLs with credentials, localhost, *.local hosts, and hosts that resolve to private, loopback, link-local or other non-public IPs are rejected and not retried. A DNS lookup that fails counts as a failed attempt and is retried.

Receiver checklist

  • Return 2xx within the timeout and process the payload asynchronously.
  • Return 2xx for events you ignore. Any other status triggers retries.
  • Dedupe on event_id (or Sixtyfour-Event-Id).
  • Match deliveries to the task_id or run_id you started.
  • Once signing is enabled, reject deliveries without a valid Sixtyfour-Signature.

Polling fallback

Results stay available whether or not a webhook is delivered:
  • Async jobs: GET /job-status/{task_id}
  • Workflow runs: the status and download endpoints in Workflow Execution

Errors

For error responses (400, 403, etc.), see Handling Errors.