Skip to main content

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:
  1. You have a Knova agent created and published in the Partner Portal.
  2. You have a voice-capable phone number imported (Twilio or Telnyx) — or platform ops has configured the shared Knotie trunk for you.
  3. 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

  1. In the Partner Portal, go to Phone Numbers.
  2. Find the number you want to use for outbound calls.
  3. Open the actions menu and click Assign Agent.
  4. Select your Knova agent from the list and click Save.
When a Knova agent is assigned to a voice-capable number, outbound is automatically enabled. The platform also pre-provisions the calling route in the background so your first call starts immediately without a setup delay.

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.
  1. In the Partner Portal, go to AI Agents → Knova Agents.
  2. Open the three-dot menu on your agent and click Test Outbound Call.
  3. 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").
  4. Click Call.
What to expect:
  • 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.
  1. Go to Phone Numbers → click on your number → Outbound Settings.
  2. Click Generate Webhook Key.
  3. Copy the key immediately — it is shown only once. Only a secure hash of it is stored.
Store this key in your external system as a secret. If you lose it, revoke and regenerate in the portal.

Step 4 — Wire a GoHighLevel workflow

  1. In GoHighLevel, create a Workflow with a Webhook action.
  2. Set the URL to your integration gateway endpoint:
    https://hub.knotie-ai.pro/api/outbound-call
    
  3. Set the method to POST and add the auth header:
    Authorization: Bearer <your-webhook-key>
    
  4. Use GHL’s native customData format for the body:
    {
      "customData": {
        "from_number": "+14155551234",
        "to_number": "{{contact.phone}}",
        "dynamicdata_lead_name": "{{contact.full_name}}",
        "dynamicdata_outreach_topic": "your recent inquiry",
        "metadata_source": "ghl_workflow"
      }
    }
    
    The integration gateway auto-detects the GHL format — dynamicdata_* keys become dynamic variables passed to your agent.
  5. 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:
  1. Connect your Facebook page to GHL (Settings → Integrations → Facebook).
  2. Create a GHL Workflow trigger: Facebook Lead Form Submitted.
  3. Add a Webhook action pointing to the integration gateway (same as Step 4), mapping lead-form fields to dynamicdata_* keys.
Via n8n:
  1. Use the Facebook Lead Ads trigger node.
  2. Add an HTTP Request node: POST to https://hub.knotie-ai.pro/api/outbound-call with:
    Authorization: Bearer <your-webhook-key>
    
    Body:
    {
      "from_number": "+14155551234",
      "to_number": "{{ $json.phone_number }}",
      "dynamic_variables": {
        "lead_name": "{{ $json.full_name }}",
        "form_source": "{{ $json.ad_name }}"
      }
    }
    

Dynamic variables

Dynamic variables let you personalise each call. Any key in dynamic_variables substitutes {{key}} placeholders in the agent’s system prompt and greeting message. Example: If your agent’s system prompt contains:
You are calling {{lead_name}} about {{outreach_topic}}.
And you pass:
{
  "dynamic_variables": {
    "lead_name": "Sarah",
    "outreach_topic": "Q3 renewal"
  }
}
The agent receives:
You are calling Sarah about Q3 renewal.
Keys not present in dynamic_variables are left as {{key}} (no error is thrown).

Phase 1 limits

CapabilityPhase 1Phase 2
Portal test callYesYes
Webhook-triggered single callYesYes
Dynamic variables in prompt/greetingYesYes
Voicemail detectionHang upVoicemail-drop (leave message)
Campaigns / CSV dialingNot availableYes
Number pool dialingNot availableYes
Calling window / DNC / complianceNot availableMinimal layer

Troubleshooting

SymptomLikely causeFix
Agent does not speak firstOutbound greeting not configuredConfirm the agent is set up for outbound and has a greeting message
Dynamic variables not substitutedKey mismatch in promptEnsure the prompt uses {{key}} matching the dynamic_variables key exactly
NO_OUTBOUND_TRUNK errorThe calling route isn’t provisioned yetRe-assign the agent to the number to trigger setup; contact support if using the shared Knotie trunk
INSUFFICIENT_CREDITSCredit balance too lowTop up credits in the Partner Portal
NO_AGENT_MAPPINGAgent not assigned to this numberRe-assign the Knova agent to the number and try again
DISPATCH_FAILEDThe call couldn’t be startedRetry; if it persists, contact support
CALL_REJECTEDCallee rejected or was busyNormal — the person you called declined
CALL_NO_ANSWERNo answer / line temporarily unavailableRetry later; confirm the number is reachable
SIP_TRUNK_FAILUREThe telephony carrier returned an errorCheck your Twilio/Telnyx account status and credentials

Next steps