Title: Document Expiry Reminder
Author: sathsarawj
Published: <strong>July 21, 2026</strong>
Last modified: July 21, 2026

---

Search plugins

![](https://s.w.org/plugins/geopattern-icon/document-expiry-reminder.svg)

# Document Expiry Reminder

 By [sathsarawj](https://profiles.wordpress.org/sathsarawj/)

[Download](https://downloads.wordpress.org/plugin/document-expiry-reminder.0.1.0.zip)

 * [Details](https://wordpress.org/plugins/document-expiry-reminder/#description)
 * [Reviews](https://wordpress.org/plugins/document-expiry-reminder/#reviews)
 *  [Installation](https://wordpress.org/plugins/document-expiry-reminder/#installation)
 * [Development](https://wordpress.org/plugins/document-expiry-reminder/#developers)

 [Support](https://wordpress.org/support/plugin/document-expiry-reminder/)

## Description

Document Expiry Reminder helps you keep track of documents that expire —
 licences,
certificates, contracts, permits, insurance policies and similar records — and reminds
the right people before they lapse.

This plugin assists with document-expiry tracking and reminders. It does
 not provide
legal advice or guarantee regulatory compliance.

#### Major features

 * **Document tracking** — title, reference number, category, owner
    (a WordPress
   user), issue date, expiry date, workflow state, and notes, with a calculated 
   status (Active, Expiring Soon, Critical, Expired, or No Expiry) that recalculates
   automatically as dates approach.
 * **Automated reminders** — a daily scan sends email reminders on
    configurable
   days-before/after-expiry offsets, to configurable recipients (site administrator,
   document owner, or a custom email address), either globally or overridden per
   document.
 * **Renewal history** — renewing a document records the previous dates
    and file
   as an immutable history entry; nothing is ever overwritten or lost.
 * **Secure file uploads** — attach a scanned copy of a document, stored
    outside
   the web-servable uploads path and served only to authorized users.
 * **CSV import and export** — bulk-load documents from a spreadsheet, or
    export
   the current list, with a preview-before-import safety step.
 * **Role-based access** — an Administrator role and a Document Manager
    role (everything
   except plugin settings), built from nine independent capabilities so access can
   be tuned further if needed.
 * **Notification history** — every reminder ever sent, failed, or
    skipped is recorded
   and reviewable, with a manual retry action for failures.
 * **Privacy-aware** — integrates with WordPress’s built-in personal-data
    export
   and erasure tools.
 * **Accessible** — audited against WCAG 2.2 AA (see
    docs/ACCESSIBILITY.md in the
   plugin’s source repository).
 * Deactivating the plugin never deletes your data. Uninstalling it only
    deletes
   data if you explicitly opt in beforehand.

#### Who this is for

Anyone tracking documents with a hard expiry date and a real cost of
 missing it:
compliance certificates, professional licences, insurance policies, contracts, permits,
domain/SSL-adjacent internal records, or similar. It is a WordPress-native alternative
to a spreadsheet with a manually-checked “renew by” column.

### Configuration

All configuration lives on Document Expiry  Settings:

 * **Expiring soon days / Critical days** — how many days before expiry a
    document
   is considered “expiring soon” or “critical”, for the calculated status shown 
   throughout the admin.
 * **Reminder processing time** — the time of day (in your site’s
    configured timezone)
   the daily reminder scan runs.
 * **Batch size** — the maximum number of reminder emails sent per
    processing run,
   to bound how long any one run takes.
 * **Global reminder rules** — one or more “N days before/after expiry,
    send to
   X” rules that apply to every document left on the default “inherit” reminder 
   mode. Individual documents can instead be given their own document-specific rules,
   or have reminders disabled entirely.
 * **File uploads** — enable/disable, maximum size, and allowed file
    extensions.
 * **Email sender name / reply-to** — used on outgoing reminder emails.
 * **Delete data on uninstall** — off by default; see “Privacy” below.

All dates entered anywhere in the plugin are interpreted, calculated,
 and displayed
in your site’s configured timezone (Settings  General  Timezone in WordPress core),
not UTC and not the server’s local time.

See `docs/ADMIN-GUIDE.md` in the plugin’s source repository for a full
 walkthrough
of every screen.

### Privacy

This plugin stores documents, categories, reminder rules, renewal
 history, uploaded
files, and notification records in its own database tables. The only personal data
involved is the association between a document and its “owner” (a WordPress user)
and the recipient email addresses reminder notifications were sent to.

 * It registers `wp_add_privacy_policy_content()` suggested policy text.
 * It supports WordPress’s built-in “Export Personal Data” tool for a
    document 
   owner’s associated documents.
 * It supports WordPress’s built-in “Erase Personal Data” tool: erasing a
    user 
   anonymizes their `owner_user_id` reference on documents (the documents themselves,
   and their history, are never deleted by an erasure request — only the personal-
   data linkage is removed).
 * It makes no external network calls and uses no third-party analytics,
    advertising,
   or tracking service of any kind.
 * Deactivating never deletes data. Uninstalling only deletes data if you
    have 
   explicitly opted in via Settings beforehand.

### Support

Please use the plugin’s WordPress.org support forum for questions.
 Include your
WordPress version, PHP version, and (if reporting a bug) the steps to reproduce 
it and any relevant error messages — never include real document contents, email
addresses, or other personal data in a public support request.

### License

This plugin is licensed under the GPLv2 (or later). See
 https://www.gnu.org/licenses/
gpl-2.0.html for the full license text.

## Installation

 1. Upload the plugin to the `/wp-content/plugins/` directory, or install
     it through
    the WordPress “Add New Plugin” screen (Plugins  Add New  Upload Plugin).
 2. Activate the plugin through the “Plugins” screen in WordPress.
     Activation creates
    the plugin’s database tables and the “Document Manager” role; it never modifies
    any other plugin’s or WordPress core’s data.
 3. A new “Document Expiry” menu appears in the admin sidebar. Start on
     its Settings
    screen to configure reminder timing, thresholds, and recipients (see “Configuration”
    below), then add your first document from Document Expiry  Add New.

#### Requirements

 * WordPress 6.5 or later.
 * PHP 8.1 or later.
 * Outbound email configured on the server (or an SMTP plugin) for
    reminders to
   actually leave the server — see “Email delivery” below.
 * If using file uploads: a hosting environment where a
    non-web-servable directory
   can be created under `wp-content/uploads/` — see “Secure upload requirements”
   below.

## FAQ

### Does this plugin guarantee legal or regulatory compliance?

No. This plugin assists with document-expiry tracking and reminders. It
 does not
provide legal advice or guarantee regulatory compliance. You remain responsible 
for verifying your own compliance obligations.

### Does deactivating the plugin delete my data?

No. Deactivation never deletes data. Data is only removed on uninstall
 (deleting
the plugin after deactivating it), and only if you have explicitly enabled “Delete
data on uninstall” in Settings beforehand. By default, uninstalling also preserves
all data.

### Does a “Sent” notification mean the email was actually delivered?

No. “Sent” means WordPress’s `wp_mail()` function accepted the message
 for processing
and reported success — it does not mean the message was delivered to, or arrived
in, the recipient’s inbox. Actual delivery depends on your server’s mail transport,
DNS/SPF/DKIM configuration, and the receiving mail server, none of which this plugin
controls or can verify. If reminders are not arriving, check your site’s outbound-
email configuration (an SMTP plugin is strongly recommended over PHP’s default mail()
function) and the Notifications screen for recorded failures.

### Why didn’t my reminder send exactly on schedule?

By default, WordPress uses WP-Cron, which only fires on a site visit —
 on a low-
traffic site, a scheduled event can run late. For reliable timing, configure a real
system cron job to trigger WordPress’s scheduler instead of relying on site traffic.
See `docs/CRON-SETUP.md` in the plugin’s source repository for exact instructions.
The Notifications screen shows a warning if scheduling looks unhealthy or stale.

### What are the server requirements for secure file uploads?

Uploaded files are stored in a dedicated directory
 (`wp-content/uploads/document-
expiry-reminder-private/`) that must not be directly reachable by URL — files are
only ever served through the plugin’s own authenticated download handler. The plugin
attempts to verify this automatically and warns in the admin if it cannot confirm
protection. On Apache, this typically requires directory listing and direct access
to be disabled (an `.htaccess` file, generated automatically, handles this in most
configurations); on Nginx, a matching server-block rule needs to be added manually.
See docs/FILE-STORAGE-SETUP.md in the plugin’s source repository for exact configuration
examples.

### Where do I report a bug or request a feature?

Through the plugin’s support forum on WordPress.org, or the issue
 tracker of its
source repository if you installed it from source control.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Document Expiry Reminder” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ sathsarawj ](https://profiles.wordpress.org/sathsarawj/)

[Translate “Document Expiry Reminder” into your language.](https://translate.wordpress.org/projects/wp-plugins/document-expiry-reminder)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/document-expiry-reminder/),
check out the [SVN repository](https://plugins.svn.wordpress.org/document-expiry-reminder/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/document-expiry-reminder/)
by [RSS](https://plugins.trac.wordpress.org/log/document-expiry-reminder/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.1.0

Initial release candidate. See CHANGELOG.md in the plugin’s source
 repository for
the full, itemized list of what this version includes.

## Meta

 *  Version **0.1.0**
 *  Last updated **24 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.0.2**
 *  PHP version ** 8.1 or higher **
 * Tags
 * [compliance](https://wordpress.org/plugins/tags/compliance/)[documents](https://wordpress.org/plugins/tags/documents/)
   [expiry](https://wordpress.org/plugins/tags/expiry/)[Notifications](https://wordpress.org/plugins/tags/notifications/)
   [reminders](https://wordpress.org/plugins/tags/reminders/)
 *  [Advanced View](https://wordpress.org/plugins/document-expiry-reminder/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/document-expiry-reminder/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/document-expiry-reminder/reviews/)

## Contributors

 *   [ sathsarawj ](https://profiles.wordpress.org/sathsarawj/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/document-expiry-reminder/)