Documentation / Quickstart

Launch your first bot in ten minutes

This guide walks through creating a Telegram bot, wiring it up in Meshwire, and publishing a live flow.

1. Create a bot with BotFather

Open Telegram, message @BotFather, and run /newbot. Choose a display name and a unique username ending in `bot`. BotFather returns an HTTP API token — copy it, you'll need it next.

/newbot
Alright, a new bot. How are we going to call it?
> Acme Support Bot
Good. Now let's choose a username for your bot.
> acme_support_bot
Done! Use this token to access the HTTP API:
110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw

2. Connect the token to Meshwire

In the console, go to Bots → New bot, paste the token, and choose a hosting mode. Webhook mode is recommended for production; polling is useful for quick local testing.

POST /v1/bots
{
  "name": "Acme Support Bot",
  "token": "110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw",
  "hostingMode": "webhook",
  "timezone": "Europe/Warsaw"
}

3. Build your first flow

Open the flow editor and drag a trigger.command node onto the canvas (e.g. /start). Connect it to a msg.text node with a welcome message, then add an msg.inline_keyboard node with quick-reply buttons.

trigger.command(/start)
  -> msg.text("Welcome to Acme Support! How can we help?")
  -> msg.inline_keyboard(["Talk to sales", "Track an order"])

4. Test in the sandbox

Use the built-in simulator to send test messages without touching real Telegram traffic. It renders exactly how your flow will respond, including buttons and media.

Simulator > /start
Bot: Welcome to Acme Support! How can we help?
     [ Talk to sales ]  [ Track an order ]

5. Publish

Click Publish and add a short release note. Meshwire validates the flow, snapshots a version, and switches live traffic to it. You can roll back to any previous version at any time.

POST /v1/bots/{botId}/publish
{ "note": "Initial launch: welcome + support routing" }

Ready to go deeper?

Explore the API reference or set up outbound webhooks to sync events into your own systems.

Go deeper

Start from a template, not a blank canvas

The template catalog ships with more than sixty ready-made bots across local services, real estate, professional intake, operations, community, travel, education and commerce — each one searchable by name, category or keyword, and labeled with an honest complexity tier (Starter, Business, Advanced, Enterprise) so you know what you are adopting before you click.\nEvery template installs with working sample data: shops come with sample products and a payment rail, booking flows come with bookable sample slots you can remove in one click. The point is that the bot demonstrates itself from the first message — you replace the samples with your real content when you are ready.\nWhen you install, the wizard walks you through naming the bot, pasting the token from BotFather, and choosing how it runs. Everything else — menus, commands, per-language copy — comes from the template.

Publishing: save, then go live

The Builder tracks a draft and a published flow. Save writes your draft; Publish takes the current canvas, saves it, and deploys it as a new numbered version that the running bot serves immediately.\nPublishing is idempotent: publishing a flow identical to the live one does not mint an empty version, so a double-clicked button has no side effects. Every publish can carry a release note, versions are kept in history, and any previous version can be rolled back from the Versions tab in one action.\nThe Publish button in the bot header publishes the latest SAVED flow — the dialog says exactly that, so there is never a question of which button does what.