Skip to content

Allow one-time or configurable cadence for expiration alerts #19677

Open

Description

@Stibila

Problem

Expiration alerts currently behave like a daily digest of everything inside the configured alert window.

For example, with an expiration threshold of 30 days, an asset whose warranty expires in 7 days is included in the email today, then again tomorrow, then again the next day, and so on until it expires.

This creates a lot of duplicate email for the same asset and can lead to alert fatigue.

The current behavior appears to come from:

  • snipeit:expiring-alerts using alert_interval as a look-ahead window
  • the command being scheduled daily
  • no per-asset/per-expiration-event state indicating that a notification was already sent

Desired behavior

Please make the notification cadence configurable.

At minimum, it would be useful to support a one-time alert exactly N days before expiration, for example:

  • notify once 30 days before
  • notify once 7 days before
  • notify once 1 day before

Alternatively, allow a configurable set of reminder points such as 30,14,7,1 days before expiration.

Another option would be a setting such as:

  • Once per expiration event
  • Daily digest
  • Weekly digest
  • Custom reminder days

Why this would help

The current daily behavior makes a 30-day threshold potentially generate 30 emails containing the same asset. For small installations this is noisy; for larger installations it can make expiration notifications much easier to ignore.

A one-time or milestone-based reminder option would preserve the usefulness of the feature without repeated duplicate notifications.

Current implementation references

The current implementation in app/Console/Commands/SendExpirationAlerts.php selects assets using the configured alert_interval, and app/Console/Kernel.php schedules snipeit:expiring-alerts daily.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions