Notifications Management
Dashboard: Notification Center
Path: notifications-management
Centralized management for notification users, categories, and subscriptions.
Summary
The Notification Center dashboard provides a comprehensive interface for managing the smart home's notification system. Administrators can add or remove users for mobile app notifications and define notification categories (e.g., 'Garage', 'Electricity'). The view allows for granular control over subscriptions, enabling individual users to opt-in or out of specific notification types, and includes tools to map and monitor notification-related automations.
Related Packages
This view contains entities managed by:
Dependencies (Custom Cards)
Required HACS frontend resources:
custom:auto-entitiescustom:card-modcustom:mushroom-title-card
Configuration
title: Notifications Management
icon: mdi:bell-cog
type: sections
max_columns: 5
sections:
- type: grid
cards:
- type: custom:mushroom-title-card
title: User Management
alignment: center
title_tap_action:
action: none
subtitle_tap_action:
action: none
- type: heading
heading: Add / Update User
icon: mdi:account-plus
heading_style: title
card_mod:
style: "ha-card {\n border: none;\n --primary-text-color: var(--green-color);\n\
\ --secondary-text-color: var(--green-color);\n --card-mod-icon-color: var(--green-color);\n\
}\n"
- type: markdown
content: '**How to Add a User:**
1. Select a **Home Assistant Person**.
2. Select their **Mobile App Service**.
3. Click **Add User**.'
- type: entities
show_header_toggle: false
entities:
- entity: input_select.notify_mgmt_person_select
name: Select Person
- type: call-service
icon: mdi:refresh
name: Refresh Lists
action_name: REFRESH
service: automation.trigger
service_data:
entity_id: automation.system_populate_notify_services
skip_condition: true
- entity: input_select.notify_mgmt_service
name: Mobile App Service
- entity: input_select.notify_mgmt_platform
icon: mdi:cellphone-cog
card_mod:
style: "ha-card {\n border: none;\n --card-mod-icon-color: var(--green-color);\n\
}\n"
- type: tile
entity: input_select.notify_mgmt_person_select
name: Add User
icon: mdi:account-plus
color: green
show_entity_picture: false
vertical: false
tap_action:
action: call-service
service: script.create_notify_user
features_position: bottom
card_mod:
style: "ha-card {\n border: none;\n background: var(--green-color);\n --primary-text-color:\
\ white;\n --secondary-text-color: white;\n --card-mod-icon-color: black;\n\
}\n"
grid_options:
columns: 9
rows: 1
- type: heading
heading: Delete User
icon: mdi:account-remove
heading_style: title
card_mod:
style: "ha-card {\n border: none;\n --primary-text-color: var(--red-color);\n\
\ --card-mod-icon-color: var(--red-color);\n}\n"
- type: markdown
content: '**User Cleanup:**
Select a user below and click Delete to remove their notification settings.
'
- type: entities
show_header_toggle: false
entities:
- entity: input_select.notify_mgmt_delete_user_select
name: Select User to Delete
- type: call-service
icon: mdi:refresh
name: Refresh User List
action_name: REFRESH
service: automation.trigger
service_data:
entity_id: automation.system_populate_notify_services
skip_condition: true
card_mod:
style: "ha-card {\n border: none;\n --card-mod-icon-color: var(--red-color);\n\
}\n"
- type: tile
entity: input_select.notify_mgmt_delete_user_select
name: Delete User
icon: mdi:account-remove
color: red
show_entity_picture: false
vertical: false
tap_action:
action: call-service
service: script.delete_notify_user
features_position: bottom
card_mod:
style: "ha-card {\n border: none;\n background: var(--red-color);\n --primary-text-color:\
\ white;\n --secondary-text-color: white;\n --card-mod-icon-color: black;\n\
}\n"
grid_options:
columns: 9
rows: 1
- type: grid
cards:
- type: custom:mushroom-title-card
title: Category Management
alignment: center
title_tap_action:
action: none
subtitle_tap_action:
action: none
- type: heading
heading: Add Category
icon: mdi:playlist-plus
heading_style: title
card_mod:
style: "ha-card {\n border: none;\n --primary-text-color: var(--green-color);\n\
\ --secondary-text-color: var(--green-color);\n --card-mod-icon-color: var(--green-color);\n\
}\n"
- type: markdown
content: "**Add Category:\n\n** Type a new category name below (e.g. 'Garage')\
\ and click Add. \n\n*This adds a switch to all users automatically.*\n"
- type: entities
show_header_toggle: false
entities:
- entity: input_text.notify_add_category
name: New Category Name
icon: mdi:playlist-plus
card_mod:
style: "ha-card {\n border: none;\n --card-mod-icon-color: var(--green-color);\n\
}\n"
grid_options:
columns: 12
- type: tile
entity: input_text.notify_add_category
name: Add Category
icon: mdi:text-box-plus
color: green
show_entity_picture: false
vertical: false
tap_action:
action: call-service
service: script.add_notify_category_global
features_position: bottom
card_mod:
style: "ha-card {\n border: none;\n background: var(--green-color);\n --primary-text-color:\
\ white;\n --secondary-text-color: white;\n --card-mod-icon-color: black;\n\
}\n"
grid_options:
columns: 9
rows: 1
- type: heading
heading: Delete Category
icon: mdi:playlist-remove
heading_style: title
card_mod:
style: "ha-card {\n border: none;\n --primary-text-color: var(--red-color);\n\
\ --secondary-text-color: var(--red-color);\n --card-mod-icon-color: var(--red-color);\n\
}\n"
- type: markdown
content: '**Category Cleanup:**
To delete a category, type the category name below and click the DELETE button.
*This deletes the category from the users and from the settings.*
'
- type: entities
show_header_toggle: false
entities:
- entity: input_select.notify_delete_category
name: Category to Delete
icon: mdi:playlist-remove
- type: call-service
icon: mdi:refresh
name: Refresh Category List
action_name: REFRESH
service: automation.trigger
service_data:
entity_id: automation.system_populate_notify_services
skip_condition: true
card_mod:
style: "ha-card {\n border: none;\n --card-mod-icon-color: var(--red-color);\n\
}\n"
grid_options:
columns: 12
- type: tile
entity: input_select.notify_delete_category
name: Delete Category
icon: mdi:text-box-remove
color: red
show_entity_picture: false
vertical: false
tap_action:
action: call-service
service: script.delete_notify_category_global
features_position: bottom
card_mod:
style: "ha-card {\n border: none;\n background: var(--red-color);\n --primary-text-color:\
\ white;\n --secondary-text-color: white;\n --card-mod-icon-color: black;\n\
}\n"
grid_options:
columns: 9
rows: 1
- type: entities
entities:
- entity: input_text.notify_mgmt_categories
name: Master List (ReadOnly)
icon: mdi:format-list-text
secondary_info: last-updated
card_mod:
style: "ha-card {\n border: none;\n --card-mod-icon-color: var(--orange-color);\n\
}\n"
grid_options:
columns: 12
rows: auto
- type: grid
cards:
- type: custom:mushroom-title-card
alignment: center
title_tap_action:
action: none
subtitle_tap_action:
action: none
title: Delivery Settings
- type: heading
heading: Category Settings
icon: mdi:playlist-check
heading_style: title
card_mod:
style: "ha-card {\n border: none;\n --primary-text-color: var(--orange-color);\n\
\ --secondary-text-color: var(--orange-color);\n --card-mod-icon-color:\
\ var(--orange-color);\n}\n"
- type: markdown
content: '**Category Delivery Rules**
If the category toggle is on, notification is only sent to users who are currently
at home.
* **ON:** Send if person is at **Home**.
* **OFF:** Send always.
'
- type: custom:auto-entities
show_empty: true
card:
type: entities
title: Global Delivery Settings
show_header_toggle: false
card_mod:
style: "/* hide the header row completely */\n.card-header,\n.card-header\
\ > .name,\n.card-header > .menu,\n.header {\n display: none !important;\n\
}\n/* remove the extra top padding that can remain */\nha-card > :first-child\
\ {\n padding-top: 0 !important;\n}\n"
filter:
template: "{% set ns = namespace(rows=[]) %} {# Find switches matching the global\
\ category pattern #} {% set switches = states.switch \n | selectattr('entity_id',\
\ 'search', 'notify_category_.*_local') \n | sort(attribute='name') \n \
\ | list %}\n\n{% if switches | length > 0 %}\n {# Add a single label for\
\ all categories with Orange Style #}\n {% set ns.rows = ns.rows + [{\n \
\ 'type': 'section', \n 'label': 'Categories',\n 'card_mod':\
\ {\n 'style': \".label { color: orange !important; }\"\n }\n\
\ }] %}\n\n {% for sw in switches %}\n {% set is_on = is_state(sw.entity_id,\
\ 'on') %}\n \n {# Define Icon and Color logic #}\n {% set icon\
\ = 'mdi:home-account' if is_on else 'mdi:earth' %}\n {% set color = 'lightgreen'\
\ if is_on else '#2196F3' %} {# Standard HA Blue #}\n \n {% set ns.rows\
\ = ns.rows + [{\n 'entity': sw.entity_id,\n 'secondary_info':\
\ 'If ON, requires presence',\n 'icon': icon,\n 'card_mod': {\n\
\ 'style': \":host { --card-mod-icon-color: \" ~ color ~ \"; }\"\n\
\ }\n }] %}\n {% endfor %}\n{% endif %}\n{{ ns.rows | to_json\
\ }}\n"
sort:
method: none
- type: grid
cards:
- type: custom:mushroom-title-card
title: Subsription Management
alignment: center
title_tap_action:
action: none
subtitle_tap_action:
action: none
- type: heading
heading: User Subscriptions
icon: mdi:comment-outline
heading_style: title
card_mod:
style: "ha-card {\n border: none;\n --primary-text-color: var(--orange-color);\n\
\ --secondary-text-color: var(--orange-color);\n --card-mod-icon-color:\
\ var(--orange-color);\n}\n"
- type: markdown
content: '**User Preferences**
*Toggle a switch **OFF** to unsubscribe a specific user from notifications of
that category.*
'
- type: custom:auto-entities
show_empty: true
card:
type: entities
title: Notification Subscriptions
show_header_toggle: false
card_mod:
style: "/* hide the header row completely */\n.card-header,\n.card-header\
\ > .name,\n.card-header > .menu,\n.header {\n display: none !important;\n\
}\n/* remove the extra top padding that can remain */\nha-card > :first-child\
\ {\n padding-top: 0 !important;\n}\n"
filter:
template: "{% set ns = namespace(cards=[]) %} {# 1. Find all switches that belong\
\ to the notification system (have user_slug attribute) #} {% set switches\
\ = states.switch \n | selectattr('entity_id', 'search', '_notification_')\
\ \n | selectattr('attributes.user_slug', 'defined') \n | list %}\n\n\
{# 2. Extract unique users to create groups #} {% set users = switches | map(attribute='attributes.user_slug')\
\ | unique | sort | list %}\n{% for user in users %}\n {# Filter switches\
\ for this specific user #}\n {% set user_switches = switches | selectattr('attributes.user_slug',\
\ 'eq', user) | sort(attribute='name') | list %}\n \n {% if user_switches\
\ | length > 0 %}\n {# 3. Add Section Header with Orange Style #}\n \
\ {% set ns.cards = ns.cards + [{\n 'type': 'section', \n 'label':\
\ user | capitalize ~ '\\'s Subscriptions',\n 'card_mod': {\n \
\ 'style': \".label { color: orange !important; }\"\n }\n }] %}\n\
\ \n {# 4. Add Switches #}\n {% for sw in user_switches %}\n \
\ {% set is_on = is_state(sw.entity_id, 'on') %}\n {% set icon_color\
\ = 'green' if is_on else 'red' %}\n {% set icon = 'mdi:email-check'\
\ if is_on else 'mdi:email-remove-outline' %}\n \n {# Clean up\
\ the name by removing ' Notification' for a cleaner list #}\n {% set\
\ clean_name = sw.name | replace(' Notification', '') %}\n \n \
\ {% set ns.cards = ns.cards + [{\n 'entity': sw.entity_id,\n \
\ 'name': clean_name,\n 'secondary_info': 'last-changed',\n \
\ 'icon': icon,\n 'card_mod': {\n 'style': \":host\
\ { --card-mod-icon-color: \" ~ icon_color ~ \"; }\"\n }\n \
\ }] %}\n {% endfor %}\n {% endif %}\n{% endfor %}\n{{ ns.cards | to_json\
\ }}\n"
sort:
method: none
- type: grid
cards:
- type: custom:mushroom-title-card
title: Notifications List
alignment: center
title_tap_action:
action: none
subtitle_tap_action:
action: none
- type: heading
heading: Automation Map
icon: mdi:sitemap
heading_style: title
card_mod:
style: "ha-card {\n border: none;\n --primary-text-color: var(--orange-color);\n\
\ --secondary-text-color: var(--orange-color);\n --card-mod-icon-color:\
\ var(--orange-color);\n}\n"
- type: markdown
content: '**Notifications Overview**
Lists all notifcation automations grouped by Category Labels. You can turn the
automations on or off.
*Tip: Add labels like ''Notify: Electricity'' to your automations to see them
here.*
'
- type: custom:auto-entities
show_empty: true
card:
type: entities
title: Labeled Automations
show_header_toggle: false
card_mod:
style: "/* hide the header row completely */\n.card-header,\n.card-header\
\ > .name,\n.card-header > .menu,\n.header {\n display: none !important;\n\
}\n/* remove the extra top padding that can remain */\nha-card > :first-child\
\ {\n padding-top: 0 !important;\n}\n"
filter:
template: "{% set ns = namespace(cards=[]) %} {% set all_labels = labels() %}\
\ {% set notify_labels = all_labels | select('search', '^notify_') | sort\
\ | list %}\n{% for label_id in notify_labels %}\n {% set entities = label_entities(label_id)\
\ | select('search', '^automation\\.') | list %}\n \n {% if entities | length\
\ > 0 %}\n {% set display_name = label_id.replace('notify_', '') | capitalize\
\ %}\n \n {# Add Section with Orange Label Style #}\n {% set ns.cards\
\ = ns.cards + [{\n 'type': 'section', \n 'label': display_name\
\ ~ ' Notifications',\n 'card_mod': {\n 'style': \".label { color:\
\ orange !important; }\"\n }\n }] %}\n \n {% for ent in entities\
\ %}\n {% set icon_color = 'lightgreen' if is_state(ent, 'on') else\
\ 'red' %}\n {% set ns.cards = ns.cards + [{\n 'entity': ent,\n\
\ 'secondary_info': 'last-triggered',\n 'icon': 'mdi:cellphone-message',\n\
\ 'card_mod': {\n 'style': \":host { --card-mod-icon-color:\
\ \" ~ icon_color ~ \"; }\"\n }\n }] %}\n {% endfor %}\n\
\ {% endif %}\n{% endfor %}\n{{ ns.cards | to_json }}\n"
sort:
method: none
cards: []
header:
card:
type: markdown
text_only: true
content: '# Notification Center
Manage Home Assistant App Notifications'
path: notifications-management
