Skip to main content

Troubleshooting

Most Studio problems fall into three buckets: the flow never started, the flow started but took the wrong path, or a block did not do what you expected. Work through them in that order.

Start here​

  1. Open Executions. This answers the biggest question first: did the flow run at all?
  2. Is the flow Live? Draft and Paused flows never run on real events.
  3. Did you publish after your last edit? Editing changes the draft only.
  4. Is the conversation owned by a human? Studio skips conversations assigned to an agent.
  5. Rehearse it. For a chatbot, the simulator reproduces the conversation in seconds without sending anything. For everything else, Test Run walks the draft once with sample data.
Read the run instead of guessing

Most of the tables below can be answered directly from a run. Handed to this block in the step panel shows every setting with its variables filled in, so an empty variable or a wrong branch is visible rather than inferred. See Executions.


The flow never runs​

SymptomLikely causeFix
Nothing happens on a real messageThe flow is still Draft, or the last edit was never publishedClick Publish.
Nothing happens and the badge reads PausedSomeone paused the flow, or Teloring paused it because a dependency was deletedOpen ⚙ Flow Settings → Resume flow. If the flow card shows a warning badge, fix the block it names and publish instead.
Nothing happens, and the flow is liveThe trigger's inbox filter does not include the inbox you tested fromOpen the trigger and tick the right inbox — or untick everything to listen on all.
It worked, then stoppedAn agent is assigned to the conversationStudio stays out of conversations a human owns. Test with a fresh conversation.
It stopped for one specific customerA previous run handed that conversation to a humanThe handover sticks until the conversation is resolved or a flow runs End Session. Resolve it and try again.
The flow card shows a warning badgeA dependency was deleted — usually an analytics alertFix the block it names, then publish again.
A scheduled flow never firesThe schedule row's timezone, or the day/time, is not what you thinkCheck the row. Remember a Days interval on Recurring Schedule is capped at 24 hours.
A webhook returns an errorThe request does not match the learned formatTurn Learn next request back on and send the new shape once.
A Conversation Changed / Object change flow does not fire when another flow or the AI Agent made the changeBy default these triggers ignore changes made by automations, so a flow cannot loop on itselfOpen the trigger and switch on Also react to changes made by automations. Chains still stop after 5 flows deep.
Only one of several matching flows runsIt usually does not — all matching live flows run. But once one hands the conversation to a human, the rest are skippedCheck whether an earlier flow has Assign AI / human agent on.

The flow runs but takes the wrong path​

SymptomLikely causeFix
A condition never matchesThe Value / variable field has braces around itWrite message.content, not {{message.content}}, in a condition operand.
A condition never matches, part twoUsing equals on free textSwitch to contains. Real people type "sales please", not "sales".
A numeric comparison always failsThe value is not a numbergreater than and friends only work on numbers. A non-numeric value never matches.
Two branches ran when you expected oneMatch mode is All matching branchesSwitch to First match only, and order the rules from most specific to most general.
Nothing after the condition ranNo rule matched and there is no ELSE branchAdd an ELSE branch.
The flow is stuck after a questionA post-wait condition matched nothing and there is no ELSEThe flow waits for the next message and re-evaluates. Add an ELSE branch or an End Session block.
A branch runs but does nothingIts output port is not connectedDrag a connector from that port.
A block never runsIt has no incoming connectionThe block shows This block is not connected to anything. Wire it in.
Two messages arrived at the same time despite a WaitWait only delays its own branchSiblings run immediately by design. Put the Wait on the shared path if you want everything delayed.

A variable is empty​

tip

Open the run in Executions, click the step, and read Handed to this block. It shows the template you wrote next to the value it became, which usually identifies the problem immediately.

