ContentTimer — Content Expiry & Automation Wordpress Plugin - Rating, Reviews, Demo & Download
Plugin Description
ContentTimer schedules the end of a piece of content as easily as WordPress schedules its beginning.
Set an expiry date on a post, choose what should happen when that moment arrives, and ContentTimer takes care of the rest — then records exactly what it did.
Set it once. ContentTimer handles it automatically.
What it does
- Give any post, page or public custom post type an expiry date and time
- Choose the action: move to draft, make private, move to trash, unpublish, or redirect
- Build reusable rules that apply to whole groups of content
- Watch everything from one dashboard, and check the log for what happened
- Run an expiry check by hand at any time
A worked example
A “Summer Sale 2026” landing page should stop being reachable at midnight on 30 September.
- Open the page, set the expiry date and time in the ContentTimer panel
- Choose the Redirect action and enter
/shop/ - Save
At midnight, ContentTimer redirects the page to /shop/ with a 301 and writes a log entry recording the result. Nothing else in your site changes.
Expiry actions included
- Move to Draft — back to Draft, fully editable
- Make Private — stays published, visible only to people who can read private posts
- Move to Trash — recoverable; nothing is deleted permanently
- Unpublish — removed from the public site and marked Pending Review
- Redirect — 301, 302 or 307 to another page or an external URL
Rules
A rule applies an action to everything that matches it, so you do not have to touch each post. A rule can fire on a fixed date and time, or a set number of days after each item was published — useful for job listings, event pages and time-limited offers.
Conditions narrow a rule down by post type, category or tag, author, or post status.
Built to stay out of the way
- No processing on front-end page loads
- Work is batched, so a site with thousands of posts stays responsive
- All timestamps respect the site timezone, including across daylight saving changes
- Duplicate cron runs cannot apply a destructive action twice
Free and Pro
Everything described above is in the free plugin, with no artificial limits — unlimited rules included.
ContentTimer Pro is a separate add-on that adds four more expiry actions — 410 Gone, remove from search (noindex), replace the content with a notice, and change to any custom post status — plus an email warning before content expires and a summary email after each run. The free plugin is fully functional without it and contains no hidden or disabled premium code: the Pro capabilities listed in Settings are described as unavailable because they genuinely are not present in this download.
A licence is entered under ContentTimer Settings License. If the licence server cannot be reached, Pro keeps working for 14 days while the plugin retries, so an outage never costs a paying customer the features they bought. An expired or deactivated licence takes effect immediately.
Privacy
ContentTimer stores expiry settings in post meta, rules and log entries in two database tables, and its settings in a WordPress option. Logs record the title, type, action and result of each expiry, so an administrator can see what happened. No visitor data and no personal data are collected.
External services
ContentTimer makes no external requests at all unless you enter a ContentTimer Pro licence key.
If you do, the plugin contacts the Lemon Squeezy licence API (api.lemonsqueezy.com) when you press Activate License, Re-check licence or Deactivate License, and once a day afterwards to confirm the licence is still valid. Only two things are sent: the licence key you entered, and this site’s domain name so the activation can be released later. No content and no personal data are transmitted. Removing the licence key stops all external requests.
If you then press Download ContentTimer Pro, the plugin asks the ContentTimer delivery service (update.contenttimer.com) to authorise that download. It is sent your licence key, its activation id, this site’s domain name and the ContentTimer version you are running, and it replies with a temporary download link your browser then follows. The plugin never downloads or installs the add-on for you — you install the file yourself. Nothing is sent to this service unless you press that button, and the ContentTimer Pro add-on, if you install it, checks the same service for its own updates.
Lemon Squeezy is the payment provider. Checkout happens entirely on their site; ContentTimer never sees or stores card details. Pressing an Upgrade to Pro button simply opens a Lemon Squeezy checkout page in a new tab.
Lemon Squeezy terms: https://www.lemonsqueezy.com/terms — privacy policy: https://www.lemonsqueezy.com/privacy
What is stored
The licence record holds only what the licence needs: the key, its status, expiry date, activation instance id, activation counts, product and plan names, and the time of the last check. Customer names, email addresses and order details are deliberately not stored.
Optional webhook
Site owners who run their own Lemon Squeezy store may configure a webhook so subscription changes are picked up promptly. The endpoint is disabled unless a signing secret is present in wp-config.php, and every request must carry a valid HMAC-SHA256 signature. A webhook is never treated as authoritative on its own: it only prompts ContentTimer to re-check the licence through the API.
Screenshots
The ContentTimer dashboard: content counters, recent expiry activity and quick actions.
The Content screen: everything ContentTimer manages, filterable by expiry state.
Adding an expiry rule with conditions, an action and a schedule.
The expiry log, showing what ran, when, and whether it succeeded.
Settings, including which content types ContentTimer manages.

