How to build a Telegram habit tracker bot with streaks
By the Botable team
A Telegram habit tracker bot asks whether you did the thing, records the answer with one tap, and keeps a streak. Describe your habits, the times to ask, and how a missed day is handled, and Botable builds it.
What is a habit tracker bot?
A Telegram habit bot works where habit apps fail because it initiates. An app waits to be opened, which is precisely the behaviour a habit tracker is supposed to be building; a bot sends a message at the time you nominated and asks a yes-or-no question. That inversion is the whole mechanism. Underneath it is a small table: one row per habit per day, with a state of done, missed, or skipped. The design decision that most changes how it feels is the treatment of a miss. A streak that resets to zero on the first missed day is honest and, for most people, the point at which they abandon the tracker; a rule that tolerates one miss per week keeps the streak meaningful without making it fragile. Backfilling matters too, since people frequently do the thing and forget to say so.
What commands does it have?
| Command | What it does |
|---|---|
/add <habit> | Starts tracking a habit and its check-in time |
/done | Marks today's habits complete |
/skip | Records a deliberate rest day without breaking the streak |
/streak | Current and longest streak per habit |
/stats | Completion rate over the last month |
What do you need before you start?
- A Telegram bot token from @BotFather
- Your habits and the time of day each should be asked about
- A miss rule — strict reset, or a tolerance
How do you build it?
Why does the bot ask instead of waiting?
Because remembering to open a tracker is itself a habit, and it is the one that fails first. Ask for a scheduled prompt per habit at a time you choose, with the answer as two buttons. The check-in should cost one tap and no navigation.
How should a missed day be handled?
Decide before you build. A hard reset is honest but brittle; allowing one miss a week keeps people going without making the number meaningless. Say which you want, because changing the rule later invalidates every streak already recorded.
Can you fill in a day you forgot to log?
Ask for it explicitly — a /done yesterday path. Without it the first forgotten evening destroys a streak that was actually intact, which is the fastest way to lose someone's trust in the tracker.
How many habits should one bot track?
Three or four. Beyond that the daily check-in becomes a chore of its own and completion drops for all of them. The bot can hold more, but the prompt should not ask about more.
A prompt you can use as-is
Paste this into Botable and adjust the details. It is specific on purpose — a vague description produces a vague bot.
Build a habit tracker bot. /add <habit> <time> starts tracking a habit and schedules a daily prompt at that time in my timezone, which you should ask me for once. Each prompt has two buttons, Done and Not today. Record one row per habit per day. Allow one miss per rolling week without breaking the streak; a second miss resets it. /done yesterday backfills. /streak shows current and longest per habit, /stats shows the completion rate over 30 days. Cap the daily prompt at 4 habits.
Who is this bot for?
- Anyone who has abandoned a habit app because they stopped opening it
- Accountability pairs sharing a group so both see the check-ins
- Tracking one hard habit properly rather than twelve badly
What goes wrong with this kind of bot?
- Scheduled prompts need your timezone, which Telegram does not provide — it must be asked for
- A hard streak reset is where most people quit; decide the tolerance deliberately
- No backfill means a forgotten log is indistinguishable from a failure
Questions about habit tracker bots
Can two people keep each other accountable?
Yes. Run it in a shared group: prompts post to the group and each person's check-in is visible. Social visibility is a stronger mechanism than the streak for most people, and it costs nothing to add.
Can it track a number rather than yes or no?
Yes — pages read, kilometres run, glasses of water. Say so when describing it, because a numeric habit needs a target and a different streak rule than a binary one.