Telegram is free, fast, and works globally — making it an excellent notification channel for Home Assistant security alerts. Unlike push notifications via the Companion app, Telegram notifications work on any device where Telegram is installed, including multiple family members without sharing your Home Assistant login.
Why Telegram for Security Notifications?
- Free: No limits on messages, photos, or videos
- Multi-recipient: Send to a group with all household members
- Rich media: Send camera snapshots and video clips directly
- Two-way communication: Send commands back to Home Assistant via the Telegram bot
- Global reach: Works anywhere with internet access, no VPN required
Step 1: Create a Telegram Bot
- Open Telegram and search for @BotFather
- Send
/newbot - Follow the prompts to name your bot (e.g., “Home Security Bot”)
- BotFather will send you an API token — copy it and store it securely
Step 2: Get Your Chat ID
Search for @userinfobot on Telegram. Send it any message — it replies with your Chat ID (a number like 123456789). For a group: create a group, add your bot to it, then use @userinfobot in the group to get the group chat ID.
Step 3: Configure Telegram in Home Assistant
Add to your configuration.yaml:
telegram_bot:
- platform: polling
api_key: "YOUR_BOT_API_TOKEN"
allowed_chat_ids:
- YOUR_CHAT_ID
notify:
- platform: telegram
name: telegram_home
chat_id: YOUR_CHAT_ID
Restart Home Assistant after saving.
Step 4: Create Security Alert Automations
Motion Alert With Camera Snapshot
alias: "Security - Telegram Motion Alert"
trigger:
- platform: state
entity_id: binary_sensor.front_door_person_occupancy
to: "on"
condition:
- condition: state
entity_id: alarm_control_panel.home_alarm
state: armed_away
action:
- service: notify.telegram_home
data:
message: "Person detected at front door"
data:
photo:
- url: "http://localhost:8123/api/camera_proxy/camera.frigate_front_door"
caption: "Front Door"
Step 5: Two-Way Commands
Add a Telegram chatbot automation to control Home Assistant by sending commands to your bot. When you send /status to your bot, receive an instant security status update showing the alarm state and all sensor states.
Useful Commands to Implement
/status— Security system overview/lock— Lock all doors/arm— Arm alarm in away mode/cameras— Get snapshots from all cameras
Designing alerts people actually read
The failure mode of security alerts isn’t too few — it’s too many. A bot that pings for every motion event trains everyone to ignore it within a week, which defeats the purpose entirely. Two fixes that matter more than any specific automation:
- Rate-limit repeat triggers. Use an automation condition checking
Last Triggeredwas more than N minutes ago before firing again for the same sensor — one alert per event, not one per second of continued motion. - Escalate, don’t repeat. For anything genuinely urgent (door forced, alarm triggered while away), send a normal message first; if nobody opens the Telegram app within 5 minutes, send a second alert to a different household member instead of just resending the same message.
Securing the bot itself
Your Telegram bot token is effectively a password to your house — whoever has it can send the /unlock command from the guide above. Store it in secrets.yaml, never in a file you might paste into a forum post, and restrict the automation to respond only to your specific chat_id (found via the getUpdates API) rather than any user who discovers your bot’s username.
What if Telegram itself goes down?
Telegram outages are rare but not unheard of. For anything genuinely critical (an alarm trigger, not just a doorbell ring), pair the Telegram notification with a second, independent channel — the Home Assistant Companion app’s native push notification, which uses a different delivery path entirely. Two independent notification channels firing from the same automation costs nothing extra to set up and means a single third-party outage never leaves you unaware of a real event.
Free guide — no signup
Trying to cut the cloud out of your smart home? This is the whole map in one place.