Build, test, organise, template, audit, and diagnose rich Home Assistant Companion notifications from one admin-only sidebar panel.
Warning
Notify Studio is under active development. Review generated YAML before using it in a live automation or script, and take a Home Assistant backup before installing an update.
v0.1.30 improves Device Watch with a manual device/entity display name and an optional pre-written connectivity-warning title.
Notify Studio brings the fragmented parts of rich Companion notifications into a single Home Assistant panel. It uses legacy notify.mobile_app_<device> services for the Companion-specific payload fields that standard notify entities do not expose.
| Section | Purpose |
|---|---|
| Notifications | Audit notification calls found in merged YAML, organise them with custom Notify Studio categories/areas, bulk-toggle groups, and review recent push activity. |
| Compose | Build a platform-aware notification, preview Jinja content, send a test, save a template, generate copy-ready YAML, or create a UI-managed automation. |
| Device Watch | Create a push-notification automation for a selected binary_sensor or device_tracker going offline, coming back online, or both. |
| Templates | Create, edit, reuse, and delete saved notification drafts stored inside Home Assistant. |
| Logs | Review recent Notify Studio actions, warnings, and errors, including Run test outcomes. |
- Dynamic discovery of registered Home Assistant Companion mobile-app services.
- Android and Apple-specific composer options, shown only for the selected platform.
- Live Jinja preview for notification titles and messages.
- Safe test sends restricted to discovered Companion notifier services.
- Reusable templates with immediate loading from the Composer dropdown.
- Actionable-notification buttons for scripts, Home Assistant actions, URIs, text replies, and custom events.
- Generated YAML for notification actions and matching
mobile_app_notification_actionhandlers where required. - Save generated notification actions as new UI-managed automations, then open Home Assistant’s Automation Editor to add triggers and conditions.
- Dedicated Device Watch builder for
binary_sensoranddevice_trackerconnectivity alerts, with searchable entity selection, editable device/entity display names, a pre-written connectivity-warning title option, custom trigger mode, notification icon, title, message, safe template variables, and automation save flow. - Merged-YAML auditing across automations, scripts, alerts, and nested action blocks.
- Filtering by source type, Home Assistant category, Home Assistant label, notify device, and Notify Studio custom group.
- Per-instance custom categories and areas for notification sources, separate from Home Assistant's own registries.
- Responsive quick-control favourites: pin bulk or individual category/area controls with stars, keep one row visible by default, and expand for the full control list.
- Favourite choices are stored locally per Home Assistant instance. A narrower desktop temporarily shows the controls that fit without removing saved favourites; they reappear when space is available again.
- On mobile, up to seven favourite controls are kept in one swipeable horizontal row.
- Runtime enable/disable controls for matching automation entities and confirmed test runs for automations and scripts.
- A separate recent-activity column for notification-related automations and scripts.
- In-memory operational logs for test sends, YAML generation, source scans, templates, custom-group activity, run-test requests, warnings, and backend errors.
- No browser-stored access token. The panel uses Home Assistant's authenticated WebSocket connection.
- Home Assistant 2026.5.0 or newer
- HACS
- At least one Home Assistant Companion App mobile device for notification composition and test sends
- A Home Assistant administrator account
-
Open HACS in Home Assistant.
-
Open the three-dot menu and choose Custom repositories.
-
Add this repository URL:
https://github.com/pqpxo/ha-notify-studio -
Select Integration as the category, then add the repository.
-
Search for Notify Studio in HACS and select Download.
-
Restart Home Assistant.
-
Go to Settings → Devices & services → Add integration.
-
Add Notify Studio, then open it from the Home Assistant sidebar.
Copy custom_components/notify_studio to:
config/custom_components/notify_studio/
Restart Home Assistant, then add the integration through Settings → Devices & services.
- Open Compose.
- Select a Companion App target.
- Enter the title, message, tag, image, URL, and any platform-specific fields required.
- Select Send test to validate and deliver the notification.
- Select Generate YAML to create a notification action and any matching handler automation.
- In Preview and YAML, enter an optional automation name and select Save Automation to create a UI-managed automation and open it in the native editor.
The right-hand panel renders the title/message as you type and shows the generated YAML.
After selecting Generate YAML, use Save Automation in the Preview and YAML panel. Notify Studio creates a new UI-managed automation with the generated notification action, then opens Home Assistant’s Automation Editor. Add or review the trigger and optional conditions before enabling it.
If the notification includes actionable buttons that need an event handler, Notify Studio also creates a separate handler automation. This is required because Companion action presses arrive as independent mobile_app_notification_action events.
Note
This creates Home Assistant UI-managed automations. Home Assistant manages automations.yaml for UI-created automations; Notify Studio does not directly edit YAML files or package/include files.
Open Device Watch to create a connectivity automation without starting from a blank automation.
- Select the Companion App target that should receive the push notification.
- Search for and select a
binary_sensorordevice_trackerentity to monitor. - Edit the device/entity display name shown in notifications if the Home Assistant friendly name is not ideal.
- Choose whether to notify on disconnecting, reconnecting, or both.
- Set an optional notification icon.
- Customise the title and message templates, or tick Use Pre-Written Title to use
Device Connectivity Warning | {{ device_watch_name }}. - Enter an optional automation name and select Save Automation.
Binary sensors are treated as connected when on and disconnected when off. Device trackers are treated as connected when home and disconnected when they leave home. Notify Studio saves the generated automation through the same UI-managed automation save path used by the Composer.
Device Watch generated automations define safe template variables before sending the notification: device_watch_name, device_watch_status, device_watch_event, and device_watch_entity_id. The device_watch_name value comes from the editable Device/entity name field. Use these variables in custom title and message templates instead of directly referencing trigger.to_state, because manual automation runs do not always include a state-trigger object.
- Build a notification in Compose.
- Select Save Template.
- Give it a name and optional description in Templates.
- Return to Compose and select it from the Template dropdown. It loads immediately.
Templates are kept in Notify Studio's Home Assistant storage. They do not alter package YAML or existing automation files.
Open Notifications, then select Manage groups.
- Create a custom category or area such as
Security,Morning routines, orUpstairs. - Use Select entities beside the relevant group's Rename and Delete controls.
- Tick the source cards you want to include, then choose Save entities in the Manage groups panel.
- The unified control panel shows saved source members and an overall automation toggle for every group.
- Use individual member controls or the overall control to enable or disable assigned automation entities.
Custom groups are intentionally separate from Home Assistant's native categories, areas, and labels:
- They are stored per Home Assistant instance in Notify Studio storage.
- They do not rename or change any Home Assistant entity.
- They can include automation, script, or alert sources.
- Bulk toggles only affect assigned automation entities. Scripts and alerts are never enabled or disabled by the group control.
Enable Actionable notification in Compose and configure one or more buttons.
| Button type | Result |
|---|---|
| Run script | Generates a handler that calls the selected Home Assistant script. |
| Run Home Assistant action | Generates a handler that calls the chosen action with optional JSON data. |
| Open URI / dashboard | Opens a URI, deep link, or Lovelace route directly on the mobile device. |
| Ask for text reply | Generates a handler that exposes trigger.event.data.reply_text. |
| Send event only | Generates a safe starter handler for you to extend. |
Android supports up to three actionable notification buttons. Platform support and permissions still apply, so review generated YAML before production use.
Open Notifications to scan merged Home Assistant YAML. The left column contains filters and notification source cards. The right column contains Recently triggered push activity for notification-related automations and scripts.
For matching runtime entities, a source card can display:
- Last triggered time
- Home Assistant category, labels, and discovered notify devices
- Notify Studio custom-category and custom-area assignments
- Enable/disable control for automations
- A confirmed Run test action
- Selection checkboxes when a custom category or area is in entity-selection mode
- A confirmed editor shortcut for the matching automation or script
Note
The static audit covers merged YAML configuration, including packages and supported include files. Sources created only outside YAML may not be returned by the scanner.
Open Logs after using a Run test button. Notify Studio records whether Home Assistant accepted, blocked, or rejected the request.
- Automation disabled: enable the automation first.
- Already running in single mode: wait for the current run to finish before running another test.
- Run test queued: Home Assistant accepted the request. For automations, top-level conditions are deliberately bypassed so notification actions can be tested reliably.
- Service/action error after queueing: inspect the automation trace or Home Assistant system logs. The app can confirm the request was queued but cannot safely wait for long-running automations to finish.
The Logs page keeps the latest 250 application events in memory and clears when Home Assistant restarts. It does not copy the entire Home Assistant system log and it does not record notification payload contents.
Notify Studio exposes Android-compatible options including channel, importance, priority, colour, icon, timeout, sticky behaviour, persistent notifications, and Android URI actions.
Persistent notifications require a tag. Notify Studio supplies an editable tag automatically when Persistent notification is enabled and the Tag field is empty.
Apple-specific options include subtitle, sound, badge, interruption level, and thread ID. Critical and time-sensitive notification behaviour depends on Companion App permissions and device settings.
- All Notify Studio WebSocket commands require an administrator account.
- Test sends and run-test controls can trigger real notifications, automations, scripts, and device actions.
- Custom group bulk toggles can enable or disable several automations at once, and always ask for confirmation.
- Test sends are restricted to discovered
notify.mobile_app_*services. - Run test deliberately bypasses top-level automation conditions. It does not alter the automation configuration.
- Review all generated YAML, especially actionable-notification handlers that call scripts or Home Assistant actions.
notify-studio/
├── custom_components/notify_studio/
│ ├── brand/ # Integration and README logo assets
│ ├── frontend/ # Compiled panel bundle committed for HACS
│ ├── custom_group_store.py # Custom Notify Studio category/area storage
│ ├── log_store.py # Bounded in-memory application log
│ ├── notification_schema.py # Payload validation and YAML generation
│ ├── notify_scanner.py # Merged-YAML notification scanner
│ ├── template_store.py # Saved notification template storage
│ └── websocket_api.py # Admin-only panel API
├── panel-src/ # React, TypeScript, and Vite source
└── .github/workflows/ # HACS and Hassfest validation
cd panel-src
npm install
npm run typecheck
npm run buildThe compiled module is written to:
custom_components/notify_studio/frontend/notify-studio-panel.js
Commit that bundle with every frontend source change, as HACS users do not run a build step.
Use GitHub branches and pull requests for changes. After merging a version into main, publish a GitHub Release such as v0.1.30. HACS uses published releases to offer version selection and rollback.
See HACS_RELEASE_WORKFLOW.md for the release checklist.
Open an issue at pqpxo/ha-notify-studio with your Home Assistant version, Notify Studio version, browser console errors, and relevant sanitised entries from Logs.
