If you have been using the Home Assistant Telegram bot integration , you probably have seen a series of persistent migration alerts recently. This post breaks down why these changes are happening and the steps that you can take to complete the migration smoothly.
2025.7: The Shift to UI Configuration
The shift from YAML-based to UI managed configuration has been a platform-wide goal for Home Assistant since 2020.
Why the Change?
The core reasoning behind this transition was documented in Architecture Decision Record (ADR) 0010-integration-configuration . It’s a long read but the TL;DR can be summarized as follows:
- Improved user experience: Home Assistant is prioritizing a more accessible, UI-driven approach for integration configuration. Moving away from YAML-based configurations eliminates the risk of syntax errors or input validation issues and also allows for instant configuration changes without the need for a full system restart.
- Maintenance overhead. Supporting both YAML-based and UI managed configurations creates a significant maintenance and support overhead for maintainers. Dropping support for YAML configuration allows maintainers to focus on stability and feature enhancements.
This change was also discussed in the Home Assistant blog: The future of YAML .
Migrating to UI configuration
With the release of 2025.7
, the Telegram bot integration deprecated YAML configuration and introduced a new UI setup.
While Home Assistant will automatically import your existing YAML configuration from configuration.yaml into the UI, you will still need to manually delete the old entries.
For those interested in the technical details of the implementation, you can learn more in the Pull Request (PR): PR #144617 .
Note: As of the 2025.12 release, YAML support for Telegram bot has been removed entirely. Any existing YAML configuration will simply fail and there will be no automatic import or migration warnings.
If you missed the migration deadline and still have Telegram bot entries in your configuration.yaml, you will need to do the following:
- Remove the deprecated entries from your
configuration.yaml. - Restart your Home Assistant instance.
- Refer to the Telegram bot configuration documentation to set up the integration using the UI.
- Remember to allowlist chat IDs to enable your bot to send and receive messages with the chats defined in the list.
2025.11: Deprecation of the Legacy Telegram Integration
In the 2025.11 release, support for notify entities was added for the Telegram bot integration. Simultaneously, a migration alert was added for the Telegram integration via PR #150720 .
Why is the Telegram Integration Being Deprecated?
There’s 2 reasons behind the deprecation.
The 2-Telegram Problem
Historically, Home Assistant has maintained 2 separate Telegram integrations which has been a constant source of confusion for users:
- Telegram bot: This is the core engine that performs the actual sending and receiving of messages.
- Telegram (legacy): This is a wrapper for Telegram bot. It provides actions (formerly known as services) for sending messages to a specific chat.
To streamline the experience and reduce complexity, these 2 integrations are being merged into the Telegram bot integration.
The Legacy Notify Platform is Being Retired
The Telegram integration was built on the legacy notify platform . This platform creates actions known as notifiers which can then be used for sending notifications.
For example, the configuration.yaml below would create a notify.sarah action.
This enabled other integrations and modules such as the (legacy) Alert
integration and the Multi-Factor Authentication (MFA)
module to send notifications by referencing the sarah notifier.
Legacy Telegram Notifier
| |
As explained in architecture discussion #1041 , the notify platform is being retired due to the following issues:
- No UI support. The notify platform can only be set up via
configuration.yamlwhich conflicts with the goal of making Home Assistant more user-friendly. - No schema validation. Because the notifiers are generated dynamically, they do not have any associated schema. This results in limited input validation and often cause challenges when creating automations or scripts.
- No translation support. Notifiers are also missing translation keys required for localization, making them less accessible to the global audience.
The legacy notify platform is making way for the modern notify action which allows you to send notifications to multiple targets using notify entities.
Migrating Telegram to Telegram Bot
If you have received the migration alert, it means that you are still using the legacy Telegram integration in your configuration.yaml. A sample of the migration alert is as follows:
Migration of Telegram notify service
The Telegram
notifyservice has been migrated. A newnotifyentity per chat ID is available now. Update all affected automations to use the newnotify.send_messageaction exposed by these new entities and then restart Home Assistant.
To complete the migration, you will need to perform the following steps:
- Update all automations and scripts to use modern notify actions (examples below).
- Remove all Telegram notifiers from your
configuration.yaml. - Restart your Home Assistant instance.
If you are using integrations or modules that rely on Telegram notifiers (for example, Alert and MFA), there is currently no direct migration path at the moment. Those integrations and modules must first be updated by their respective maintainers to support the modern notify action. Because of this dependency, the removal of the legacy Telegram integration has been postponed from 2026.5 to 2026.8 (tentative).
Here are some examples on how you can update your automations and scripts:
Use Telegram bot notification actions
The modern notify.send_message notify action only support the title and message parameters.
If you are using integration specific features, you must use the integration’s actions.
You can refer to the available notification actions
provided by Telegram bot.
Notifiers vs Notify Entities
Notifiers are action names (not actions!) while notify entities are entities representing a notification target.
A common mistake is specifying notify entities instead of notifiers in the configuration.yaml when using the legacy notify platform.
Simple notification with text message only
| |
| |
Notification with integration specific features (for example, inline keyboard)
Reminder: You cannot use the generic notify.send_message action for unsupported features.
| |
| |
Another example notification using integration specific feature: Photos
| |
| |
Side note: Multiple photos are not supported at the moment but there’s an open PR (PR #160939 ) for this feature.
2026.1: Strict Action Parameters and the timeout Deprecation
The 2026.1 release introduced 2 changes which were implemented by PR #155198 .
The Move to Strict Action Schemas
Prior to 2026.1, the schema for Telegram bot actions used a ALLOW_EXTRA setting which ignored any unsupported parameters you included in the action’s data field.
While this seemed convenient, it wasn’t ideal as this setting allowed typos and obsolete configurations to go unnoticed.
To catch configuration errors early, the schema is now strictly enforced.
As a result, you may encounter the extra keys not allowed @ data error when running any Telegram bot action.
This deprecation does not trigger any migration alerts. This is because the change involves dropping an undocumented feature which is not officially supported.
Your only heads-up is the notice in the “Backward-incompatible changes” section of the release notes.
The Migration
To complete the migration, you must update all your automations and scripts to remove all unsupported parameters in the data field.
In the following example, telegram_bot.send_message was the action involved and no_such_parameter is the offending field to be removed.
Action with unsupported parameter
| |
Error: Failed to perform the action telegram_bot.send_message. extra keys not allowed @ data[’no_such_parameter’]. Got None
Deprecation of the timeout Action Parameter
Besides strict schema validation, the 2026.1 release also deprecated the timeout action parameter.
The migration alert is triggered when a Telegram bot action which uses the timeout parameter is executed:
The timeout parameter for Telegram bot is being removed
Update all affected automations and scripts to remove the timeout parameter and then click SUBMIT to fix this issue.
The deprecated parameter was last seen in the {action} action originating from {action_origin}.
Don’t we need timeouts?
The timeout parameter was originally intended for actions handling large files such as telegram_bot.send_videos.
However, there was a bug and the setting was incorrectly applied to read timeouts (the time allowed for receiving response) instead of write timeouts (the time allowed for uploads).
The community offered several suggestions, including:
- Fixing the bug while retaining the
timeoutparameter. - Introducing a new option to configure a global
timeoutthat would apply for all actions.
Ultimately, the Home Assistant core team declined the suggestions. The consensus is that timeouts are technical implementation details which the user shouldn’t have to manage manually and it conflicts with the goal of a user-friendly experience.
To address the timeout issue for large file transfers (and also slow networks), a separate update (PR #162978 ) was included in the 2026.3 release. In this update, the default write timeout of 20 seconds was increased to 30 minutes across all Telegram bot actions. The new timeout was chosen based on typical bandwidth speeds of most users and also to accommodate the 2GB maximum file size limit supported by Telegram.
Handling the timeout migration
To resolve the migration alert, identify the automation/script and action flagged in the alert.
Then, update the action to remove the timeout parameter from the data field.
| |
2026.3: Deprecation of the target Action Parameter
Why target is Going Away
The target action parameter originated from the legacy notify platform for specifying recipients that will receive the notification.
However, as Home Assistant evolved, target is also used for specifying devices, entities and areas (or a combination of them) where an action is performed (see: Targeting areas and devices
).
To better distinguish action targets and target parameter, the target parameter is being deprecated in the 2026.3
release via PR #159745
.
Here’s an example to illustrate the differences:
| |
| |
Migrating target to entity_id or chat_id
You will need to perform migration if you have received the following migration alert:
The target parameter for Telegram bot is being removed
The target parameter is being deprecated.
You should update any automations and scripts that use that parameter in Telegram bot actions.
Use entity_id to specify Telegram bot notify entities or chat_id to replace target.
There are 2 options for migration:
- Replace
targetwithentity_idby specifying notify entities. - Rename
targettochat_id.
| |
| |
| |
Why Telegram bot doesn’t support action targets yet
If you have opt for the first migration option, you might find it strange that the entity_id is nested in the data field (as an action parameter) instead of target (as an action target):
1 2 3 4 5 6 7 8action: telegram_bot.send_message #target: # entity_id: <-- shouldn't it be here? # - notify.telegram data: message: "Yay! A message from Home Assistant." entity_id: # why is it under `data`? - notify.telegram
This behavior, reported in issue #164503
, is due to a platform-wide validation bug.
Since fixing this bug could impact other integrations, the safest and easiest course of action was to wait for the removal of target parameter in 2026.9 before proceeding with the implementation of action targets for Telegram bot.
The good news? Once action targets have been implemented, you don’t need to perform another migration; your setup will continue to work seamlessly:
These 2 actions are identical: action targets are automatically formatted into action parameters.
| |
| |
Closing Remarks
While this series of deprecations seem like a migration hurdle, each step is an effort to make the Telegram bot integration more stable and user-friendly.
Here’s a summary of the deprecations:
| Feature | Deprecation | Removal |
|---|---|---|
| YAML configuration | 2025.7 | 2025.12 |
| ⚠️ Telegram integration | 2025.11 | 2026.8 (Tentative) |
| Strict schema validation for actions | 2026.1 | 2026.1 |
timeout action parameter | 2026.1 | 2026.7 |
target action parameter | 2026.3 | 2026.9 |
⚠️ Telegram support is NOT leaving Home Assistant. The legacy Telegram integration is simply being merged into the Telegram bot integration.
