BLACK FRIDAY
Save 59% on PageForge Annual $191/year $485/year
Claim 59% Off →
ContentTimer — Content Expiry & Automation icon
Actively maintained Tested with WP 7.1 #2 in content expiry

ContentTimer — Content Expiry & Automation

Automate when your WordPress content starts, expires, and changes. Expire posts, pages and custom post types automatically.

Active installs<10New
Downloads · 30d198• 0% vs prev. 30d
Rating—0 reviews
Health score64/100Good
All-time downloads195Since Sep 2026
Support resolved—No recent threads
RequiresWP 5.8PHP 7.4+
Downloads · 7d29▼ -59.7% week over week
Our verdict

Solid choice

ContentTimer is a solid plugin choice in 2026, with a few things worth checking first. Was last updated 1 week ago, and scores 64/100 on our health check.

  • Actively developed — last update 1 week ago
  • Tested with the latest WordPress (7.1)
  • Small user base (<10 active installs)
  • Very few reviews so far

How does it stack up?

Side-by-side on installs, updates, ratings & support

Daily downloads

112334Sep 22Oct 5Oct 19
Yesterday5
Daily average (1y)7
Peak day46Oct 10, 2026
Last 12 months198

Download spikes usually follow a new release — each site that auto-updates counts as a download.

Rankings

Where ContentTimer stands today

WordPress.org search rankings

Live position in the plugin search, top 100
KeywordPositionCompeting pluginsCategory
content expiry #96 1,337 Best content expiry plugins →
post expiry >100 918 Best post expiry plugins →
redirect >100 7,357 Best redirect plugins →
scheduled >100 4,704 Best scheduled plugins →
unpublish #47 182 Best unpublish plugins →

About ContentTimer

From the official readme · v1.2.2

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.

  1. Open the page, set the expiry date and time in the ContentTimer panel
  2. Choose the Redirect action and enter /shop/
  3. 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.

Installation

  1. Upload the contenttimer folder to /wp-content/plugins/, or install through Plugins → Add New
  2. Activate ContentTimer through the Plugins screen
  3. Open ContentTimer → Settings and choose which content types to manage
  4. Set an expiry on a post, or create a rule under ContentTimer → Rules

No further configuration is required. Defaults are sensible for a typical site.

Frequently asked questions

Does ContentTimer delete my content?

No. The Move to Trash action uses the normal WordPress trash, from which content can be restored. Nothing is ever deleted permanently, and uninstalling the plugin never touches your posts or pages.

What happens if WP-Cron does not run?

Expiry runs on the next request that triggers WordPress cron. If DISABLE_WP_CRON is set on your site, ContentTimer says so on its dashboard, and you can either point a real server cron at wp-cron.php or use the Run Expiry Check button.

Can the same action run twice by mistake?

No. Each run takes a lock, each item’s state is re-read immediately before the action runs, and every action checks whether the change is already in place. A repeated run records a “skipped” log entry instead of acting again.

I run my own store. How do I configure checkout and webhooks?

Add the relevant constants to wp-config.php. None are required for the free plugin to work: define( 'CONTENTTIMER_LS_STORE', 'yourstore' ); // yourstore.lemonsqueezy.com define( 'CONTENTTIMER_LS_VARIANT_MONTHLY', '123456' ); define( 'CONTENTTIMER_LS_VARIANT_YEARLY', '123457' ); define( 'CONTENTTIMER_LS_WEBHOOK_SECRET', 'your-signing-secret' ); define( 'CONTENTTIMER_LS_ENVIRONMENT', 'test' ); // omit for live The webhook URL is shown on the License tab once a signing secret is present.

Which timezone are the dates in?

The timezone configured in Settings → General. Dates are stored in UTC internally and converted for display, so daylight saving changes do not shift your schedules.

Where do redirects point?

Anywhere you like: a path on your own site such as /shop/, or a full https:// address. Destinations using any other scheme are rejected, and a destination that points back at the same content is refused so no redirect loop can be created.

Does it work with custom post types?

Yes. Every public custom post type registered by your theme or another plugin can be enabled from ContentTimer → Settings.

Will it slow down my site?

No. ContentTimer does no work on normal front-end requests. The only front-end code is the redirect check, which reads post meta WordPress has already loaded and adds no database query.

Changelog

First release of ContentTimer.

1.2.2

  • The Plugins screen now lists the author as CT, linking to the ContentTimer website.
  • The plugin icon and the admin header mark now use the original ContentTimer logo artwork.

1.2.1

  • Fix: the Schedule expiry dialog rendered without the plugin palette, so the Save expiry button showed white text on a white background and the toggle stayed grey when switched on.
  • Fix: fields inside the Schedule expiry dialog now size the same way as the rest of the admin screens.

1.2.0

  • New: once a licence is active, the License tab offers an authorised download of the ContentTimer Pro add-on, and shows its installed version and status once it is present.
  • The free plugin never downloads or installs executable code: the download is a link you choose to follow, and the package is installed by you in the usual way.