SymptomLikely causeFix
{{some.variable}} shows up literally in a messageThe key does not exist at that point in the flowDrag it from Available Variables instead of typing it. If it is not listed, the block that produces it is not upstream.
{{contact.name}} is emptyThe contact is brand new and has no name yetBranch on contact.name with exists, or write a greeting that reads well without it.
{{conversation.id}} is emptyThe trigger has no conversation — schedule, webhook, analytics alert, agent statusSupply a conversation ID yourself, from the payload or a lookup.
{{http.json.something}} is emptyCapture response is off, or the field is not in the responseTurn Capture response for next actions on, then send {{http.body}} to a Private Note to see exactly what came back.
{{answers.my_field}} is emptyThe form field's Field ID is not my_fieldField IDs are the variable names. Check the form.
{{webhook.body.x}} is emptyThe payload does not contain x, or the format was never learnedUse Learn next request and read the learned variable chips.
{{var.something}} is emptySaved variables are per flowA var.* value saved by one flow is not visible to another.

A block fails​

BlockSymptomFix
Reply MessageNothing is sentCheck the conversation ID resolves, and that the channel can still send (an expired WhatsApp window, a disconnected inbox).
HTTP RequestAlways failsStudio only calls public addresses. Localhost, private networks, and internal hostnames are blocked.
HTTP RequestRed JSON boxThe body is not valid JSON after variables are filled in. Watch for a missing comma or an unquoted string.
Send EmailChoose which email inbox sends this emailPick an inbox, or switch Send from to the Teloring system sender.
Send EmailNo inboxes in the dropdownConnect an email inbox in My Ring, or use the system sender.
Send EmailRecipients rejectedMaximum 25 addresses across To, CC, and BCC. Check for a typo.
CodeFails every timeThe code must return a value. It also has no network access — use HTTP Request for that.
Add / Update a recordChoose an objectChoose the object; the field list follows that choice. A flow cannot be published without it.
Add / Update a recordValidation failedA value does not fit the field's type, a required field is empty, or a linked record does not exist. Check the object's fields; skipped_fields names what was not saved.
Delete a recordin_useOther records still link to this one. Remove the links first.
Contact UpdateA field is missing from the dropdownOnly the fields of the Contacts object (see the object builder) appear. Protected system fields cannot be written.
Agent AvailabilityAlways OfflineWith Specific agents selected and nobody ticked, the answer is always Offline — by design. Pick agents, or switch to Anyone in the account.
Agent AvailabilityAn AI Agent is not countedAI Agents never count as online; they hold no session.
Business HoursAlways ClosedCheck the schedule's timezone and its weekly hours in Settings, and whether a holiday calendar is closing the day.

Voice problems​

SymptomLikely causeFix
Voice blocks are missing from the pickerThe flow has no Incoming Call triggerOnly a flow that starts with Incoming Call is a voice flow.
Publishing is blockedA messaging block is in a voice flow, or the reverseRemove the block the warning badge names.
The prompt does not playThe file is not WAVWAV only. 8 kHz mono PCM is the safe format.
Callers hear silence and the line dropsA path ends without a transfer or Hang UpEnd every path with a closing prompt and Hang Up.
Pressing a key does nothingThat digit's port is not connectedWire every digit, plus Timeout and Invalid.
Forward to Agent never connectsThe agent is not signed in — there is no permanent phone registrationPair it with Agent Availability, and always wire the Rejected output.
No recording was savedRecording is off at the triggerRecording is controlled only by Record this call on the Incoming Call trigger.
Test Run does not ring the phoneTest Run cannot place callsDial the number for real.

Building with AI (Hermes)​

SymptomLikely causeFix
Use AI to build is greyed outThe AI Studio switch is off for the accountAn admin turns it on in AI World.
"This flow already has blocks. Create a new flow to build one with AI."You opened the AI builder on a flow that already has a canvasHermes only builds into an empty flow, so it can never delete work somebody did by hand. Create a new flow.
Build my flow is refused, pointing at the editorThe canvas was edited by hand during the interviewYour edits win. Finish the flow in the editor, or start a new flow and a new interview.
The message box is disabledThe flow has been built — the conversation is closed by designEdit the flow on the canvas, or create a new flow to run a new interview.
The conversation reopens instead of the canvasThe flow still shows ⚡ Continue with AIThat is the unfinished interview. Use the card's Edit button to reach the canvas instead.
Hermes picked the wrong inbox or teamIt was told the wrong thing, or the resource did not exist yetOpen the block on the canvas and choose the right one. Create missing inboxes and teams before the interview.
A block Hermes made has a ⚠ badgeIt needs something only you can supply — usually an uploaded WAV prompt or a WhatsApp templateOpen the block and fill it in. The rail's Needs your attention list said so during the interview.
"Hermes didn't manage to answer that one. Send your message again."The AI returned an answer Studio could not read. The turn was not saved, so nothing is out of stepYour message is put back in the box — press send again.
"That answer was too long for Hermes to finish."A single reply exceeded what the AI can produce in one turnSend the same thing in shorter pieces, or split it across two answers.
The interview stopped, saying it hit a limitAn interview is capped at 60 questions, and accounts have a short message throttleProgress is saved. Wait a moment and continue, or finish the flow by hand in the editor.
I closed the tab and lost my placeYou did not — every answer is savedReopen the flow from the Studio list and click the card.

