- PPF Points
- 2,100
Alright, so picture this: when I first started hustling to get more people on my email list, I pretty much just followed whatever every “email marketing expert” on the internet said to do.
Slapped annoying pop-ups on my site (yep, even the ones that slide in and block half the text).
Tossed yet another freebie at folks — “Download my thing, please!”
Spammed all my socials with links nobody actually clicks.
And after all that effort? I’d get, like, two — maybe three — sad little signups a week. Honestly, it felt like shouting into the void.
But then I got a little crafty. Built a Telegram bot that handed out my freebie the second someone dropped in their email — no delays, no boring forms. Suddenly my numbers shot up. I’m talking 10, sometimes 50 subs a day. All. On. Autopilot. No ads. No pulling my hair out.
So, here’s what I’m about to show you in this post:
Let’s go.
Why Telegram?
Alright, seriously — does anyone get excited about website email forms anymore? They’re clunky, they look like they’re from 2005, and mostly just get ignored.
But Telegram? It’s quick, a little addictive, and has, what, 800 million users wandering around? You build a bot there, and suddenly your offer feels like a convo, not a chore.
Here’s why it wins:
All your soon-to-be fans gotta do is pop open Telegram, type in their email, and BOOM — freebie delivered, email captured. Done.
Step 1: Pick Your Freebie
Before you get bot-happy, figure out what you’re giving away. It’s got to be something people want — not just another grocery list template (unless you’re selling to grocery nerds, then hey, go off).
Some quick brain fuel:
For this guide, I’m rolling with my free PDF, “10 Productivity Hacks for Creators.” Honestly, it works for pretty much anybody with a pulse and a deadline.
Step 2: Create Your Telegram Bot (Spoiler: It’s Easy)
Pop open Telegram, search for @BotFather (yes, that’s really the name), and mash out:
/newbot
Follow the instructions, name your bot (I went with EmailFreebieBot, but hey, get creative), snag your API token, and keep it somewhere safe — tattoo it on your arm if you’re forgetful.
Step 3: Coding the Bot (Python Style)
Let’s not make this a nightmare. You’ll need the python-telegram-bot package, but that's a one-liner:
Here’s the barebones script — it says hi, grabs the email, saves it, and fires off your PDF like a digital potato gun.
Stick that in a file called
That’s it! You now have a Telegram bot doing all your email grunt work for you.
Step 4: Save Emails to Google Sheets Like a Boss
Honestly, you can leave it as a CSV and call it a day. BUT if you’re fancy (or want to stalk your leads from your phone), link it up to Google Sheets.
Here’s the cheat code:
Now muscle your script to look like this:
Every new signup lands straight in your sheet. No manual copy-paste. Feels good, right?
Step 5: Automate That Freebie Delivery
You can:
1. Drop a direct download link in your reply (easy).
2. Actually upload the file (Telegram’s cool with that).
3. Or, for the wizards out there, email it out (seriously, don’t overthink it).
Most folks go with the link right in the bot. Less clicks, less pain. Give the people what they want!
And there you have it — welcome to email list growth that doesn’t make you want to throw your laptop out the window.
Ready to ship your own bot? Go flex.
Slapped annoying pop-ups on my site (yep, even the ones that slide in and block half the text).
Tossed yet another freebie at folks — “Download my thing, please!”
Spammed all my socials with links nobody actually clicks.
And after all that effort? I’d get, like, two — maybe three — sad little signups a week. Honestly, it felt like shouting into the void.
But then I got a little crafty. Built a Telegram bot that handed out my freebie the second someone dropped in their email — no delays, no boring forms. Suddenly my numbers shot up. I’m talking 10, sometimes 50 subs a day. All. On. Autopilot. No ads. No pulling my hair out.
So, here’s what I’m about to show you in this post:
- The Telegram bot code — and trust me, you don’t need to be some weird code wizard.
- How I hooked it up so it saves emails straight to Google Sheets (or just a good ol’ CSV file if you’re basic, zero shame).
- How to deliver your freebie automatically.
- Where to shout about your bot so you actually get real humans (not just bots) signing up.
Let’s go.

Alright, seriously — does anyone get excited about website email forms anymore? They’re clunky, they look like they’re from 2005, and mostly just get ignored.
But Telegram? It’s quick, a little addictive, and has, what, 800 million users wandering around? You build a bot there, and suddenly your offer feels like a convo, not a chore.
Here’s why it wins:
- Replies are instant
- People actually respond
- Freebie is delivered right as they give you their email, no “check your inbox” waiting
- Zero tech headaches (yes, for real)
All your soon-to-be fans gotta do is pop open Telegram, type in their email, and BOOM — freebie delivered, email captured. Done.

Before you get bot-happy, figure out what you’re giving away. It’s got to be something people want — not just another grocery list template (unless you’re selling to grocery nerds, then hey, go off).
Some quick brain fuel:
- Fitness: 7-day home workout (PDF, duh)
- Marketing: Swipe file of killer IG hooks
- Design: Canva templates (everyone’s lazy now)
- Personal Finance: Budget spreadsheet
- Productivity: Notion tracker thing
- Writing: Ebook of prompts for those “staring at the blank page” blues
For this guide, I’m rolling with my free PDF, “10 Productivity Hacks for Creators.” Honestly, it works for pretty much anybody with a pulse and a deadline.

Pop open Telegram, search for @BotFather (yes, that’s really the name), and mash out:
/newbot
Follow the instructions, name your bot (I went with EmailFreebieBot, but hey, get creative), snag your API token, and keep it somewhere safe — tattoo it on your arm if you’re forgetful.

Let’s not make this a nightmare. You’ll need the python-telegram-bot package, but that's a one-liner:
Code:
pip install python-telegram-bot
Here’s the barebones script — it says hi, grabs the email, saves it, and fires off your PDF like a digital potato gun.
Python:
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, MessageHandler, filters, ContextTypes, ConversationHandler
import csv
BOT_TOKEN = 'YOUR_BOT_TOKEN_HERE'
ASK_EMAIL = range(1)
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text(
"👋 Want a free copy of my ebook '10 Productivity Hacks for Creators'? Drop your email below and I’ll send it right over! 📩"
)
return ASK_EMAIL
async def get_email(update: Update, context: ContextTypes.DEFAULT_TYPE):
email = update.message.text
user = update.effective_user
with open("emails.csv", "a", newline="") as f:
writer = csv.writer(f)
writer.writerow([user.first_name, email])
await update.message.reply_text(
f"✅ Thanks, {user.first_name}! Here’s your freebie: https://example.com/my-ebook.pdf"
)
return ConversationHandler.END
if __name__ == '__main__':
app = ApplicationBuilder().token(BOT_TOKEN).build()
conv_handler = ConversationHandler(
entry_points=[CommandHandler('start', start)],
states={ASK_EMAIL: [MessageHandler(filters.TEXT & ~filters.COMMAND, get_email)]},
fallbacks=[],
)
app.add_handler(conv_handler)
print("Bot is running...")
app.run_polling()
email_bot.py
and let it rip.

Honestly, you can leave it as a CSV and call it a day. BUT if you’re fancy (or want to stalk your leads from your phone), link it up to Google Sheets.
Here’s the cheat code:
- Spin up a project in Google Cloud Console.
- Flip the switch for Google Sheets API.
- Spawn some API credentials (service account’s easiest).
- Share your spreadsheet with the email Google gives your bot.
- Install these libraries:
Code:
pip install gspread oauth2client
Now muscle your script to look like this:
Python:
import gspread
from oauth2client.service_account import ServiceAccountCredentials
scope = ["https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/drive"]
creds = ServiceAccountCredentials.from_json_keyfile_name("credentials.json", scope)
client = gspread.authorize(creds)
sheet = client.open("Email Subscribers").sheet1
sheet.append_row([user.first_name, email])

You can:
1. Drop a direct download link in your reply (easy).
2. Actually upload the file (Telegram’s cool with that).
3. Or, for the wizards out there, email it out (seriously, don’t overthink it).
Most folks go with the link right in the bot. Less clicks, less pain. Give the people what they want!
And there you have it — welcome to email list growth that doesn’t make you want to throw your laptop out the window.
Ready to ship your own bot? Go flex.