send.webforms.toRead the docs →

Contact form alerts from a GitHub Pages site, on your phone

Add a form to your Pages site that posts to your endpoint, create a Telegram bot with BotFather, and every submission arrives as a message on your phone. The bot never runs as a process, so there is nothing to host. Telegram delivery is on Pro and Agency.

Setting it up

  1. 01Add the form and push

    Plain HTML works in any Pages site, Jekyll or not. Commit, push, and the form is live when Pages rebuilds.

    contact.html
    <form action="https://send.webforms.to/wft_your_key" method="POST">
      <p hidden><input name="_gotcha" tabindex="-1" autocomplete="off"></p>
      <input type="hidden" name="_redirect" value="https://yourname.github.io/thanks/">
      <input name="email" type="email" required placeholder="Your email">
      <textarea name="message" required placeholder="Message"></textarea>
      <button type="submit">Send</button>
    </form>
  2. 02Create the bot and add it

    Message @BotFather, send /newbot and copy the token. Send your new bot a message so it can reach you, then paste the token and chat ID into a Telegram destination on the form.

  3. 03Lock the form to your site

    Add yourname.github.io, or your custom domain, to the form's allowed domains. The key is in your public repository, so anyone can read it; the allowlist is what stops them using it.

What is different about GitHub Pages and Telegram

Your key is in a public repository

Pages sites are usually public repos, so the endpoint key is visible on GitHub as well as in the page. That is fine because the key can only submit, but it makes the domain allowlist worth the thirty seconds it takes.

Better than the mailto: link it replaces

Contact pages on Pages often fall back to a mailto: link, which opens an empty mail client, exposes your address to scrapers and loses most visitors. A form submits in place and reaches your phone.

Channel posts need an admin bot

To post into a Telegram channel rather than a private chat, the bot has to be made an administrator of that channel. That is a Telegram rule, and the usual reason a first test goes nowhere.

The full guides cover each side on its own: GitHub Pages setup and Telegram as a destination.