Custom webhooks are intended for developers and technical users. If you would
prefer a no-code solution, use Zapier
Inbound to trigger calls and Zapier
Outbound to receive results instead.
Webhooks require an active AI Calling subscription. If your subscription
lapses, hyzl pauses your existing webhooks automatically. They resume when you
resubscribe. If you create a new webhook without an active subscription, the
request returns HTTP 402.
Inbound webhooks: trigger a call
Inbound webhooks let external systems trigger AI calls on-demand. When your customer relationship manager (CRM) sends a request to your inbound webhook URL, hyzl starts a call automatically. Any other system can send the same request.Set up an inbound webhook
- Go to Integrations
- Find the Custom inbound webhook card and click View integration
- Click Create inbound webhook
- Click Create Campaign to set up the AI script
- Write your prompt
- Test the prompt
- Use the webhook URL to trigger calls from your CRM
Endpoint
Request body
Field names are camelCase. hyzl ignores snake_case names such as
first_name and phone_number. It places the call with phoneNumber only.Response
201 response means hyzl accepted the request. The campaign attached to the webhook must be active before hyzl places the call. If you are out of credits, hyzl records the call as cancelled and still returns the same response status.
Customize the phone call
The webhook is bound to an inbound campaign in AI Calling. That campaign owns every call setting, including voice, call script, voicemail message, and follow-ups. It also owns call forwarding, keypad navigation, language, and background ambiance. Whatever is on the campaign is what every webhook-triggered call uses. To change call behavior:- Open AI Calling
- Find the campaign your webhook uses. hyzl labels it as inbound.
- Edit any setting: voice, script, follow-ups, voicemail, etc.
- Save
View results
Every call triggered by the webhook appears in the bound campaign’s results table in AI Calling. That is the same place outbound campaign results live. Each call result includes the transcript, recording, AI summary, lead warmth classification, and extracted action items. See Call Results & Transcripts for what is in the detail panel. You can also get each completed call at your own endpoint as it happens. To do that, configure a Response Webhook on the inbound webhook. The section below covers it. hyzl POSTs the result back to your URL when the call ends.Outbound webhooks: receive call results
Outbound webhooks broadcast every call completion event to your configured endpoint(s). Whenever a call finishes, hyzl POSTs the results to every outbound webhook URL you have configured. The call can come from a manual campaign, an inbound webhook trigger, or a test call.Creating an outbound webhook manually is only for custom webhooks. If you want
to send call results to Zapier, set up an outbound Zapier
integration instead. hyzl creates its
outbound webhook automatically and labels it Managed by zapier.
Set up an outbound webhook
- Go to Integrations
- Find the Custom outbound webhook card and click View integration
- Click Create outbound webhook
- Enter your endpoint URL
- Choose the HTTP method (POST or GET)
- Add custom headers for authentication if you need them (see Custom Headers)
- Click Create Webhook to save it
- Click the Test button on the webhook’s card to check connectivity
Event
Outbound webhooks emit a single event:Payload
Field reference
Status values
Lead Warmth values
Sentiment values
The
call.recipient field names are camelCase (firstName, phoneNumber).
It has no company field. Build your integrations against the names shown
above.Response webhooks
You configure a response webhook on an inbound webhook. It sends the call result back to one endpoint after an inbound-triggered call completes. This forms a request/response pattern.Set up a response webhook
- Click Webhook Settings on your inbound webhook
- Scroll to Response Webhook (Optional)
- Enter your callback URL
- Add custom headers if you need them
type: "call.completed". Its payload has the same overall shape as the outbound webhook payload, with two differences.
First, recipient, summary, transcript, recording, duration, analysis, and tokensConsumed are all optional. Some calls never connect, so they will not have all fields populated. Second, the webhook object carries the inbound webhook’s slug instead of type ({ "id": "...", "slug": "your-webhook-slug" }).
Outbound webhooks use type: "call.finished", not call.completed.
Custom Headers
Custom headers let you authenticate against CRMs or other systems that require API keys or access tokens.Add headers
- Expand Custom Headers (Optional) while you create or edit a webhook
- Click Add Header
- Enter header name and value (e.g.
Authorization,Bearer token123)
FollowUp Boss example
FollowUp Boss requires these headers:X-System→atllas-integrationX-System-Key→your-followupboss-api-keyAuthorization→Basic {base64-encoded-key}
HubSpot example
HubSpot workflow webhooks typically do not require custom headers. Just configure the webhook URL in your HubSpot workflow. For HubSpot API endpoints, add:Tests and logs
Test button
Each webhook has a Test button that sends acall.completed-shaped payload with example data:
- The URL is reachable from our servers
- Your custom headers are correct
- Your endpoint responds with a 2xx status
Fix common problems
Webhook not firing
For inbound webhooks:- Check that you created the campaign (click Create Campaign)
- Check the campaign has a prompt configured
- Make sure you send the correct payload format (
calls.execute)
- Check the URL is correct and reachable
- Use the Test button to check connectivity
Authentication errors
If receiving 401 or 403 errors:- Check custom headers are correct
- Check that the API key has not expired
- Test with a simple endpoint (such as
webhook.site) first - Review the destination system’s authentication requirements
Call not triggering from inbound webhook
- Make sure campaign status is not
executingorcompleted - Check you have available calling credits. hyzl records an out-of-credit call as cancelled in the campaign’s results
- Check the phone number is in correct format (
+1...)
Security best practices
- Keep webhook URLs secret. Treat them like API keys
- Use HTTPS only. Never use HTTP endpoints
- Rotate headers periodically. Update API keys regularly
- Test in staging first. Use the Test button before production

