If you have spent any time building automations in Home Assistant you will have noticed that the most useful ones rarely trigger on a single device state. They depend on context: is anyone home? What mode is the house in? How long has the boiler been overriding its schedule? Helpers are how you create and manage that context. They are virtual entities — not backed by any physical device — that you define, control, and query just like any other Home Assistant entity. Once you understand helpers, your automations become dramatically more flexible.
What Are Home Assistant Helpers?
Helpers are user-defined entities that store state. Unlike integrations that pull data from a real device (a temperature sensor, a light bulb), helpers exist only inside Home Assistant. You decide what they are called, what values they can hold, and how automations read or write to them. They restore their previous state after a restart, which means they are reliable as long-term flags and counters rather than just transient variables.
Helpers live under Settings → Devices & Services → Helpers. From that screen you can see every helper you have created, edit them, and add new ones without touching any YAML. This makes them one of the most accessible features for users who prefer the Home Assistant UI over configuration files.
Every Helper Type Explained
Home Assistant ships with eight built-in helper types. Each maps to a specific integration under the hood but is exposed through a friendly UI wizard.
Toggle (input_boolean)
What it stores: On or off — a simple binary flag.
The toggle helper is the workhorse of Home Assistant logic. Use it to represent modes and overrides: guest mode, holiday mode, cleaning mode, or a manual override that pauses an automation. Because it is just on/off, any automation can read or write it with a single action. Input booleans restore their previous state after a restart; if you set an initial value in YAML the system uses that value instead. The official Home Assistant documentation notes it is used by a significant share of active installations — it is the most commonly reached-for helper type.
Dropdown (input_select)
What it stores: One value from a predefined list of options.
The dropdown helper lets you model multi-state modes. Instead of three separate toggles for Morning / Evening / Night, a single input_select with those three options gives your automations a clear, mutually exclusive state to branch on. When the selected option changes, Home Assistant fires a state-change event that can trigger automations. Options can also be updated at runtime via the input_select.set_options action, making it useful for dynamic lists generated by scripts. Introduced in Home Assistant 0.13, it is used by around 15% of active installations according to the HA telemetry data.
Number (input_number)
What it stores: A numeric value within a defined range, displayed as a slider or input box.
Use input_number when you want a user-adjustable threshold. Common examples include a lux threshold below which lights turn on automatically, a temperature setpoint for a secondary zone not covered by a smart thermostat, or a delay in minutes before a notification fires. You set the minimum, maximum, and step values when creating the helper, and the UI renders either a slider or a numeric box depending on your preference.
Text (input_text)
What it stores: A free-form string up to a configurable maximum length.
Input_text is useful for storing dynamic messages that automations can read and speak aloud or push to a notification. A classic example: create input_text.welcome_message, fill it with a custom greeting, and have a presence-detection automation broadcast it to your smart speakers when someone arrives home. You change the message from the dashboard without ever editing the automation. Text helpers can also store transient state like the last scanned barcode or the name of a currently playing track.
Date and/or Time (input_datetime)
What it stores: A date, a time, or both.
Input_datetime is designed for scheduling one-off events without hard-coding times into automations. Create input_datetime.morning_alarm and build an automation that triggers at whatever time is stored in the helper. You or your household members can then adjust the alarm time from a dashboard card without touching the automation. It can store date-only, time-only, or a full datetime, and the input_datetime.set_datetime action lets other automations and scripts update it programmatically. It was introduced in Home Assistant 0.55 and is used by roughly 16% of active installations.
Timer
What it stores: A countdown that can be started, paused, resumed, and cancelled.
The timer helper fires discrete events — started, paused, restarted, cancelled, and finished — that automations can listen for. Its three states are idle, active, and paused. Common uses include keeping a bathroom extractor fan running for a fixed period after a shower ends, delaying a boiler override so it turns off after 30 minutes rather than running indefinitely, or triggering a laundry reminder when a wash cycle timer expires. One important caveat: if Home Assistant is not running when a timer would have finished, the timer.finished event is not fired on restart.
Counter
What it stores: An integer, with configurable minimum, maximum, and step values.
Use the counter helper to track how many times something has happened. You can configure it to increment or decrement by a custom step, set minimum and maximum bounds, and reset it on demand. Practical examples include counting the number of times a door has been opened in a day, tracking how many reminders have been sent before escalating, or capping the number of exercise break notifications so they stop after a set goal. The counter restores its previous value after a restart by default.
Schedule
What it stores: A weekly timetable of active/inactive blocks.
Introduced in Home Assistant 2022.9, the schedule helper lets you draw time blocks across a weekly calendar in the UI. The entity is on during active blocks and off outside them, flipping automatically at the configured times. This is ideal for defining "quiet hours" during which motion-triggered lights do not activate, or for setting when a heating programme is allowed to run independently of the main thermostat schedule. When consecutive blocks touch without a gap, the schedule stays on continuously across the boundary. Around 7.5% of active installations use schedules.
Creating Helpers via the UI
No YAML is required to create any of the above helpers. The process is the same for all types:
- Go to Settings → Devices & Services.
- Select the Helpers tab at the top of the page.
- Click the blue + Create Helper button in the lower-right corner.
- Choose the type you want from the list.
- Fill in the name, icon, and any type-specific options (options list for dropdown, min/max for number, duration for timer, and so on).
- Click Create.
The helper immediately appears in your entity list under the domain matching its type (e.g. input_boolean.guest_mode, timer.boiler_override). You do not need to restart Home Assistant.
Note: your configuration.yaml must include default_config: for UI-created helpers to persist. If you have removed that line and use a modular configuration, add input_boolean:, input_select:, and the other domains explicitly, or helpers created in the UI may not survive a restart.
Practical Examples
Guest Mode Toggle
Create an input_boolean called Guest Mode. Add a toggle card to your dashboard so anyone in the house can flip it. Then add a condition to your presence-detection automations: only turn off the lights or lock the doors if guest mode is off. When guests are staying, the house behaves as though someone is always home, and your automations leave lighting and heating alone.
Room Mode Selector
Create an input_select for your living room with options: Relax, Movie, Reading, Party, Off. Build a single automation that triggers whenever the dropdown changes and then calls the appropriate scene for each option. This replaces five separate automation triggers with one tidy automation, and any dashboard button, voice command, or other automation can simply call input_select.select_option to switch modes.
Boiler Override Timer
If you have a Home Assistant heating setup you may want a manual boost that turns off automatically. Create a timer helper called Boiler Override with a default duration of 30 minutes. Add a dashboard button that calls timer.start and simultaneously turns on the boiler. Build a separate automation that listens for the timer.finished event and turns the boiler off again. The timer can be paused or cancelled at any time, giving you fine-grained control without hard-coded delays in your automations.
Adjustable Morning Alarm
Create an input_datetime (time only) called Weekday Alarm and expose it as a time-picker on your dashboard. Write an automation with the trigger type Time set to Value of the input_datetime entity. Every morning at whatever time is stored in the helper, the automation runs — opening blinds, starting your coffee maker, or playing a radio station. Household members can adjust the time from the dashboard or the Home Assistant mobile app without any YAML changes.
Using Helpers in Automations
Helpers integrate with every part of the Home Assistant automation engine. The three main ways to use them are:
- Trigger on state change — use a State trigger pointing at the helper entity. For input_boolean, trigger when it turns
onoroff. For input_select, trigger when its state changes to a specific option. For timer, trigger on thetimer.finishedevent. - Condition check — add a State condition to any automation to gate it behind a helper. For example: only run this automation if input_boolean.guest_mode is off.
- Action to update — call the helper's action from an automation or script:
input_boolean.turn_on,input_select.select_option,timer.start,counter.increment, and so on. This lets one automation control the state that another automation reads.
For more complex logic — passing helper values into template expressions, chaining helpers across multiple automations — see our scripts guide, which covers how scripts can read and write helper state as part of reusable sequences.
Showing Helpers on Your Dashboard
Helpers are first-class entities in Lovelace, the Home Assistant dashboard system. The most useful card types for each helper are:
- input_boolean — Toggle card or Button card
- input_select — Select card or Entities card
- input_number — Number card (renders as slider or box)
- input_text — Entities card with a text input row
- input_datetime — Entities card with a date/time picker
- timer — Timer card (shows countdown, start/pause/cancel controls)
- counter — Entities card
- schedule — Schedule card (visual weekly timetable)
All of these are interactive — tapping or adjusting the card writes the new state back to the helper immediately, which in turn can trigger any automation watching that helper. This is how you build a fully interactive dashboard where the controls and the automations are in sync.
Helpers vs Template Sensors — When to Use Which
A common question is when to create a helper versus creating a template sensor. The key distinction is who sets the value:
- Use a helper when the value is set by a user action or explicitly by an automation calling an action (e.g.
input_boolean.turn_on). Helpers are writable, interactive, and dashboard-friendly. They also persist their state through restarts reliably. - Use a template sensor when the value is always derived from other entity states — it is calculated automatically and never written to directly. For example, a template binary sensor that is
onwhenever any window in the house is open is purely derived; there is no user action that sets it.
Template sensors are re-evaluated whenever their source entities change, so they are always up to date. However, they do not retain their value across restarts until they are re-evaluated. Helper values, by contrast, are restored from storage on startup regardless of what triggered them. If you need a value that is both derived AND user-overridable, you typically use both: a template sensor to compute the default, and an automation that copies the template result into a helper unless a manual override flag (another helper) is set.




