Overview
Knova Outbound Calling lets your Knova agent initiate outbound calls — calling leads, customers, or prospects on your behalf. The agent speaks first and can address each person by name using dynamic variables you inject at call time. Phase 1 covers:- Portal test call — trigger a one-off call directly from the Knova Agents page
- Webhook trigger — connect GoHighLevel, n8n, Zapier, or Facebook Lead Ads to fire calls automatically
- Dynamic variables — inject lead name, topic, or any custom value into the agent’s prompt and greeting at runtime
Outbound calling is available in Phase 1. Campaigns, CSV dialing, number-pool rotation, and voicemail-drop are Phase 2 (coming soon).
Prerequisites
Before placing outbound calls, confirm:- You have a Knova agent created and published in the Partner Portal.
- You have a voice-capable phone number imported (Twilio or Telnyx) — or platform ops has configured the shared Knotie trunk for you.
- The phone number is assigned to your Knova agent (see Step 1 below).
If you don’t have your own Twilio or Telnyx account, contact support to confirm the shared trunk is set up. Calls via the shared trunk deduct both AI credits and telephony credits.
Step 1 — Assign a phone number to your Knova agent
- In the Partner Portal, go to Phone Numbers.
- Find the number you want to use for outbound calls.
- Open the actions menu and click Assign Agent.
- Select your Knova agent from the list and click Save.
Step 2 — Run a test call from the portal
Use the built-in portal test to verify end-to-end before wiring any external system.- In the Partner Portal, go to AI Agents → Knova Agents.
- Open the three-dot menu on your agent and click Test Outbound Call.
- In the modal:
- Enter the destination number (E.164 format, e.g.
+14155551212) — use your own mobile first. - Optionally add dynamic variables — key/value pairs that replace
{{key}}placeholders in the agent’s prompt and greeting (e.g.lead_name = "Sarah").
- Enter the destination number (E.164 format, e.g.
- Click Call.
- The agent initiates the call and speaks first (outbound agents always greet the callee).
- If you added dynamic variables, the agent uses those values in the greeting (e.g. “Hi Sarah, I’m calling about your renewal”).
- If the call goes to voicemail, the agent hangs up in Phase 1 (voicemail-drop is Phase 2).
Step 3 — Generate an outbound webhook key
To trigger calls from external systems (GHL, n8n, etc.), generate a webhook key for the phone number.- Go to Phone Numbers → click on your number → Outbound Settings.
- Click Generate Webhook Key.
- Copy the key immediately — it is shown only once. Only a secure hash of it is stored.
Step 4 — Wire a GoHighLevel workflow
- In GoHighLevel, create a Workflow with a Webhook action.
- Set the URL to your integration gateway endpoint:
- Set the method to
POSTand add the auth header: - Use GHL’s native
customDataformat for the body:The integration gateway auto-detects the GHL format —dynamicdata_*keys become dynamic variables passed to your agent. - Test the workflow on a contact. The agent calls the contact and addresses them by name.
Step 5 — Wire Facebook Lead Ads (via GHL or n8n)
Facebook Lead Ads don’t post webhooks directly to arbitrary URLs, but you can bridge them: Via GoHighLevel:- Connect your Facebook page to GHL (Settings → Integrations → Facebook).
- Create a GHL Workflow trigger: Facebook Lead Form Submitted.
- Add a Webhook action pointing to the integration gateway (same as Step 4), mapping lead-form fields to
dynamicdata_*keys.
- Use the Facebook Lead Ads trigger node.
- Add an HTTP Request node:
POSTtohttps://hub.knotie-ai.pro/api/outbound-callwith:Body:
Dynamic variables
Dynamic variables let you personalise each call. Any key indynamic_variables substitutes {{key}} placeholders in the agent’s system prompt and greeting message.
Example:
If your agent’s system prompt contains:
dynamic_variables are left as {{key}} (no error is thrown).
Phase 1 limits
| Capability | Phase 1 | Phase 2 |
|---|---|---|
| Portal test call | Yes | Yes |
| Webhook-triggered single call | Yes | Yes |
| Dynamic variables in prompt/greeting | Yes | Yes |
| Voicemail detection | Hang up | Voicemail-drop (leave message) |
| Campaigns / CSV dialing | Not available | Yes |
| Number pool dialing | Not available | Yes |
| Calling window / DNC / compliance | Not available | Minimal layer |
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Agent does not speak first | Outbound greeting not configured | Confirm the agent is set up for outbound and has a greeting message |
| Dynamic variables not substituted | Key mismatch in prompt | Ensure the prompt uses {{key}} matching the dynamic_variables key exactly |
NO_OUTBOUND_TRUNK error | The calling route isn’t provisioned yet | Re-assign the agent to the number to trigger setup; contact support if using the shared Knotie trunk |
INSUFFICIENT_CREDITS | Credit balance too low | Top up credits in the Partner Portal |
NO_AGENT_MAPPING | Agent not assigned to this number | Re-assign the Knova agent to the number and try again |
DISPATCH_FAILED | The call couldn’t be started | Retry; if it persists, contact support |
CALL_REJECTED | Callee rejected or was busy | Normal — the person you called declined |
CALL_NO_ANSWER | No answer / line temporarily unavailable | Retry later; confirm the number is reachable |
SIP_TRUNK_FAILURE | The telephony carrier returned an error | Check your Twilio/Telnyx account status and credentials |
Next steps
- Outbound webhook API reference — full request/response spec for integrating external systems
- Knova Agents overview — set up and manage Knova agents
- Phone numbers — import and manage phone numbers