Your smart home knows when something happens. The question is whether it tells you about it, and whether it does so without driving you insane with constant pings. Here's how to set up notifications that are actually useful.
Home Assistant can send notifications through a dozen different channels. Here's what actually works well and when to use each one.
The gold standard. Push notifications, actionable buttons, critical alerts that bypass Do Not Disturb, image attachments, location tracking. Free, works locally, no cloud dependency. This is what 90% of users should start with.
Great for sending images, videos, and interactive commands. You can reply to your bot to control things. Works across all devices with Telegram installed. Good secondary channel or for households where not everyone wants the Companion app.
Best for non-urgent summaries and logs. Send a daily digest of events, weekly energy reports, or monthly maintenance reminders. Not great for time-sensitive alerts since email delivery is unpredictable.
Your smart speakers announce things out loud. "Front door opened" or "Washing machine finished." Perfect for in-home awareness when you don't want to check your phone. Works with Google, Alexa, Sonos, and local voice speakers.
Push notifications through your web browser. Handy for desktop alerts if you keep a browser tab open. No app install needed. Limited compared to the Companion app, but useful as a supplement.
Send alerts to a chat channel. Great for families or shared houses where everyone is already in a group chat. Discord webhooks take about 5 minutes to set up. Slack works similarly through incoming webhooks.
This is step one for most people. The Companion app gives you the best notification experience and doubles as a sensor source for presence detection.
Download "Home Assistant" from the App Store (iOS) or Google Play (Android). It's free.
Open the app and enter your Home Assistant URL. If you're on the same network, it should auto-discover. For remote access, you'll need Nabu Casa, Cloudflare Tunnel, or a VPN.
When prompted, allow push notifications. On iOS, also enable Critical Alerts if you want certain notifications (like smoke detectors or water leaks) to break through Do Not Disturb and silent mode.
Go to Developer Tools in your HA dashboard, click "Services," and call notify.mobile_app_your_phone with a test message. If it pops up on your phone, you're good.
automation:
- alias: "Front door opened"
trigger:
- platform: state
entity_id: binary_sensor.front_door
to: "on"
action:
- service: notify.mobile_app_your_phone
data:
title: "๐ช Front Door"
message: "The front door just opened." Replace mobile_app_your_phone with the actual name of your device. Check Settings > Companion App > Notifications to find your device name.
The real power of HA notifications. Add buttons to your alerts so you can take action right from the notification shade. No need to open the app or your dashboard.
automation:
- alias: "Motion alert with actions"
trigger:
- platform: state
entity_id: binary_sensor.backyard_motion
to: "on"
condition:
- condition: state
entity_id: group.family
state: "not_home"
action:
- service: notify.mobile_app_your_phone
data:
title: "๐ Motion Detected"
message: "Movement in the backyard."
data:
actions:
- action: "TURN_ON_LIGHTS"
title: "Lights On"
- action: "VIEW_CAMERA"
title: "๐น View Camera"
- action: "IGNORE"
title: "Ignore" automation:
- alias: "Handle motion action - lights"
trigger:
- platform: event
event_type: mobile_app_notification_action
event_data:
action: "TURN_ON_LIGHTS"
action:
- service: light.turn_on
target:
entity_id: light.backyard
data:
brightness_pct: 100
- alias: "Handle motion action - camera"
trigger:
- platform: event
event_type: mobile_app_notification_action
event_data:
action: "VIEW_CAMERA"
action:
- service: notify.mobile_app_your_phone
data:
message: "Backyard camera"
data:
image: "/api/camera_proxy/camera.backyard" Tip: Keep action identifiers uppercase and unique across your setup. If two automations use the same action name, both will fire when that button is pressed.
A notification saying "motion detected" is fine. A notification with a photo of what triggered the motion is better.
automation:
- alias: "Doorbell with snapshot"
trigger:
- platform: state
entity_id: binary_sensor.doorbell
to: "on"
action:
- service: notify.mobile_app_your_phone
data:
title: "Someone at the door"
message: "Doorbell pressed"
data:
image: "/api/camera_proxy/camera.front_door" automation:
- alias: "Frigate person detected"
trigger:
- platform: mqtt
topic: frigate/events
condition:
- condition: template
value_template: >
{{ trigger.payload_json['after']['label'] == 'person' }}
action:
- service: notify.mobile_app_your_phone
data:
title: "๐ง Person Detected"
message: >
Person spotted near {{ trigger.payload_json['after']['camera'] }}
data:
image: >
/api/frigate/notifications/{{ trigger.payload_json['after']['id'] }}/thumbnail.jpg Using Frigate for cameras? The detection snapshot shows a bounding box around the detected object, so you instantly see what triggered the alert.
Telegram is the best secondary notification channel. It handles images, videos, inline keyboards, and lets you send commands back to Home Assistant through chat.
Open Telegram, search for @BotFather, and send /newbot. Follow the prompts to name it. Save the API token it gives you.
Send a message to your bot, then visit https://api.telegram.org/bot<TOKEN>/getUpdates in your browser. Your chat ID is in the response.
telegram_bot:
- platform: polling
api_key: "YOUR_BOT_TOKEN"
allowed_chat_ids:
- YOUR_CHAT_ID
notify:
- platform: telegram
name: telegram
chat_id: YOUR_CHAT_IDaction:
- service: telegram_bot.send_photo
data:
url: "/api/camera_proxy/camera.front_door"
caption: "Someone is at the front door"
target: YOUR_CHAT_IDThe fastest way to make notifications useless is to send too many. If you stop reading them, they stop protecting you. Here's how to keep your notifications meaningful.
automation:
- alias: "Motion alert with cooldown"
trigger:
- platform: state
entity_id: binary_sensor.front_yard_motion
to: "on"
condition:
- condition: state
entity_id: group.family
state: "not_home"
- condition: template
value_template: >
{{ (now() - state_attr('automation.motion_alert_with_cooldown',
'last_triggered')).total_seconds() > 300 }}
action:
- service: notify.mobile_app_your_phone
data:
title: "๐ Motion"
message: "Movement detected in the front yard." This automation won't fire again within 5 minutes (300 seconds) of the last trigger. Adjust the number to match the situation. For security alerts you might want 60 seconds, for temperature warnings maybe 3600 (one hour).
action:
- service: notify.mobile_app_your_iphone
data:
title: "๐จ WATER LEAK"
message: "Water detected under the kitchen sink!"
data:
push:
sound:
name: default
critical: 1
volume: 1.0 Reserve critical alerts for genuinely urgent things: water leaks, smoke detectors, security alarms. If you mark everything as critical, you'll turn off the permission entirely.
Practical notifications you'll actually use. Each one solves a real problem instead of just pinging you for the sake of it.
Trigger: door sensor stays open for 10+ minutes. Way more useful than alerting every time a door opens. Catches the times you accidentally left the garage open.
Monitor power consumption with a smart plug. When wattage drops below 5W for 3 minutes, the cycle is done. No more forgetting wet laundry for hours.
If the freezer goes above -15ยฐC for more than 30 minutes, something is wrong. Critical alert. This one has saved people hundreds in spoiled food.
Critical alert, always. Place sensors under sinks, near the water heater, by the washing machine. If water is where it shouldn't be, you want to know immediately.
When everyone leaves, check if lights, TV, or appliances are still on. Send an actionable notification with a "Turn everything off" button. One tap from anywhere.
If you run Frigate, detect when a person appears at the front door and leaves a package. Snap a photo and send it. You know your delivery arrived before the tracking app does.
Set a wattage threshold for your whole home. If consumption spikes above 5kW during off-peak hours, something might be running that shouldn't be. Great for catching space heaters or appliances left on.
Zigbee sensors, door locks, motion detectors. They all run on batteries. Get notified when any device drops below 20% so you can replace it before it goes dead and you miss an actual alert.
Check the weather forecast. If rain is expected in the next 2 hours and any window sensors show open, send a reminder. Simple but surprisingly useful.
At your usual bedtime, check if doors are locked, garage is closed, lights are off downstairs. Send a summary of anything that needs attention, with actionable buttons to fix each one.
In a household with multiple phones, you don't want to duplicate every automation. Create groups and send to everyone at once.
notify:
- platform: group
name: family_phones
services:
- service: mobile_app_dads_phone
- service: mobile_app_moms_phone
- service: mobile_app_kids_tablet Now use notify.family_phones in your automations and everyone gets the alert. You can also get creative: create a "parents" group for security alerts and a "family" group for general household stuff.
automation:
- alias: "Alert whoever is away"
trigger:
- platform: state
entity_id: alarm_control_panel.home
to: "triggered"
action:
- choose:
- conditions:
- condition: state
entity_id: person.dad
state: "not_home"
sequence:
- service: notify.mobile_app_dads_phone
data:
title: "๐จ Alarm Triggered"
message: "Home alarm went off!"
- conditions:
- condition: state
entity_id: person.mom
state: "not_home"
sequence:
- service: notify.mobile_app_moms_phone
data:
title: "๐จ Alarm Triggered"
message: "Home alarm went off!"Migrating from Google Home or Alexa? Starting fresh? HomeShift helps you figure out what you need and how to get there. Start with a free scan of your current setup.
The Companion app for iOS and Android is the best option for most people. It supports push notifications, actionable buttons, critical alerts that bypass Do Not Disturb, images, and location-based triggers. It's free, works locally, and requires zero setup beyond installing the app and connecting it to your instance.
Add an actions array to your notification data with a title and action identifier for each button. Then create a second automation that listens for the mobile_app_notification_action event and checks which action was chosen. See the examples above for the full YAML.
Yes. Create a notification group in your configuration.yaml that lists multiple device targets. Then call the group service in your automations instead of individual devices. You can also use conditional logic to notify specific people based on who's home or away.
Add conditions to your automations so they only fire when relevant: time of day, occupancy, state duration. Use cooldown timers between repeated alerts. Group related alerts into summaries instead of individual pings. Set priority levels so only critical alerts bypass Do Not Disturb. Start with fewer notifications and add more as needed.
Yes. Combine notifications with presence detection using the Companion app, a router integration, or Bluetooth trackers. Create automations that only notify when your zone state is not_home. This dramatically reduces unnecessary alerts during the day.
The Companion app supports image attachments. In your notification service call, add an image field under data pointing to your camera entity or a URL. For Frigate users, you can attach the detection snapshot directly. The image shows up as a rich notification on your phone.