# Telegram-Bot fürs Kontaktformular: selbst bauen?

Eigener Telegram-Bot fürs Website-Formular mit einem kleinen Cloudflare Worker oder ganz ohne Bot. Funktionierender Code, Chat-ID finden, Token-Fehler.

Author: Formgong
Published: 2026-10-03
Language: de
Canonical: https://formgong.com/de/blog/telegram-bot-for-contact-form/

Sie können Anfragen aus dem Kontaktformular mit einem eigenen Bot an Telegram senden: Bot in @BotFather anlegen, Chat-ID ermitteln und das Formular über eine kleine Serverfunktion weiterleiten, die sendMessage aufruft. Der Bot-Token muss auf dem Server bleiben. Wenn Sie diesen Code nicht pflegen möchten, erledigt ein Formular-Backend mit eingebauter Telegram-Zustellung dasselbe ohne Bot.

## Drei Wege, Formularanfragen in Telegram zu erhalten

Fragen Sie Bolt, Lovable oder ChatGPT, wie ein Kontaktformular an Telegram sendet, lautet die Antwort meist: „Bauen Sie einen eigenen Bot.“ Das funktioniert. Es ist aber nur einer von drei Wegen:

- **Eigener Bot und eine kleine Serverfunktion.** Bei den meisten Hostern kostenlos und ganz in Ihrer Hand. Sie schreiben und pflegen rund 25 Zeilen Code.

- **Ein Automatisierungsdienst** wie Zapier, Make oder n8n. Ein Webhook nimmt das Formular an, ein Telegram-Schritt sendet es. Ohne Code, aber mit einem weiteren Konto und eigenen Preisen.

- **Ein Formular-Backend mit eingebautem Telegram.** Sie ändern das `action`-Attribut des Formulars und verbinden einen Chat. Kein Bot, kein Servercode. So arbeitet Formgong, und auch Formspree mit seinem Telegram-Plugin.

Diese Anleitung baut den ersten Weg komplett auf. Danach zeigt sie, was der Code nicht abdeckt, damit Sie bewusst entscheiden.

## 1. Bot anlegen und Chat-ID ermitteln

- Öffnen Sie **@BotFather** in Telegram und senden Sie `/newbot`. Wählen Sie einen Namen und einen Benutzernamen, der auf `bot` endet.

- BotFather antwortet mit einem Token wie `123456789:AAH…`. Behandeln Sie ihn wie ein Passwort.

- Öffnen Sie den neuen Bot und tippen Sie auf **Start**. Vorher darf der Bot Ihnen nicht schreiben.

- Öffnen Sie im Browser `https://api.telegram.org/bot<TOKEN>/getUpdates`. Suchen Sie `"chat":{"id":…}`. Diese Zahl ist Ihre Chat-ID.

Für eine Teamgruppe fügen Sie den Bot der Gruppe hinzu und senden dort `/start@your_bot`. Gruppen-IDs sind negativ, etwa `-1001234567890`. Das Minuszeichen gehört dazu.

## 2. Formular per Cloudflare Worker weiterleiten

Das Formular braucht einen Server, der den Token verwahrt und die Bot-API aufruft. Die kleinste Lösung ist ein Cloudflare Worker. Der kostenlose Workers-Tarif umfasst 100.000 Anfragen pro Tag (geprüft am 03.10.2026). Derselbe Code passt auch in eine Supabase Edge Function oder eine Netlify Function.

Der Worker liest das Formular, verwirft Bots, die das versteckte Fallenfeld ausfüllen, kürzt lange Werte und sendet reinen Text. Reiner Text bricht nicht bei Namen mit Apostroph oder dem Zeichen `<`. Eine Telegram-Nachricht fasst bis zu 4.096 Zeichen, deshalb wird die Nachricht bei 3.000 Zeichen abgeschnitten.

