Restore the countdown—or check a saved deadline

To make a Home Assistant timer survive a restart, enable Restore on its Timer helper. A helper is a saved setting or virtual control inside Home Assistant. Put the completion action in its own automation, listening for timer.finished.

There is one crucial limit: Home Assistant does not replay that event if the timer expires while the server is off. Restoring the countdown and carrying out missed work are separate jobs.

If a late reminder is still useful, store an absolute deadline—such as today at 6:10 pm—and check it after startup. The worked example below keeps that deadline and a “still wanted” toggle, then creates a local notification when the deadline has passed. It never switches appliances or locks.

Choose that catch-up behavior deliberately. A reminder to check laundry can arrive late; turning a bedroom lamp on hours after its intended time may be unwelcome. For anything safety-critical, use the device’s own appropriate controls and safeguards. This recipe is a convenience reminder.

Researched from current Home Assistant documentation on September 17, 2026. The examples are illustrative configurations, not a tested household installation. Software verification and its limits are noted below. The cover is an AI-generated residential illustration.

1. Choose what should happen after an interruption

On a small screen, swipe the table sideways to read every column.

NeedUseInterruption behavior
A short wait during one running routineA delay or wait actionDo not treat an in-progress action sequence as saved work.
React after a state stays unchangedA trigger with for:Its waiting period resets on restart or automation reload.
A countdown you can view, pause and resumeTimer helper with RestoreRestores its state; a finish during downtime does not replay the completion event.
A reminder that remains due even after downtimeSaved date/time plus pending toggleCheck the current time after startup and periodically; decide whether late completion is appropriate.

The trigger documentation explicitly distinguishes for: from a saved date/time. Likewise, mode: restart describes how overlapping runs behave; it is not a reboot-recovery setting.

2. Use Timer Restore when missed completion is acceptable

  1. Open Settings → Devices & services → Helpers → Create helper → Timer. Name it Reminder, set a duration, and enable Restore. Confirm its entity ID is timer.reminder. An entity ID is Home Assistant’s exact name for one control or reading.
  2. Create a new automation under Settings → Automations & scenes. Choose Edit in YAML from its menu and paste the example below. YAML is the editor’s text format; keep the indentation.
  3. Start the timer from its control, or use timer.start in the Actions tool. Current documentation calls this Settings → Tools → Actions; older releases may show Developer tools → Actions.
Timer completion automation
alias: Reminder timer finished
triggers:
  - trigger: event
    event_type: timer.finished
    event_data:
      entity_id: timer.reminder
actions:
  - action: persistent_notification.create
    data:
      title: Reminder
      message: The countdown finished while Home Assistant was running.
      notification_id: timer_reminder
mode: single

Replace the entity ID if yours differs. This automation is separate from whatever starts the timer: it is not an old action sequence waiting in the background. Do not use idle alone as proof of completion; a timer is also idle after cancellation or before its first start.

For the alternative that catches up after downtime, use the next example. You do not need to create the Timer helper above as well.

3. Build a ten-minute reminder with a saved deadline

This example has one start/cancel toggle, one stored deadline and one automation. Switching the toggle on starts ten minutes. Switching it off cancels a reminder that has not begun completing. After completion, the automation switches it off for you.

  1. In Helpers → Create helper, choose Date and/or time. Name it Reminder due and select both date and time. Confirm input_datetime.reminder_due. A time-only helper is unsuitable for this one-off deadline. The helper uses Home Assistant’s configured time zone; check that the displayed date and time are right.
  2. Create a Toggle named Reminder pending, with ID input_boolean.reminder_pending. Leave it off while setting up. Put both helpers on a dashboard so you can see the due time and cancel the reminder.
  3. Create a new automation, open Edit in YAML, and paste the complete configuration below. Save it and keep it enabled. If your helper IDs differ, replace them everywhere, including inside the template. On a narrow screen, scroll the code sideways; copy the whole block, including mode and max at the end.
Complete saved-deadline automation
alias: Reminder with a saved deadline
triggers:
  - trigger: state
    entity_id: input_boolean.reminder_pending
    from: "off"
    to: "on"
    id: start
  - trigger: time
    at: input_datetime.reminder_due
    id: deadline
  - trigger: homeassistant
    event: start
    id: startup
  - trigger: time_pattern
    minutes: "/1"
    id: check
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id: start
        sequence:
          - action: input_datetime.set_datetime
            target:
              entity_id: input_datetime.reminder_due
            data:
              timestamp: "{{ now().timestamp() + 600 }}"
    default:
      - condition: state
        entity_id: input_boolean.reminder_pending
        state: "on"
      - condition: template
        value_template: >-
          {% set due = state_attr('input_datetime.reminder_due',
                                  'timestamp') | float(0) %}
          {{ has_value('input_datetime.reminder_due')
             and due > 0 and now().timestamp() >= due }}
      - action: persistent_notification.create
        data:
          title: Reminder due
          message: >-
            Your saved reminder is due. If Home Assistant was off,
            this message may be late.
          notification_id: saved_deadline_reminder
      - action: input_boolean.turn_off
        target:
          entity_id: input_boolean.reminder_pending
mode: queued
max: 5

Turn Reminder pending on to begin. The automation writes a deadline 600 seconds ahead; the timestamp field sets both the date and time. Change 600 to your desired number of seconds. To start a fresh countdown before the old one completes, turn the toggle off, then on again. This is cancellation and a new start, not pause/resume.

