ZyanDocs

Voice agent troubleshooting

The problems people actually hit — nothing dialing, a campaign that will not approve, leads stuck at pending, and features that are gated rather than broken.

Almost every voice problem is one of six things. Work down this page in order: the earlier sections cause the later ones far more often than the other way round.

Nothing is dialing at all

Start here, because it has three very different causes.

CheckWhat it looks likeWhat to do
The voice functions are not deployedThe tab says The voice-agent functions are not deployed in this environment yet. Nothing is dialing.Believe it. Nothing in the admin will change this — contact Zyan support
The emergency stop is onPreflight reports emergency_stop_activeClear it in Settings → Voice & Telephony, then resume each campaign
Live calling is not armedPreflight reports live_calls_disabledLive dialing is armed at the platform level, not from Settings

The default runtime simulates calls

Zyan's default voice runtime places no calls to the public phone network. A campaign can be approved, running and apparently healthy while nothing dials. Real calling is armed by Zyan for your workspace — there is no switch for it in the admin portal. Until then use Voice Lab, scenario simulation, or a live usability test to a saved test number.

A campaign will not approve

SymptomCauseFix
The selected agent version is not publishedThe campaign points at a draftOpen the agent, save the draft, click Publish…, re-select it
The selected product version is not publishedThe pinned product is a draftPublish the product version and re-select it
No AI disclosure text is configuredHonest disclosure wording is empty on the agent versionFill it in under Behavior and turn-taking, then publish a new version
No recording policy is configured for the organizationThe workspace policy was never chosenSet Recording policy in Settings → Voice & Telephony
Transfer is enabled but no destination number is configuredAllow human transfer is on with an empty destinationSet a Destination number, or switch transfer off
Cold consumer AI telemarketing is denied by default policyAudience classification is consumer coldReclassify. There is no in-app override
Approve is greyed out: Run a passing preflight firstNo passing preflight existsClick Run preflight and clear every error
The Approve dialog will not submit with nothing failingWarnings need the typed acknowledgmentCopy the phrase from the Type “…” to continue label exactly

Leads never leave pending

Read the Block reason column on the campaign's Leads table first — it names the exact check.

Block reasonWhat it meansWhat to do
outside_calling_windowThe lead's local time is outside the windowNothing is broken; the dialer defers. Widen the window or fix the Timezone fallback
cooldown_activeThe retry cooldown has not elapsedWait, or lower Cooldown (min)
max_attempts_reachedThe lead used all its attemptsRaise Max attempts for future leads; this one is done
daily_cap_reachedThe campaign hit its daily capDialing resumes on the next allowed day, or raise Daily cap
lead_suppressedThe number opted out or is do-not-contactSuppressed leads are never dialed. Remove them
wrong_numberThe number was recorded as wrongCorrect the lead's number first
no_consent / consent_expiredA consent-backed campaign with no valid consent for that leadAttach consent with evidence, or remove the lead
invalid_destinationThe number is not valid E.164Fix or remove the number

A whole roster stuck outside the calling window is a timezone problem

If it is mid-morning your time and every lead reads outside_calling_window, the leads have no timezone of their own and your Timezone fallback is wrong for them.

The agent will not publish or behave

SymptomCauseFix
Publishing is blocked by a validation errorA named field is invalidThe error names the field — Identity and demeanor, AI disclosure wording, Opening line, Workflow, Transfer settings and the rest
The configuration panel refuses to renderThe raw JSON behind the panel is malformedFix the raw JSON before using structured settings — they are the same record
The agent talks over peopleInterruption sensitivity is too low; 1 prevents barge-in entirelyRaise it. The default is 4
The agent waits awkwardly before speakingWorkspace Human timing defaults, or a per-agent overrideAdjust Advanced voice behavior defaults, or clear the agent's override
Turn detection false-triggers constantlyEnergy-based detection picks up phone-line echo and noiseSwitch to Semantic, or arm noise cancellation
Stage budgets are not enforcedWorkflow-supervised voice runtime is offTurn it on in Settings; it applies to new calls
A published agent changed under youPublishing a new version archives the previous oneUse Edit as new draft so the live version keeps running while you work

Features that are gated, not broken

These are limits, not faults

  • Call recordings are not built. The Recording policy selector exists and preflight enforces it, but no audio is captured. Use the transcript.
  • Warm transfer is not available. It is selectable in the agent editor and labelled as not yet available — it falls back rather than warm-transferring. Use Cold transfer.
  • External verified caller ID is experimental and limited to test-mode campaigns. It produces external_caller_id_forbidden unless a platform flag is on.
  • Live PSTN dialing is armed at the platform level, never from Settings.

Voice Agents is missing from the menu

SymptomCauseFix
No Voice Agents item in the sidebarThe workspace is on the Base plan — the item is hidden and a deep link shows a plan noticeTalk to the workspace owner about the plan
The workspace loads but you cannot edit anythingYou have voice but not voice edit permissionAsk an owner to grant it
You cannot run a preflightRunning one needs voice edit permissionAsk someone with it to run one; results are then visible to you
The Twilio and Telnyx cards show no connect formConnecting is owner-only, or the provider is paused from its tileAsk the owner, or turn it back on under Settings → Integrations

Anything else

SymptomCauseFix
Preflight passed, launch was still refusedPreflight re-runs at launch and something changedRun it again and read the new rows
A clean preflight but no real callsThe mock runtime skips the caller-ID and live-call checksA clean preflight on the mock runtime is not proof of live readiness
A call is listed as preflight blockedA per-dial check stopped itOpen the check reference and the lead's block reason
The outcome on a finished call is emptyExtraction runs after the call endsReload in a moment; basic extraction always runs
A lead's CRM status did not moveCRM status sync is off, or the outcome was not terminalCheck the toggle and the call's CRM projection panel