1.1.0

  • New: licensing foundation for ContentTimer Pro — activate, re-check and deactivate a Lemon Squeezy licence from Settings → License.
  • New: centralised feature gate, so Pro access is decided in one place and enforced server-side rather than by hiding controls.
  • New: Upgrade to Pro checkout links and a Manage Subscription link, both driven by configuration rather than hard-coded ids.
  • New: optional Lemon Squeezy webhook endpoint with signature verification and duplicate protection.
  • New: a 14-day grace period so a licence server outage does not interrupt a paying customer.
  • Free functionality is unchanged. No existing feature has been moved behind a licence.

1.0.4

  • Fixed: paging past the end of a list left an empty screen with no way back. Each list now offers a link to the first page.
  • Fixed: the daily log-cleanup event was not restored if it went missing while automatic expiry was switched off.
  • Fixed: uninstalling left the guided tour’s per-user flag behind.
  • Housekeeping: readme now records the WordPress version actually tested against.

1.0.3

  • Fixed: re-scheduling content that had previously been redirected left the old redirect in place, so the page stayed unreachable. Scheduling a new expiry now lifts it.
  • Fixed: toolbar controls on the Content and Logs screens wrapped onto separate lines instead of sitting inline.
  • Fixed: the three condition fields on the rule form were misaligned, and their labels are now proper accessible names rather than hidden markup.
  • Fixed: fields on the License tab ran together with no spacing.
  • Fixed: the header described actions that are only in the Pro add-on.
  • Added: the tables are recreated automatically if they go missing while the schema version still says they exist.
  • Changed: log retention deletes in bounded passes rather than one large query.
  • Polish: clearer Already Expired icon, compact upgrade card on the dashboard, Posts and Pages listed first among content types, schedule fields grouped under the option they belong to.

Full changelog on WordPress.org →

Screenshots

The ContentTimer dashboard: content counters, recent expiry activity and quick actions.
The ContentTimer dashboard: content counters, recent expiry activity and quick actions.
The Content screen: everything ContentTimer manages, filterable by expiry state.
The Content screen: everything ContentTimer manages, filterable by expiry state.
Adding an expiry rule with conditions, an action and a schedule.
Adding an expiry rule with conditions, an action and a schedule.
The expiry log, showing what ran, when, and whether it succeeded.
The expiry log, showing what ran, when, and whether it succeeded.
Settings, including which content types ContentTimer manages.
Settings, including which content types ContentTimer manages.

For developers

Is this your plugin? Show off the numbers.

Add a live badge to your site, docs or GitHub README. It updates on its own — no account needed.

Active installs badge Rating badge Health score badge

Best ContentTimer alternatives

All content expiry plugins →

FAQ

ContentTimer: quick answers

Straight answers, pulled from live WordPress.org data.

Live data from WordPress.org · checked Oct 20, 2026

Is ContentTimer free?

Yes. ContentTimer is free to download and use from the official WordPress.org plugin directory.

Is ContentTimer safe to use in 2026?

ContentTimer is a solid plugin choice in 2026, with a few things worth checking first. Was last updated 1 week ago, and scores 64/100 on our health check.

How many websites use ContentTimer?

ContentTimer is active on <10 WordPress websites and has been downloaded 195 times since it launched in September 2026. It was downloaded 198 times in the last 30 days.

Does ContentTimer work with WordPress 7.1?

Yes. The developer has tested ContentTimer up to WordPress 7.1.3, the latest release. It requires WordPress 5.8 or newer.

What PHP version does ContentTimer need?

ContentTimer requires PHP 7.4 or higher. Most hosts run PHP 8.x today, so it works on any modern WordPress hosting.

When was ContentTimer last updated?

The latest version, 1.2.2, was released on October 10, 2026 (1 week ago).

Who makes ContentTimer?

ContentTimer is developed and maintained by CT.

What are the best alternatives to ContentTimer?

The most popular alternatives to ContentTimer are LukaCodes Content Expiry Sh… (<10 installs), Teydea Content Expiry (<10 installs) and Raptor Scheduled Content Ex… (<10 installs).

Powered by PageForge

Want thousands of pages that rank like these? Build them in an afternoon.

This directory runs on the same engine as PageForge. Turn any spreadsheet, CSV or API into thousands of fast, SEO-ready WordPress pages — with schema, internal links and AI-written copy baked in.

  • CSV, Google Sheets & API data sources
  • AI content, schema & internal links per page
  • Works with Elementor, Gutenberg, Yoast & Rank Math
  • Free on WordPress.org — no credit card
Sarah is here to help!
Hi there! 👋 Need help finding what you're looking for?
Sarah
Sarah
Online & Ready to Help
Hi there! 👋 Need help finding what you're looking for?

We'll use this to continue our conversation

Just now ✓ Verified

Join 500+ SEO Pros Scaling Their Strategy

Get exclusive programmatic SEO tactics, AI content workflows, and the latest PageForge updates delivered straight to your inbox. Stay ahead of the algorithm.

We care about your data in our privacy policy.