Zapier
The Webhooks by Zapier action fires an AgentPing heartbeat as the last step of any Zap.
Setup
Add a Webhooks by Zapier action.
Simple success ping:
- Event:
GET - URL:
https://eu.ingest.agentping.io/v1/ping - Query string params:
key: per-agentping_tokenagent: agent slugstatus:ok
Richer payload (cost, metadata, timestamps):
- Event:
POST - URL:
https://eu.ingest.agentping.io/v1/heartbeats - Payload Type:
JSON - Data:
{ "agent": "support-triage", "status": "ok", "cost_usd": 0.084, "metadata": { "zap_id": "<zap_id_from_trigger>", "items_processed": "<count_from_previous_step>" } } - Headers:
Authorization: Bearer ping_eu_018f3a2b9c1d7e8fa4b9c2d7e8f1a3b6
Pipe values from previous steps with Zapier's variable picker. The Zap history view shows each request and response.
Credentials
Paste the per-agent ping_ token directly into the URL (GET) or Authorization header (POST). Zapier redacts it after save.
Never use an apk_ API key in a Zap. A leaked Zap config or shared template compromises your entire team. See Authentication.
Failure paths
Zapier doesn't expose a clean "this Zap failed" branch by default. Two patterns:
- Filter + Paths: a Paths step after your main action. Success path fires
status=ok, failure path firesstatus=fail. Branch on whatever the upstream step produces. - Zap error webhook: Zapier's error-notification webhook, pointed at AgentPing. Catches Zap-level failures (timeouts, missing fields, disconnects) rather than business-logic failures.
Cost attribution
OpenAI or Anthropic via Zapier's native integrations expose prompt_tokens and completion_tokens. Two options:
- Compute cost in a Formatter by Zapier step (tokens × per-million rate) and pass
cost_usdin the heartbeat. - Send raw token counts as
metadata; the rate card prices them server-side if the model is on the card.