```javascript
// src/index.js: nimmt das Formular an und sendet es an Telegram
export default {
  async fetch(request, env) {
    if (request.method !== "POST") return new Response("POST only", { status: 405 });
    const form = await request.formData();
    // Honeypot: people never see this field, bots fill it in.
    if (form.get("botcheck")) return Response.redirect(env.THANK_YOU_URL, 303);
    const name = String(form.get("name") ?? "").slice(0, 200);
    const email = String(form.get("email") ?? "").slice(0, 200);
    const message = String(form.get("message") ?? "").slice(0, 3000);
    if (!email || !message) return new Response("E-Mail und Nachricht sind Pflichtfelder", { status: 400 });
    const text = `Neue Anfrage\nName: ${name}\nE-Mail: ${email}\n\n${message}`;
    const sent = await fetch(`https://api.telegram.org/bot${env.TELEGRAM_BOT_TOKEN}/sendMessage`, {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({ chat_id: env.TELEGRAM_CHAT_ID, text }),
    });
    if (!sent.ok) return new Response("Die Nachricht konnte nicht zugestellt werden", { status: 502 });
    return Response.redirect(env.THANK_YOU_URL, 303);
  },
};
```

**Befehle für Deployment und Secrets**

```bash
npm create cloudflare@latest contact-to-telegram
cd contact-to-telegram
# paste the Worker code into src/index.js, then:
npx wrangler secret put TELEGRAM_BOT_TOKEN
npx wrangler secret put TELEGRAM_CHAT_ID
# add to wrangler.jsonc: "vars": { "THANK_YOU_URL": "https://example.com/danke" }
npx wrangler deploy
```

**Das HTML-Formular, das an den Worker sendet**

```html
<form action="https://contact-to-telegram.YOUR-SUBDOMAIN.workers.dev" method="POST">
  <label>Name <input name="name" autocomplete="name"></label>
  <label>E-Mail <input type="email" name="email" required autocomplete="email"></label>
  <label>Nachricht <textarea name="message" required></textarea></label>
  <input type="text" name="botcheck" tabindex="-1" autocomplete="off" hidden>
  <button type="submit">Senden</button>
