What you need
- A Catch Hook URL from Zapier: create a Zap, choose Webhooks by
Zapier → Catch Hook as the trigger, and copy the
https://hooks.zapier.com/hooks/catch/...URL. - Or, for programmatic setup, a PyAI API key for the REST-hooks API (below).
Connect (console)
- In PyAI Console, open Integrations and find Zapier under Automation.
- Click Connect, paste the Catch Hook URL, and pick your events.
- Press Test. The sample envelope appears in Zapier’s trigger step for field mapping.
- Turn the Zap on. Every completed call fires it from then on.
Connect (REST-hooks API)
Zapier (or your own tooling) can subscribe directly with any active PyAI key:- Subscribing is idempotent on
(org, event, target_url): re-subscribing refreshes in place and returns the same hook id. - Unsubscribe:
DELETE /v1/integrations/zapier/hooks/{id}. - The event catalog with representative samples:
GET /v1/integrations/events.
The envelope
id is deterministic per (call, hook) and matches the
Idempotency-Key header, so a retried delivery can never fire a Zap twice.
Every POST also carries X-PyAI-Signature (HMAC-SHA256 of timestamp.body
with your org webhook signing secret, minted in Console → Developers).
Troubleshooting
- Zap shows stale or no sample. Press Test on the connection again; the sample envelope re-fires into the trigger step.
- Duplicate rows downstream. Check you did not connect the same Zap both via the console and the REST-hooks API as separate hooks; each is its own delivery. Delete one.
- Zapier was down during calls. Deliveries retry eight times over about twenty minutes, then surface as a visible error on the card with the payload preserved for replay.