Skip to Content
Builder Docs
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

  1. 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*, and current_weekday* when scanning prompts for manual/CSV inputs. Always use initial_context.* or add `\| fallback:` when referencing caller_number or called_number.
  2. 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": {...}}).
  3. gathered_context variable 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 = true in Workflow Settings.
    • Reference {{gathered_context.<var>}} on a downstream node after an outgoing edge transition triggers extraction.

Issue 2: "Pre-Call Fetch returned 4xx/5xx or delayed the opening greeting"

How Talkar Handles It

  • Pre-Call Fetch sends POST JSON {"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

  1. 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 API initial_context).
  2. 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

  1. Check Placeholder Braces & Parameter Types:
    • Both URL paths and body_template require double braces `{{param}}` (single {param} is sent literally!).
    • Valid tool parameter types are string, number, boolean, object, array (integer is invalid).
    • Static secret headers (authorization, token, secret, password, api-key) placed in Post-Call Webhook custom_headers are silently stripped—use Credentials Vault (credential_uuid) cleanly instead.
  2. Run the Built-In Tool Tester First (POST /api/v1/tools/{tool_uuid}/test):
    • Send { "llm_params": {...}, "preset_params": {...} } and inspect request_url, request_params, request_body, duration_ms, and diagnostic hints (400–5xx).
    • Note: in /test previews llm_params takes precedence over preset_params on colliding keys, whereas live calls give preset_parameters precedence and strip URL-consumed path params from query/body.
  3. Understand OAuth2 401 Auto-Retry vs. Non-Retry:
    • Pre-Call Fetch, Post-Call Webhook deliveries, Dynamic transfer_call resolvers, and MCP sessions automatically invalidate cache, refresh OAuth2 tokens, and retry once on 401.
    • Mid-call http_api tools (and /test runs) do NOT auto-retry on 401. Verify your Vault token_url (https://, non-private host), client_id, client_secret, scope, and audience, then re-save the credential to purge cached tokens.
  4. Check Voice-Path Timeout (timeout_ms): Default is 5000 ms. Keep heavy multi-API orchestration async inside n8n.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 than 10 seconds, calls with call_disposition == "voicemail_detected", or empty transcripts. Node-level final extraction flushes skip on pipeline_error or voicemail_detected.
  • Node never reached: Extraction schemas attached to a single Agent node only run when entering/leaving that node—call-wide fields belong in post_call_schema or on every relevant node.

Issue 5: "Live calls fail immediately before ringing"

Error / SymptomHTTP / Transport SignalCause & Fix
Blocked in agent_building stage402 on PSTN / APIUse 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_reserve402Master 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_pipeline402Sub-org hit its monthly_spending_cap_paise (raise/clear from Master settings) or org provisioning hasn't finished yet.
concurrency_limit_exceeded429 (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 pausedFailure 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/Configs403 Forbiddencontext_mapping transfer mode or Asterisk External PBX (vicidial) requires the organization's External PBX feature flag.

On this page