Instead of polling GET /v2/action-runs/{id} for every result, you can include a callback_url in your request. When the run reaches a terminal state, Zapier POSTs the result directly to your endpoint.
This is the recommended approach at high volumes — polling creates one request per run, while callbacks let Zapier push results to you.
Adding a Callback URL
Include the optional callback_url field in your POST /v2/action-runs request:
The response is unchanged — you receive a run ID immediately while Zapier executes the action asynchronously:
Validation Rules
The callback_url must meet these requirements, or the request returns 400 Bad Request:
Callback Payload
When the action reaches a terminal state, Zapier sends a POST to your callback_url. Your endpoint must return a 2xx response to acknowledge receipt.
Success
The id in the payload matches the run ID returned by the original POST /v2/action-runs response. You can use the same callback_url for every action run and dispatch on id to correlate each callback with its originating request.
Error
Security
Verifying Callback Authenticity
Each callback includes a Zapier-Callback-Signature header containing a JWT signed with Zapier’s private key. Verify it using Zapier’s public keys from our JWKS endpoint:
Replay Protection
The JWT includes iat and exp claims. Both PyJWT and jose validate exp automatically and will throw on an expired token — no manual timestamp check required. Callbacks are valid for 5 minutes from issuance.
Reliability
Retry Behavior
Zapier retries on 5xx responses and network errors using exponential backoff, up to 3 total attempts. Retries happen quickly (within seconds).
4xx responses are not retried. If your endpoint returns a 4xx, the callback is immediately marked failed — fix the endpoint issue and fall back to polling to retrieve the result.
After all retries are exhausted, the callback is marked failed. You can still retrieve the result by polling GET /v2/action-runs/{id}.
Idempotency
Network issues may occasionally cause your endpoint to receive the same callback more than once. Deduplicate on the run id in the payload body.
Failure Modes
Fallback: Polling
Callbacks are best-effort. If your endpoint is unavailable and retries are exhausted, fall back to polling:
See Retrieving Action Run Results for full details. Last modified on May 22, 2026