Troubleshooting Playbooks
CRM & Tool Failures
Resolve Pre-Call Fetch wrapper/empty variable misses, downstream `gathered_context` injection, mid-call HTTP tool timeouts & OAuth2 401 rules, PCI skips, and blocked calls.
CRM & Tool Failures
Use this diagnostic checklist whenever dynamic customer variables appear blank, webhooks fail silently, or live calls refuse to connect.
Issue 1: "A template variable rendered empty—or publishing asked for a missing CSV column"
Root Causes & Fixes
- Bare system telephony variables: Talkar only auto-skips dotted paths (
`{{initial_context.caller_number}}`), fallback expressions (`{{caller_number \| fallback:there}}`),provider,campaign_id,source_uuid,current_time*, andcurrent_weekday*when scanning prompts for manual/CSV inputs. Always useinitial_context.*or add`\| fallback:`when referencingcaller_numberorcalled_number. - Pre-Call Fetch returned flat keys or
"data": {...}: Pre-Call Fetch ignores flat top-level JSON keys and"data"wrappers! Your endpoint must wrap variables inside{"initial_context": {...}}(or legacy{"dynamic_variables": {...}}). gathered_contextvariable is blank on a node: Extracted variables are never flattened into bare{{var}}for prompts and cannot be read on the same node that extracts them. You must:- Enable
cross_node_variable_injection_enabled = truein Workflow Settings. - Reference
{{gathered_context.<var>}}on a downstream node after an outgoing edge transition triggers extraction.
- Enable
Issue 2: "Pre-Call Fetch returned 4xx/5xx or delayed the opening greeting"
How Talkar Handles It
- Pre-Call Fetch sends
POSTJSON{"event": "call_inbound", "call_inbound": {"agent_id": ..., "from_number": ..., "to_number": ...}}with a 10-second fail-safe timeout before the Start Node delivers its greeting. - If Pre-Call Fetch times out or returns
4xx/5xx, Talkar proceeds without those keys rather than dropping the caller.
Fix Steps
- Keep Pre-Call Fetch response times under 1 second (front slow HubSpot/Zoho/Salesforce lookups with
https://n8n.talkar.in, or pass lead data upfront in Campaign CSV / Trigger APIinitial_context). - Add
`\| fallback:...`on every greeting template variable so a missed lookup never produces"Hi , calling about ".
Issue 3: "Mid-call HTTP Tool (http_api) fails, sends {param} literally, or gets 401 / 422"
Fix Steps
- Check Placeholder Braces & Parameter Types:
- Both URL paths and
body_templaterequire double braces`{{param}}`(single{param}is sent literally!). - Valid tool parameter types are
string,number,boolean,object,array(integeris invalid). - Static secret headers (
authorization,token,secret,password,api-key) placed in Post-Call Webhookcustom_headersare silently stripped—use Credentials Vault (credential_uuid) cleanly instead.
- Both URL paths and
- Run the Built-In Tool Tester First (
POST /api/v1/tools/{tool_uuid}/test):- Send
{ "llm_params": {...}, "preset_params": {...} }and inspectrequest_url,request_params,request_body,duration_ms, and diagnostic hints (400–5xx). - Note: in
/testpreviewsllm_paramstakes precedence overpreset_paramson colliding keys, whereas live calls givepreset_parametersprecedence and strip URL-consumed path params from query/body.
- Send
- Understand OAuth2
401Auto-Retry vs. Non-Retry:- Pre-Call Fetch, Post-Call Webhook deliveries, Dynamic
transfer_callresolvers, and MCP sessions automatically invalidate cache, refresh OAuth2 tokens, and retry once on401. - Mid-call
http_apitools (and/testruns) do NOT auto-retry on401. Verify your Vaulttoken_url(https://, non-private host),client_id,client_secret,scope, andaudience, then re-save the credential to purge cached tokens.
- Pre-Call Fetch, Post-Call Webhook deliveries, Dynamic
- Check Voice-Path Timeout (
timeout_ms): Default is5000 ms. Keep heavy multi-API orchestration async insiden8n.talkar.in.
Issue 4: "Post-call extracted variables are missing fields"
Likely Causes
- Skip Guards: Post-Call Intelligence (
post_call_schema) automatically skips calls shorter than10seconds, calls withcall_disposition == "voicemail_detected", or empty transcripts. Node-level final extraction flushes skip onpipeline_errororvoicemail_detected. - Node never reached: Extraction schemas attached to a single
Agentnode only run when entering/leaving that node—call-wide fields belong inpost_call_schemaor on every relevant node.
Issue 5: "Live calls fail immediately before ringing"
| Error / Symptom | HTTP / Transport Signal | Cause & Fix |
|---|---|---|
Blocked in agent_building stage | 402 on PSTN / API | Use WebRTC, Text Chat, or Mock (max 2 concurrent) while building; mark ready & fund wallet above deposit threshold (pending_deposit -> active) to unlock telephony. |
insufficient_balance or insufficient_reserve | 402 | Master wallet is <= ₹500, or lacks worst-case concurrency reserve (concurrent_calls * ceil(max_duration / 60) * rate). Top up or enable RBI-tokenized auto-recharge (token_xxx, never pay_xxx). |
spending_cap_exceeded / unprovisioned_pipeline | 402 | Sub-org hit its monthly_spending_cap_paise (raise/clear from Master settings) or org provisioning hasn't finished yet. |
concurrency_limit_exceeded | 429 (engine outbound), 402 (quota gate), WS frame (WebRTC), carrier XML (inbound) | Simultaneous active calls reached org/sub-org cap (default 10, 2 in agent_building). Wait for active calls to finish or reduce campaign max_concurrency. |
Campaign paused_reason = "circuit_breaker" | Campaign paused | Failure ratio (failed / error / initiation failures) hit threshold (>= 50% in 120s with >= 5 calls). Fix trunk credentials / caller IDs / + E.164 destinations, then Resume to reset the breaker. |
Feature-gated 403 on Tools/Configs | 403 Forbidden | context_mapping transfer mode or Asterisk External PBX (vicidial) requires the organization's External PBX feature flag. |