Zapier
The Jelliu app for Zapier turns events in your workspace into Zap triggers: a call ends, a contact converts, a campaign finishes. Zapier subscribes to the event, and Jelliu POSTs each occurrence to Zapier as it happens.
The app works in one direction only: Jelliu tells Zapier what happened. It has triggers and no actions. If you want your agents to act inside the apps you have connected to Zapier (create a CRM deal, add a spreadsheet row) during a conversation, connect Zapier MCP to your agents instead. See Hosted automation providers.
How it works
The Zapier API key
Zapier authenticates with its own credential, separate from workspace API keys:
A zk_ key reads call and contact data out of your workspace and streams it to any URL it subscribes. Treat it like an admin credential: store it only in Zapier, and revoke it when you stop using the integration.
Generate a key
In the dashboard, open Integrations → Zapier → Generate API Key. The key is shown once. Jelliu stores only a keyed hash of it, so a lost key cannot be recovered; generate a new one.
Generating and revoking Zapier keys is restricted to the workspace owner, in a signed-in dashboard session. The underlying endpoints (POST /api/zapier/api-key and DELETE /api/zapier/api-key/{id}) refuse workspace API keys, even full ones, with 403 FORBIDDEN:
This action requires a signed-in admin session — API keys cannot perform credential-management operations.
That way a leaked jl_ key cannot mint a long-lived zk_ credential that would survive revoking it.
Revoke a key
Revoke the key in the same dashboard screen. From then on, requests carrying it receive 401.
Revoking a key does not delete the subscriptions it created. Active Zaps keep receiving events, but Zapier can no longer authenticate to unsubscribe them. Turn off your Zaps first, then revoke the key.
Connect Jelliu in Zapier
Pick a trigger
In the Zap editor, search for Jelliu and choose one of the triggers, for example Call Completed.
Connect your account
Paste the zk_ key. Zapier checks it with GET /zapier/triggers/contact.created?limit=1, which returns 200 for a valid key and 401 otherwise.
Load sample data
Zapier calls GET /zapier/triggers/{event}?limit=3 to show recent records from your workspace while you map fields. Each sample has the same shape as a live event, so the fields you map are there when the Zap runs. See Sample data.
Triggers
duration is in seconds. outcome is a string such as sale_closed, callback_scheduled, no_answer, voicemail or escalated_to_human, and can be null when there is no analysis. sentimentScore is null when the call was not scored; 0 is a real neutral score. Treat every field as optional.
Call Escalated has two producers
Since 2026-09-15, Call Escalated fires for the agent’s own hand-overs as well as for admin warm transfers. Tell them apart with escalatedBy:
The admin path sends no escalatedBy key at all. A Zap that filters on escalatedBy equals admin will match nothing; filter on escalatedBy equals agent, or treat a missing value as the admin path. Expect many more Call Escalated runs than before — the admin warm transfer was rare, and agent hand-overs are not.
Routing a conversation to another agent of your workspace is deliberately not an escalation and fires nothing: no person picked up.
New Contact fires for every row of an import. Deliveries for a batch are sent one at a time, so a Zap on New Contact can take a while to catch up after a large CSV. If you only care about some contacts, add a Filter step in the Zap.
Zapier payloads are leaner than outbound webhooks: call.completed here does not include dataCollection or kpiData. If you need the extracted data, subscribe a webhook to call.completed instead, or use both.
Delivery
For every active subscription whose event matches, Jelliu sends:
The Jelliu Zapier app adds an id to each record (the callId, contactId or campaignId from data).
A deactivated subscription stops receiving events silently: Zapier is not told. If a Zap stops firing, check is_active and last_error with GET /api/zapier, then turn the Zap off and on again in Zapier, which creates a fresh subscription.
contact.dnc is sent once per contact, when it becomes opted out, whichever channel the request came from. A repeated request sends nothing. One opt-out can cover several contacts that share a number or address, and each one gets its own delivery.
Endpoints
The Zapier app calls these for you. You can also call them directly, for example to feed the same REST Hooks into your own automation tool.
All /zapier/* endpoints authenticate with x-zapier-api-key.
Subscribe
POST /zapier/subscribe
One of call.completed, call.failed, call.voicemail, call.escalated, campaign.completed, contact.created, contact.converted, contact.dnc.
Where events are delivered. A valid URL of up to 2000 characters that resolves to a public address: private, internal and loopback targets are rejected.
Response 201:
Keep data.id: it is what you pass to unsubscribe.
Unsubscribe
DELETE /zapier/subscribe/{id}
Response 200:
An unknown or already removed id returns 404 with code SUBSCRIPTION_NOT_FOUND and the message Zapier subscription not found.
Sample data
GET /zapier/triggers/{event}?limit=10
Returns the newest records for the event as a flat JSON array, without a response wrapper, which is the shape Zapier expects. Each record has the shape of a live delivery, { id, event, timestamp, data }. limit accepts 1 to 100 and defaults to 10. A page parameter is accepted and ignored.
Samples use the same envelope and the same camelCase data fields as live events (see Triggers), so a Zap built from a sample maps fields that exist on every delivery:
Samples come from records already in your workspace, so a new workspace can return [] for a trigger until the first matching call, campaign or contact exists.
How samples are selected:
List subscriptions
GET /api/zapier lists the workspace’s Zapier rows. Unlike the endpoints above, it is part of the REST API: authenticate with a workspace API key (read is enough).
Rows whose event is __api_key__ represent generated Zapier API keys, not subscriptions; their id is what the dashboard revokes. The key itself is never returned.
Errors
Limits
- 50 per workspace, keys and subscriptions combined. Every active Zapier API key and every active subscription counts toward the same ceiling of 50. Remove Zaps you no longer use.
- Rate limit.
/zapier/*accepts 200 requests per minute per client IP. - No plan gate. The Zapier triggers are available on every plan.