The date/time helper and toggle helper normally restore their prior values. If you define them in YAML instead of the UI, an explicit initial value overrides that restoration. Restored state is not a guarantee that the very last change before sudden power loss reached storage.

The start branch requires an actual off-to-on change. The separate startup trigger checks the stored deadline instead of adding another ten minutes. The minute check also catches an overdue reminder after the automation is re-enabled or reloaded. Keep the automation enabled and use Reminder pending to start or cancel: switching the helper on while the automation is disabled will not write a new deadline. An invalid or unavailable deadline is skipped; it is not treated as already due.

The action sequence uses conditions inside its completion branch, so a check only continues while a valid reminder is pending and overdue. Queued mode processes runs in order. The notification is created before the toggle is cleared. Its fixed notification ID updates the same message if the action repeats; this is not an exactly-once delivery guarantee across crashes.

4. Read the timeline before using it

Suppose you start the saved-deadline reminder at 6 pm, making it due at 6:10. These are expected outcomes from the configuration, not measured restart times.

On a small screen, swipe the table sideways to read every column.

SituationExpected resultReason
Server restarts and returns at 6:07Still due at 6:10.Startup does not create a new ten-minute countdown.
Server returns at 6:12, with pending restored onCreates the overdue notification on a successful startup or later minute check.The saved time has passed; late reminders are allowed.
You cancel at 6:05, before completion startsNo new reminder at 6:10.The pending toggle is off even though the old deadline remains visible.
Automation is disabled at 6:09, then enabled at 6:12A subsequent minute check finds the overdue reminder.No completion event must be replayed.
Reminder completes; another minute passesNo new completion action.The successful run cleared pending.
Deadline is missing or unavailableNo reminder from that check.The guard requires a usable date/time and positive timestamp.

The recipe deliberately has no expiry limit: a reminder can arrive after a long outage. Do not replace the message with a lock, heater, garage-door or other consequential action and assume late execution is safe. For a daily household schedule, reconcile the desired state for the current time instead; the recent heating-schedule guide explains that different pattern.

5. Verify it without interrupting devices

  1. Shorten the demonstration. With Reminder pending off, temporarily change 600 to 30 and save. Switch the toggle on. Its due time should move about 30 seconds ahead. After that deadline, expect a notification inside Home Assistant and the toggle to turn off.
  2. Check cancellation. Dismiss the previous message, start again, then switch the toggle off before the deadline. Let the deadline and the next minute check pass. No new message should appear. Cancellation does not remove a message already created.
  3. Check missed processing. Start again and confirm the new due time. Disable only this new reminder automation before it is due. After the deadline passes, re-enable it and wait for a minute check. Expect the late reminder and pending to clear. This tests catch-up logic; it does not test a server restart.
  4. Restore the real duration. Put 600 back and leave pending off. During your next planned maintenance restart, try one deadline beyond the restart and, separately, a reminder that becomes overdue. Confirm the stored deadline and pending state actually restore on your installation.

Inspect Traces, the automation’s record of each run, if a step differs. Run actions does not test the triggers. In this recipe it also does not supply the start trigger ID, so it is not a substitute for switching the helper on. Keep these tests limited to the new reminder; no real sensor states or historical data need changing.

Software checks used Home Assistant 2026.9.2 to validate both complete automations and run their action logic in an isolated engine with simulated helper states, service calls and time. Fourteen cases covered starting, early and overdue checks, cancellation, invalid values and notification actions. These checks did not test live trigger scheduling, saved-state restoration from disk, a household restart, power-loss recovery or phone delivery.

If the result is unexpected

On a small screen, swipe the table sideways to read every column.

SymptomCheckNext step
The deadline does not change when you startExact helper IDs, enabled automation and start-branch trace.Switch pending off and then on. Confirm both date and time are enabled on Reminder due.
The deadline changes at startupWhich trigger appears in the trace; other routines writing the helper.Keep the explicit start ID and off-to-on trigger. Do not recalculate the deadline in the startup branch.
No overdue reminderPending state, valid deadline, clock/time zone and completion trace.Correct the helper configuration; repeat the harmless 30-second test. See the automation troubleshooting checklist for a missing run.
Message inside Home Assistant, nothing on the phoneThe example uses persistent_notification.create.That is expected. Phone push is a separate action; use the notification delivery guide if you add it.

For a repeating door warning rather than a single saved deadline, use the door-left-open reminder guide. That needs its own rules for closing the door, repeating and silencing alerts.

Tara’s home automation kit with coordinated local routines is the relevant planning path when you want start, stop and recovery behavior documented for the household.

Common questions

Does mode: restart make an automation survive a reboot?

No. That mode stops a running action sequence and starts a new run when another trigger arrives. It does not save a running delay across a Home Assistant restart.

Does the saved-deadline example pause while Home Assistant is off?

No. The deadline is a date and time, so time away still counts. If it is overdue and Reminder pending restores on, the next successful check creates the reminder. A pausable countdown is a different requirement.

Will this send a notification to my phone?

No. The example creates a notification inside the Home Assistant interface. Phone push needs a separate notification action and its delivery path must work. A reminder shown in Home Assistant does not prove a phone received it.