The simulator​

SymptomLikely causeFix
💬 Test this flow is not on the panelThe selected block is not an Incoming Message triggerThe simulator only starts from that trigger. Click it on the canvas first.
"Only the Incoming Message trigger can be tested this way for now."The block you started from is a different triggerUse Test Run for those, or add an Incoming Message trigger.
The bot replies differently than it did in productionYou are talking to the draft, not the published versionThat is intended. Publish, then compare with a real run in Executions.
The simulator asks about a branch instead of choosing oneThe branch depends on a value the simulation did not fetch — a webhook, a saved variable, a Code block, a CRM lookupPick what the outside system would have answered. See When the simulator asks you a question.
Business Hours or Agent Availability always asksThey read live system state, which a rehearsal must not consultAnswer with the case you want to rehearse. This is how you test after-hours behaviour at midday.
A branch button says nothing connectedThat output port has nothing wired to itWire it. In production the flow would stop there.
Nothing appears in Executions after a simulationA dry run is not a runBy design — the simulator records nothing. Use Test Run if you want a recorded run.
"This simulation has expired. Start a new one."30 minutes of inactivityNothing was lost, because nothing was saved. Start again.
"The simulation stopped after a great many steps…"The flow ran an unusual number of blocks in one turnLook for a loop — two blocks pointing back at each other.
An email or webhook did not happenEvery outside action is skipped on purposeThe transcript names each one. To test real delivery, publish to a test inbox.

Things that surprise people​

BehaviorWhy it works that way
Editing a live flow changes nothing until you publishDraft and live are separate copies on purpose.
Deleting asks you to type the flow nameDeletion is permanent and takes the versions and saved variables with it, so it needs a deliberate confirmation.
Pausing is not the same as deletingA paused flow keeps every block and can be resumed in one click.
An empty filter means "everything"An Incoming Message trigger with no inboxes ticked listens on all of them.
An empty agent selection means "nobody"On Agent Availability, an unfinished Specific agents block must not behave like anyone.
A Wait does not delay other branchesOnly the branch the Wait sits on is paused.
A saved variable is not shared between flowsvar.* is scoped per flow so two flows cannot overwrite each other.
Duplicating a block does not copy its connectionsYou almost never want the copy wired the same way.
Sticky notes never runThey are editor-only comments and are not part of the published flow.
A simulation never appears in ExecutionsA rehearsal is not a run. Nothing is sent and nothing is recorded — that is the whole point of it.
A deleted block still shows in an old runA run is replayed against a snapshot of the flow as it was, so the history stays readable after you rebuild.
Old runs disappear on their ownEach flow keeps the number of runs your plan allows, oldest out. A new run is never dropped to stay under the limit.
Building an AI flow ends the conversationOnce the blocks are yours to edit, a rebuild would have to overwrite your changes.

Getting more detail​

WhereWhat it tells you
ExecutionsWhat actually happened on a real run: the path taken, every block's input and output, the branch chosen, the error, the timing. Start here.
The simulatorWhat your chatbot would say, reproduced in seconds, without sending anything.
Test RunWhether the draft's shape is valid, without touching customers.
A temporary Private NoteStill useful for watching a value change across a long live flow, though the step panel in Executions now shows the same thing without editing the flow.
Version history (Version bar)What changed, when, and who changed it — and the button to roll back.
Audit Log (Settings)Who published, paused, resumed, restored, or deleted a flow.

Next​