← Docs

Telegram bot forms: send form responses to a chat

Every response arrives in a Telegram chat the moment it is submitted, with each answer labelled by the question that was asked. Setup is a bot token and a chat ID — no code, no server, and it works on every plan including Free.

Telegram delivery is on every plan, including Free

Webhooks and Telegram are the two destinations that need no paid plan. Slack, Discord, Airtable, Notion and Google Sheets delivery need Basic or Advanced.

Do I need to code a Telegram bot form?

No. There are two different things people mean by a Telegram bot form, and only one of them needs code.

The first is a form that lives inside a bot: the bot asks each question as a chat message and waits for the reply. That means writing and hosting a program, keeping per-user state, and handling every way a conversation can go wrong.

The second — this one — is an ordinary web form whose answers are delivered into Telegram. Respondents open a link and fill it in like any other form, with real field types, validation and a record you can export. Telegram is where the result shows up, instantly, in a chat you already read all day. You write nothing and host nothing; the bot is a delivery address.

Almost everyone asking the first question wants the second thing. It takes about two minutes to set up.

Create the bot with BotFather

  1. Open Telegram and message @BotFather.
  2. Send /newbot, then give it a display name and a username ending in bot.
  3. BotFather replies with a token that looks like 123456789:AAF-abc…. That is what goes in the Bot token field.

For a bot you already have, send /mybots, pick it, and choose API Token.

The token is the bot

Anyone holding that token can post as your bot in every chat it belongs to — no account and no membership needed. Treat it like a password, and never paste it into a public repository or an issue tracker.

If it leaks, send /revoke to @BotFather. The old token dies immediately; paste the new one into your form settings.

How do I find my Telegram chat ID?

The chat ID says where the bot posts. It is a number, and which number depends on the kind of chat:

ChatID looks likeHow to get it
You, privately123456789 (positive)Message @userinfobot, then press Start on your own bot so it may reply to you.
A group-987654321 (negative)Add the bot to the group, send any message, then open api.telegram.org/bot<TOKEN>/getUpdates and read chat.id.
A supergroup or channel-100…Add the bot as an administrator with permission to post, then read chat.id the same way.

Copy the ID exactly, including the minus sign. A group ID pasted without it is a different chat that your bot is not in — which Telegram reports as “chat not found”, sending you back to re-check an ID that was almost right.

Adding the destination to your form

  1. Open your form, then Settings → Storage.
  2. Choose Telegram.
  3. Paste the bot token and the chat ID.
  4. Press Send test message. A real message is sent to that chat, and anything that goes wrong is reported in words — Telegram’s own error text plus what to do about it.
  5. Save.

From then on every submission arrives as a plain message: the form’s name, then one line per question, then the time it was submitted. An unanswered optional question is shown as rather than left out, because a skipped question is a fact worth seeing.

Why is my Telegram bot not sending messages?

The cause is almost never the token. Telegram does not let a bot speak first, so a perfectly valid setup stays silent until the chat has let the bot in.

What Telegram saysWhat to do
chat not foundCheck the minus sign, and check the bot is a member of that chat. For a private chat the person must press Start first.
bot can’t initiate conversation with a userOpen the bot in Telegram and press Start. A bot may only reply to someone who has spoken to it.
bot is not a member of the channel chatAdd the bot to the channel as an administrator with permission to post.
not enough rightsThe bot is in the chat but muted. Give it permission to send messages in the group’s settings.
bot was blocked by the userUnblock the bot, or deliver to a group instead.
401 UnauthorizedThe token is wrong or has been revoked. Copy it again from @BotFather under /mybots → API Token.
404 Not FoundWhat you pasted is not a token. It looks like 123456789:AA… — the bot’s @username is not a token.
429 Too Many RequestsRate-limited, and that message was not delivered. Around 20 messages a minute per group is the practical ceiling; the response is still stored.

Message limits and formatting

A Telegram message may be 4,096 characters, and Telegram refuses a longer one outright instead of trimming it. A long response is therefore shortened here and marked as truncated — losing the tail of a message is better than losing the notification. The full response is always in your dashboard and CSV export.

Messages are sent as plain text, deliberately. Telegram’s Markdown and HTML modes reject the entire message when an unescaped _, *, [ or < appears in it, and those characters turn up in real answers all the time. A bold label is not worth a lost submission.

Files are the one thing Telegram does not receive: an attachment is stored inside the response rather than uploaded somewhere with a URL, so the message names the question and the file stays in your dashboard. Attachments also need a paid plan — see field types.

Coming from Google Forms?

Google Forms has no Telegram integration. The usual workarounds are an Apps Script that you write and maintain, or a Zapier-style connector with a task quota — both of which sit between the form and the chat and are one more thing to break.

Here it is two fields in the form’s own settings, and it costs nothing: every plan can deliver to Telegram. If you are moving a form across, most fields map one for one — short answer to short text, multiple choice to radio buttons, checkboxes to checkboxes. See the full comparison for what does not map, including quiz scoring.

If all you actually wanted was to know when someone submits a form, Telegram delivery is the shortest route to it: no inbox rule, no add-on, no daily digest — a message in a chat, as it happens.

Common questions

Do I need to build a Telegram bot to collect form responses?
No. You create a bot in Telegram — a two-minute conversation with @BotFather that ends in a token — but you write no code and host nothing. The form itself is a normal web page anyone can fill in without a Telegram account; the bot exists only to deliver each submission into your chat. Building a form INSIDE a bot, as a sequence of chat questions, is a different and much larger job, and it is not what this does.
How do I find my Telegram chat ID?
Message @userinfobot to get your personal ID, which is a positive number. For a group, add your bot to the group, send any message there, then open https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates and read chat.id from the JSON — a group ID is NEGATIVE, and a supergroup or channel ID starts with -100. Paste it exactly as shown, minus sign included.
Why does Telegram say "chat not found" when the ID is right?
Because a bot cannot open a conversation. For a private chat, the person has to press Start on the bot first; for a group, the bot has to be added to it; for a channel, the bot has to be an administrator. Until then Telegram reports the chat as not found even though the ID is correct. This is the single most common cause and the least obvious.
Is Telegram delivery free?
Yes, on every plan including Free. Slack, Discord, Airtable, Notion and Google Sheets delivery need a paid plan; Telegram and webhooks do not. Telegram is the messenger most widely used outside the US and EU, and a free plan with no way to be notified is not much of a free plan.
Is the bot token a secret?
Yes. The token IS the bot: anyone holding it can read and post as it in every chat the bot belongs to. Treat it like a password. If it leaks, send /revoke to @BotFather — the old token stops working immediately and you paste the new one into the form settings.
Can several forms post into the same Telegram chat?
Yes, and one bot can serve all of them. Each message is titled with the form’s name, so a shared chat stays readable. You can also give each form its own bot if you would rather keep the tokens separate.
What happens to a very long response?
Telegram refuses any message over 4096 characters outright rather than trimming it, so a long response is shortened here and marked as truncated. Nothing is lost: the complete response is in your dashboard and CSV export. The Telegram message is a notification, not the record.
Can I send form responses to a Telegram channel?
Yes. Add the bot to the channel as an administrator with permission to post, then use the channel’s ID — it starts with -100. Subscribers see each submission as it arrives without being members of anything else.
Can I send to Telegram and a webhook at once?
Yes. Destinations are independent and delivered in parallel, and one failing never affects another or the submission itself.

Keep reading