PyAI x Zapier
Every completed call, a trigger for your whole Zapier account.
When a call completes, PyAI sends a signed envelope to your Zap: the event type, timestamp, and the full call payload. Connect a Catch Hook URL in seconds, or let Zapier subscribe through the hooks API itself. Sheets rows, CRM updates, emails, queue messages: if Zapier can do it, a completed call can start it.
- Status
- Live
- Direction
- PyAI to Zapier
- Setup
- Console, no code
- Cost
- Included
What lands in Zapier
One signed envelope per call, with the event type and the complete payload. The id is deterministic per call and hook, and it matches the Idempotency-Key header, so a retried delivery can never fire a Zap twice.
The envelope after a completed call
{
"id": "webhook:integration:call_8fK2:idst_9fK2:integration.deliver:v1",
"type": "recap.call.completed",
"occurred_at": "2026-08-01T09:13:20.000Z",
"data": {
"call_id": "call_8fK2mQ9xR4",
"status": "completed",
"record": {
"rep": {
"tldr": "Customer asked to reschedule Friday's installation.",
"summary": "The customer called to move their appointment...",
"next_steps": "Confirm the new slot by SMS."
},
"crm_fields": { "customer_phone": "+15551234567" }
}
}
}
Headers: X-PyAI-Signature: t=...,v1=... - Idempotency-Key: (same id)
# Or subscribe from the API instead of the console:
# curl -X POST https://api.pyai.com/v1/integrations/zapier/hooks \
# -H "Authorization: Bearer $PYAI_KEY" \
# -H "content-type: application/json" \
# -d '{"event":"recap.call.completed","target_url":"https://hooks.zapier.com/hooks/catch/..."}'Setup, end to end
- 1
In Zapier, create a Zap with the Webhooks by Zapier Catch Hook trigger and copy the URL.
- 2
In the PyAI console, open Integrations and choose Zapier, then paste the URL and pick your events.
- 3
Press Test; the sample envelope appears in Zapier for field mapping.
- 4
Turn the Zap on. Every completed call fires it from then on.
Delivery you can prove
Verified, and never twice
Every delivery carries proof it is really from us (the X-PyAI-Signature header, an HMAC your tools can verify) and a unique receipt id (the Idempotency-Key), so a retry can never post the same call twice.
Retried, then shown to you
If your endpoint hiccups, we retry with backoff (eight attempts over about twenty minutes). Still failing? The exact error waits on the integration card in your console, not in a log you never read.
Your credentials stay yours
Tokens, secrets, and webhook URLs are encrypted at rest and masked everywhere. They never appear in the messages we send.
Included, no extra fees
Integrations come with your Recap or AMD usage. There is no per-connection or per-delivery charge.
FAQ
Which events can trigger a Zap?
Five today: recap.call.completed (call summaries), amd.call.completed (answer detection), trace.scorecard.completed (QA verdicts), transcription.job.completed (batch transcripts), and cast.render.completed (long-form audio renders). The event catalog with samples is at GET /v1/integrations/events.
How do I verify deliveries are really from PyAI?
Every POST carries X-PyAI-Signature, an HMAC-SHA256 of the timestamp and body using your org webhook signing secret (minted in the console under Developers). Verify it in a Zapier filter or a code step before acting.
What happens if Zapier is down when a call completes?
PyAI keeps the delivery and retries with backoff (eight attempts over about twenty minutes). If it still cannot deliver, the error is visible on the integration card with the failed payload preserved for replay.
Is there a native PyAI app in the Zapier directory?
It is in progress. Today the Catch Hook URL and the REST-hooks API cover the same triggers; the directory app wraps them with guided setup when it ships.
Connect Zapier to PyAI today.
An instant sandbox key lets you test every delivery without billing. Create an account when you want saved projects, and fund a live key for production traffic.
Agents is live in beta. Sandbox keys have daily limits and never touch billing.