Skip to main content
When your pipeline includes a callback output node, Ingestly sends the processing results to your webhook URL when a run completes.

Setting up callbacks

  1. Add a Callback output node to your pipeline
  2. Configure the URL where you want to receive results
  3. Optionally add custom headers (for example, an authorization token)
  4. Save and activate the pipeline

Payload format

Ingestly sends a POST request to your callback URL with a JSON payload containing the run results:
The data field contains the extracted data matching your pipeline’s output schema.

Webhook signing verification

To verify that webhook requests are genuinely from Ingestly, you can use webhook signing keys.
  1. Generate a webhook signing key in your organization settings
  2. Ingestly includes a signature in the request headers
  3. Verify the signature in your application before processing the payload

Verifying the signature

The X-Ingestly-Signature header contains a timestamp and one or more signatures in the format t=timestamp,v1=signature. During key rotation, the header includes multiple v1= signatures, one for each active key. To verify:
  1. Parse the header to extract the timestamp (t=) and signature(s) (v1=)
  2. Reconstruct the signed payload as {timestamp}.{raw_body}
  3. Compute an HMAC-SHA256 hash using your signing key
  4. Compare the result against each signature using a timing-safe comparison
You must use the raw request body bytes for verification, not a parsed or re-serialized object. If your framework parses the body (e.g., as JSON), the re-serialized output may differ from the original payload and verification will fail. Read the raw body before any middleware processes it.

Retry behavior

If your webhook endpoint returns a non-2xx status code, Ingestly retries the delivery:
  • Up to 3 retries with exponential backoff
  • Retry intervals: 1 minute, 5 minutes, 30 minutes
  • After all retries fail, the callback is marked as failed (the run itself is not affected)

Testing locally

To test webhooks during development, use a tunnel service to expose your local server:
  1. Start your local webhook endpoint
  2. Use a tunneling tool to get a public URL
  3. Configure the callback output with the public URL
  4. Upload a test document to trigger the pipeline
Use your production webhook signing key verification in development too, to catch integration issues early.