Filtering¶
Every notification passes through a chain of filters before dispatch. All filters must pass for a notification to be sent. The chain short-circuits on the first rejection.
Filter chain¶
1. Severity¶
Compares the review's severity against the profile's requirement.
| Setting | Behavior |
|---|---|
| Alert | Only alert-severity reviews pass |
| Detection | Only detection-severity reviews pass |
| Any | Both alert and detection pass |
By default, Frigate classifies person and car objects as alerts; all other tracked objects (and audio labels) are detections. This is configurable in Frigate's review config.
2. Object type¶
Checks whether the review contains any object types the profile cares about.
- If you configured specific objects (e.g., person, car), at least one must be present
- An empty object list passes all object types
- The
-verifiedsuffix is stripped before comparison --person-verifiedmatches apersonfilter
3. Sub-label (recognition)¶
Filters notifications based on Frigate's face recognition and license plate recognition sub-labels.
| Mode | Behavior |
|---|---|
| Disabled (default) | No sub-label filtering -- all reviews pass |
| Only recognized | Hold notifications until a -verified object is present. Optionally restrict to specific identities. |
| Exclude specific | Allow all notifications, but suppress once a selected identity is confirmed |
Only recognized mode:
- Checks review objects for the
-verifiedsuffix (e.g.,person-verified) to confirm recognition has occurred - If an include list is set, at least one sub-label must match (case-insensitive)
- If the include list is empty, any
-verifiedobject is sufficient - This enables deferred-initial behavior: the
newevent may be rejected (no recognition yet), and the firstupdatewith a verified identity fires as the initial notification
Exclude specific mode:
- Passes all reviews by default
- If the review's sub-labels contain any excluded identity (case-insensitive), the notification is suppressed
- Useful for "stop alerting once you know it's a family member's car"
Scope
The config flow discovers identities from Frigate's face recognition and LPR sensors. The runtime filter operates on all sub-labels regardless of source, but identities from other sources are not discoverable in the config flow UI.
Reload rule
Changes to Frigate's recognition setup (adding new faces, known plates) require a Frigate integration reload before they appear in this integration's config flow.
4. Zone¶
Validates the review's zones against the profile's required zones. If no required zones are configured, all zones pass.
Any zone (default)¶
At least one required zone must appear in the review.
| Required | Review | Result |
|---|---|---|
| driveway, garage | driveway, yard | Pass -- driveway matches |
| driveway, garage | yard | Fail -- no overlap |
All zones¶
Every required zone must appear in the review.
| Required | Review | Result |
|---|---|---|
| driveway, garage | driveway, garage, yard | Pass -- both present |
| driveway, garage | driveway | Fail -- garage missing |
Ordered¶
Zones must appear in sequence, anchored by the first required zone.
| Required | Review | Result |
|---|---|---|
| A, B | A, C, B | Pass -- A first, B later |
| A, B | B, A | Fail -- B appears before A |
| A, B | A, C | Fail -- B never appears |
Multi-camera profiles
Zone filtering is skipped entirely for multi-camera profiles. The zone filter fields are hidden in the config flow. A future release may support zone filtering for multi-camera profiles where all selected cameras share the same zone names.
5. Time filter¶
Checks the current time against a configured time window.
| Mode | Behavior |
|---|---|
| Notify only during this window | Notifications only fire inside the window |
| Do not notify during this window | Notifications are suppressed inside the window |
Overnight ranges are supported (e.g., 22:00--06:00 wraps around midnight).
Time filter supports 3-mode inheritance: Inherit shared time filter, Use profile time filter, or No time filter.
6. State filter¶
Checks whether an external entity is in one of the allowed states.
- If no state entity is configured, this filter is skipped
- If the entity is configured but not found in Home Assistant, its state resolves to
unavailableand is checked against the allowed states list - Common use cases: only notify when alarm is
armed_away, suppress when a focus mode entity isdo_not_disturb
Supports 3-mode inheritance: Inherit shared state filter, Use profile state filter, or No state filter.
7. Presence filter¶
Checks whether any configured person, device_tracker, or group entity is home. If any has state home, the notification is suppressed.
Presence is stateless -- it is evaluated at every lifecycle phase (initial, update, end, genai). If you arrive home mid-review, later phases for that review will be suppressed even though the initial notification was sent while you were away.
Supports 3-mode inheritance: Inherit shared presence filter, Use profile presence filter, or Ignore presence for this profile.
8. Silence¶
Checks whether the profile is currently silenced via its "Silenced Until" datetime entity. If the current time is before the silenced-until timestamp, the notification is blocked. States of unknown or unavailable are treated as not silenced. See Notification Lifecycle -- Silence.
9. Switch entity¶
Checks the profile's enabled switch. Only an explicit off state blocks notifications -- any other state (including unavailable or unknown) passes. The integration looks up the switch via the entity registry using its stable unique ID, so renaming the entity in the UI has no effect.
10. Guard entity¶
Checks an external guard entity (input_boolean, switch, or binary_sensor) that gates notifications. Only an explicit off state blocks -- any other state passes.
Supports 3-mode inheritance: Inherit shared guard, Use profile guard, or No guard entity.
11. Cooldown¶
Only evaluated for new (initial) lifecycle events. If less than cooldown_seconds has elapsed since the last notification for this (profile, camera) pair, the new event is rejected. In-flight reviews bypass cooldown for update/end/genai events. See Notification Lifecycle -- Cooldown.
Inheritance pattern¶
Several filters support a 3-mode inheritance pattern configured per-profile:
| Mode | Behavior |
|---|---|
| Inherit | Use the shared value from Global Defaults |
| Custom / Use profile | Use a profile-specific value |
| Disabled / No filter | Skip this filter entirely |
Filters and their supported modes:
| Filter | Modes |
|---|---|
| Time filter | Inherit shared time filter / Use profile time filter / No time filter |
| State filter | Inherit shared state filter / Use profile state filter / No state filter |
| Guard entity | Inherit shared guard / Use profile guard / No guard entity |
| Presence | Inherit shared presence filter / Use profile presence filter / Ignore presence for this profile |
Debugging filters¶
If a notification is not sending, see Troubleshooting > Reading logs for how to enable debug logging and interpret filter rejection messages.