</form>
```

## Den Bot-Token nie in den Browser legen

Mancher generierte Code ruft `api.telegram.org` direkt aus der Seite auf. In der Vorschau scheint das zu funktionieren. Doch jeder kann den Quelltext öffnen, den Token kopieren und Ihren Bot benutzen: in seinem Namen schreiben, Updates lesen oder den Webhook ändern.

Bewahren Sie den Token als Server-Secret auf, wie in den Befehlen oben. Ist ein Token schon im Frontend gelandet, senden Sie BotFather `/revoke` und hinterlegen den neuen Token als Secret. Das gilt auch für Projekte in Bolt und Lovable: Lassen Sie den Aufruf in eine Backend-Funktion verschieben und den Token in deren Secrets ablegen.

## Was ein selbst gebauter Bot nicht kann

Der Worker oben ist ein funktionierendes Minimum. Bevor Sie ihm echte Anfragen anvertrauen, kennen Sie seine Lücken:

- **Keine Kopie der Anfrage.** Ist Telegram nicht erreichbar oder die Chat-ID falsch, sieht der Besucher einen Fehler, und die Nachricht ist nirgends gespeichert. Wenn Anfragen wichtig sind, ergänzen Sie eine Datenbank oder eine E-Mail.

- **Dünner Spamschutz.** Ein Honeypot stoppt nur einfache Bots. Kommt Spam, ergänzen Sie Cloudflare Turnstile oder Ratenlimits.

- **Ein Chat, kein Status.** Mehrere Chats, „Erledigt“-Buttons oder Erinnerungen an unbeantwortete Anfragen bedeuten mehr Code.

- **Limits.** Telegram bittet Bots, höchstens etwa eine Nachricht pro Sekunde an einen Chat und 20 Nachrichten pro Minute an eine Gruppe zu senden. Ein Kontaktformular kommt selten in die Nähe.

- **Wartung.** Token-Wechsel, Fehlermeldungen und Updates liegen jetzt bei Ihnen.

## Ohne Bot: Telegram direkt mit dem Formular verbinden

Wenn Sie nur jede Anfrage im Chat sehen möchten, erspart Ihnen ein Formular-Backend Bot und Worker. Mit Formgong geht das so:

- Holen Sie sich auf [formgong.com](/de/#top) einen kostenlosen Formularschlüssel und bestätigen Sie Ihre E-Mail.

- Richten Sie das Formular auf Formgong aus: `action="https://formgong.com/submit"` und der Schlüssel als verstecktes Feld. Das Design bleibt unverändert.

- Öffnen Sie in den Formulareinstellungen Telegram und tippen Sie auf Verbinden. Der Formgong-Bot öffnet sich; tippen Sie auf Start. Für eine Gruppe fügen Sie den Bot hinzu und senden den `/connect`-Code aus den Einstellungen.

Jede Anfrage wird zusätzlich im Posteingang gespeichert und per E-Mail gesendet; Spam wird vor dem Chat aussortiert. Telegram ist im kostenlosen Tarif mit 300 Einsendungen pro Monat enthalten; Details unter [Preise](/de/#pricing). Die Schritt-für-Schritt-Anleitung: [Website-Einsendungen an Telegram senden](/de/blog/website-form-to-telegram/). Dienste mit Telegram vergleichen wir im [Vergleich der Formular-Backends](/de/compare/).

## Häufig gestellte Fragen

### Darf der Telegram-Bot-Token im Website-Code stehen?

Nein. Wer den Quelltext öffnet, kann den Token kopieren und den Bot steuern. Bewahren Sie ihn als Server-Secret auf und rufen Sie die Bot-API aus einer Serverfunktion auf. Ist er öffentlich geworden, widerrufen Sie ihn in BotFather.

### Wie finde ich meine Telegram-Chat-ID?

Tippen Sie im Chat mit Ihrem Bot auf Start und öffnen Sie dann die getUpdates-Adresse mit Ihrem Token im Browser. Die id im Feld chat ist der gesuchte Wert. Für eine Gruppe senden Sie dort /start@your_bot; Gruppen-IDs sind negativ.

### Kann der Bot Formularanfragen in eine Gruppe senden?

Ja. Fügen Sie den Bot der Gruppe hinzu, lesen Sie die Gruppen-ID aus getUpdates und verwenden Sie sie als chat_id. Telegram erlaubt Bots etwa 20 Nachrichten pro Minute in einer Gruppe.

### Ist ein Cloudflare Worker für ein Kontaktformular kostenlos?

Für die meisten Websites ja. Der kostenlose Workers-Tarif umfasst laut Stand vom 3. Oktober 2026 100.000 Anfragen pro Tag. Jede Einsendung ist eine Anfrage.

### Brauche ich einen eigenen Bot für Anfragen in Telegram?

Nein. Formular-Backends wie Formgong verbinden den Chat über ihren eigenen Bot mit dem Formular. Sie ändern nur die action-Adresse und tippen in den Einstellungen auf Verbinden.

## Quellen und Dokumentation

- [Telegram Bot API: sendMessage](https://core.telegram.org/bots/api#sendmessage)
- [Telegram Bot FAQ: limits](https://core.telegram.org/bots/faq#my-bot-is-hitting-limits-how-do-i-avoid-this)
- [Telegram: BotFather](https://core.telegram.org/bots/features#botfather)
- [Cloudflare Workers pricing](https://developers.cloudflare.com/workers/platform/pricing/)
- [Cloudflare Workers secrets](https://developers.cloudflare.com/workers/configuration/secrets/)
- [Formgong-Dokumentation](https://formgong.com/de/docs/)

[Formularschlüssel holen](https://formgong.com/de/#top)
