Telegram To‑do List – Reply Keyboard + Inline Buttons
This automation blueprint lets you manage any Home Assistant to‑do list directly from a Telegram chat. It combines a friendly reply keyboard (bottom of the chat) with powerful inline buttons on the main list message.
This is the first attempt at creating a blueprint, so there may still be rough edges. If you run into any issues or unexpected behavior, please post in the thread and they will be addressed as soon as possible.
What this blueprint does
- Adds items to a Home Assistant
todoentity from plain Telegram messages (supports comma‑separated input on one line). - Skips duplicates automatically (case‑insensitive name comparison).
- Shows the list in a single Telegram message with inline buttons:
- tap
✅ itemto mark it as completed; - toggle between “active only” and “all items” views;
- clear all completed items.
- tap
- Provides a persistent reply keyboard with these commands:
📜 Show list– open list of active items;🛒 Active only– same as above, forced active‑only view;📜 Show all– show active + completed items;🗑 Clear completed– remove all completed items from the to‑do list;🔥 Clear all– remove every item from the selectedtodolist.
- Keeps your chat clean: each reply‑keyboard command message is deleted right after being handled.
Prerequisites (do this before import)
- Update Home Assistant
- Use Home Assistant 2025.11 or newer.
- This blueprint relies on the new automation
actions:syntax and on services such astodo.get_items,todo.update_item,todo.remove_completed_items.
- Configure the Telegram bot integration
- Add the official
Telegram botintegration from Settings → Devices & Services. - Make sure you have a working bot token and at least one chat where the bot can send messages.
- Note the Config Entry ID of this bot (you can see it when creating a simple test automation that uses
telegram_bot.send_message).
- Create or select a to‑do list
- Ensure you have at least one
todoentity (e.g. the built‑in Shopping List or any othertodo.entity).
- Create a helper for the last message id
- Create either:
- an
input_text(recommended) or - an
input_number
- an
- This helper will store the
message_idof the last inline list message, so the blueprint can edit that message instead of sending a new one every time.
- Plan your reply keyboard text
- The blueprint expects the English labels below in the reply keyboard:
📜 Show list🛒 Active only📜 Show all🗑 Clear completed🔥 Clear all
You will create the keyboard itself in a separate one‑time script/automation after importing the blueprint.
Inputs
When creating an automation from this blueprint, you will be asked for:
- To‑do list entity (
todo_entity)
Thetodoentity that should be controlled (for exampletodo.shopping_list). - Telegram chat_id (
telegram_chat_id)
Numeric chat id where the bot will read and send messages (user or group). - List command (
list_command)
Telegram slash command that opens the list; by default/list.
Behaves the same as pressing🛒 Active only. - Bot Config Entry ID (
bot_config_entry_id)
The Config Entry ID of yourtelegram_botintegration (see prerequisites). - Last message id helper (
last_message_id_helper)
Theinput_textorinput_numberhelper created earlier.
Installation steps
- Import the blueprint
- Click the “Open your Home Assistant instance…” badge above or copy the link into a browser where you are logged into Home Assistant.
- Confirm the import. The blueprint will appear under Settings → Automations & Scenes → Blueprints.
- Create an automation from the blueprint
- Go to Settings → Automations & Scenes → Blueprints.
- Choose Telegram To‑do List (EN).
- Fill in:
todo_entity– your to‑do list;telegram_chat_id– numeric chat id;list_command– keep/listor change;bot_config_entry_id– from the Telegram bot integration;last_message_id_helper– the helper created earlier.
- Save and enable the automation.
- Create the reply keyboard (one‑time)
- Create a new script or from developer tools like this:
action: telegram_bot.send_message
data:
config_entry_id: YOUR_CONFIG_ENTRY_ID
target: YOUR_CHAT_ID
keyboard:
- 📜 Show list
- 🛒 Active only
- 📜 Show all
- 🗑 Clear completed
- 🔥 Clear al
message: To‑do keyboard initialized
- Replace
YOUR_CONFIG_ENTRY_IDandYOUR_CHAT_IDwith your values. - Run this script once; the reply keyboard will stay available in that chat.
How to use
- Add items
- Send a normal text message, e.g.
milk, bread, eggs. - The blueprint splits by commas, trims spaces and adds each unique item to the selected
todolist.
- Send a normal text message, e.g.
- Show the list (active)
- Use
/listor tap📜 Show list/🛒 Active only. - You get a message titled “Your shopping list:” with one inline button per item (
✅ name).
- Use
- Toggle active ↔ all
- In the inline message, use:
📜 Show allto switch to “History (all items)”;🛒 Active onlyto return to active items only.
- In the inline message, use:
- Mark item as done
- Press
✅ itemin the inline message. - The item is marked
completedin thetodoentity and disappears from the active view.
- Press
- Clear completed items
- Tap inline
🗑 Clear completedor reply‑keyboard🗑 Clear completed. - All completed items are removed from the
todolist.
- Tap inline
- Clear the entire list
- Tap
🔥 Clear allin the reply keyboard. - Every item in the selected
todoentity is removed.
- Tap
The automation keeps editing the same inline message (tracked via the helper), so your list stays in one place in the chat instead of producing a long history of updates.