FlowCastle/Docs/Test and Deploy Your Bot

Test and Deploy Your Bot

The difference between saving and deploying, how the Test panel works, what a deploy actually syncs, and where to look when the bot does not answer.

6 min read·Last updated: 2026-08-19
The difference between saving and deploying, how the Test panel works, what a deploy actually syncs, and where to look when the bot does not answer.

Guide

  1. 1

    Save is not the same as Deploy

    Two buttons, two different jobs. Confusing them is the single most common way people get stuck.

    Save, in the block editor on the right, writes your change into the draft on the canvas. Nothing your users see changes.

    Deploy, on the toolbar above the canvas, publishes that draft to the channel your bot runs on. Until you press it, the live bot keeps answering with the previous version.

    The Version selector, the Test button and the Deploy button on the editor toolbar

    So the loop is always the same: edit, Save, Test, Deploy.

    One helpful detail: Deploy is dimmed when there is nothing new to publish. A dim button means the live bot already matches the canvas.

  2. 2

    Test your bot before anyone else does

    Click Test. A panel opens on the right and you talk to your bot exactly as a user would — before any channel is connected, and without opening Telegram.

    The Test panel showing a test conversation with the bot, with one menu button chosen

    The panel has a few controls worth knowing:

    • Private / Group / Channel simulates where the message comes from. Triggers that only fire in groups or channels will not match while you are in Private.
    • In Group you also get Mention bot (@) and a Member joins button, which fires a "user joined the group" event so you can test a welcome flow.
    • Test as runs the session as an existing contact. Their profile and saved variable values are copied into the test, so flows that depend on what the bot already knows about someone can be exercised. Changing it restarts the chat.
    • Refresh applies your latest canvas and variable changes to the running test without losing the conversation. The session starts from the draft as it was when you clicked Test, so after an edit press Save, then Refresh.

    Walk your own bot the way a stranger would. Press every button, type something unexpected, and fix what reads badly before it is live.

  3. 3

    Read the Logs tab when a step misbehaves

    Next to Chat there is a Logs tab. It lists what the flow actually did in this test session, newest first: the step that ran, the time, and the message the runtime recorded. Click a row to expand it — the flow, the block, how long the step took, and for a call to an outside service the request and the response.

    The Logs tab of the Test panel listing executed steps, with a failed step outlined in red

    The red number on the tab is how many steps failed. Failed rows are outlined in red and carry the error text underneath, which is usually enough to tell a wrong URL from a wrong key.

  4. 4

    Going live for the first time

    Press Deploy while no channel is connected and it does not deploy. It opens the Go live window instead: pick where people will chat with your bot.

    The Go live window with the Telegram, Web chat and Email options

    • Telegram asks for the token BotFather gave you. Paste it into Bot token and press Connect & publish — that one click connects the channel and publishes your flows.
    • Web chat needs no token. It publishes a widget for your website plus a shareable link.
    • Email connects a mailbox over IMAP and SMTP.

    The first deployment can take a few minutes. After that the window is gone for good.

  5. 5

    Every deploy after the first

    One click on Deploy, and the version on your canvas goes live.

    The one exception is a workspace with more than one bot — a test bot next to the production one, for example. Then Deploy opens Deploy to bots first, where you tick which bots receive this version. All of them are ticked by default, and each row shows whether it already runs this version.

  6. 6

    What a deploy actually changes

    Two things happen.

    The bots you deployed to start running the flows from that version. That is the whole point, and it is why an edit that is only saved has no effect on anyone.

    For a Telegram bot, the command menu is also refreshed from the command triggers in the flows you just published, so you never have to run /setcommands in BotFather. The text next to each command comes from the name of the flow it starts — which is a good reason to name flows the way you would name menu entries.

    Three things about that sync are worth knowing:

    • It merges instead of replacing. Commands you set in BotFather by hand are kept; yours win when the names are the same.
    • It only adds and updates. Deleting a flow does not remove its command from the menu — clear that one in BotFather.
    • It is best effort. If Telegram refuses the update, the deploy still succeeds and your bot still answers the command; only the menu is out of date.

    A trigger that is not a legal Telegram command (anything outside lowercase letters, digits and underscores, up to 32 characters) still works as a trigger, but it is skipped in the menu.

  7. 7

    When the bot does not answer

    Open Settings → Logs. Pick the bot and you get every step it ran, with filters for Flow, Level, Action and Contact, plus a search over the message text. Set Level to Error first — that is usually a one-line answer.

    The Logs page under Settings, filtered to one bot, showing executed steps and one error row

    If the logs do not explain it, the cause is almost always one of three:

    • It was never deployed. Saving is not publishing. Go back to the canvas and check whether Deploy is still active.
    • You are talking to the wrong bot. Telegram search happily shows bots with near-identical names. Open yours by the exact username BotFather gave you.
    • Nothing matched. If there is no log at all for the moment you wrote to the bot, the message never entered a flow. Open the starting step and check the trigger — a command trigger only fires on that exact command, and group triggers only fire in groups.

    When none of that fits, the Test panel is the faster tool: it runs the same flows with the logs sitting one tab away, and you can repeat the failure as many times as you like without bothering real users.

  8. 8

    Next up

    Your bot works in Telegram — now put the same flows on your website.

    Embed Web Chat on Your Site

Next Guide

Continue with
Embed Web Chat on Your Site
Step-by-step: create a web chat bot, copy the embed snippet from the Install tab, and add it to your site as a floating bubble, an inline frame, or a standalone page.

Related Guides

More guides to help you continue from this topic.