WooCommerce Plugin · Digital Downloads

Retroactive Download Access
for WooCommerce

When you add a new downloadable file to an existing WooCommerce product, past customers do not receive access automatically. This plugin fills that gap by granting the missing permissions to qualifying orders, with controls for scope, timing, expiry, limits, and notifications.

✓ Background Process ✓ On-the-Fly ✓ Per-Product Trigger ✓ Global Regeneration ✓ Expiry & Limit Controls ✓ Debug Logging

Two Sync Models

Choose how retroactive permissions are granted

Automatic Queueing

Background Process

Best when you want file changes picked up as products are updated. The plugin queues Action Scheduler jobs, processes eligible historical orders in batches, and keeps the admin workflow asynchronous.

  • Triggered by product save when new download IDs are detected
  • Batch size is configurable
  • Supports per-product and global regeneration
  • Optional force reset for rebuilding permissions from scratch

Just-in-Time Granting

On-the-Fly

Best when historical order volume is high and product files change often. Instead of scanning all past orders after every product update, the plugin checks only the visiting customer’s own orders on My Account > Downloads.

  • No background queue required
  • New files appear on the same page load after the scan runs
  • Per-user cache window reduces repeated scans
  • Useful when per-product order history is large

Built for Production

Operational controls beyond the basic backfill

Automatic File Detection

In background mode, the plugin compares download IDs before and after a product save and queues processing only when new files are detected.

Per-Product Trigger

A manual Regenerate Download Permissions button is available on the product edit screen when the background method is active.

Global Regeneration

Run a full browser-driven scan across all eligible orders when you need an initial backfill or a store-wide reconciliation.

Order Scope Filters

Limit eligibility by order status and date range so retroactive access only applies to the orders you actually want processed.

Expiry Handling

New permissions can use the product’s current expiry settings or preserve the expiry date from the customer’s original order permissions.

Download Limit Handling

Use the product’s current download limit or inherit the remaining limit from the first existing permission on that order.

Customer Notifications

Optionally send one email per order when new file permissions are granted, with a customizable subject and WooCommerce email template support.

Exclusion Control

Products can be explicitly excluded from retroactive access so automatic, per-product, and global runs skip them entirely.

Debug Logging

Debug mode writes batch, permission, and processing events to WooCommerce logs, which is useful when validating a store-specific rollout.

Background processing Queued product regeneration Product #811 – 1 new file detected – batch size 20 12 / 20 batches completed Eligible orders fetched status + date filters applied Missing permissions granted only files not already present are inserted Optional email sent one notification per order, after processing completes
Background Mode

Good fit when product updates should trigger the work automatically

The background method watches for new download IDs when a product is saved, then uses Action Scheduler to process historical orders in pages. That keeps the admin request short while still handling large order histories over multiple jobs.

  • Automatic queueing when a product gains new downloadable files
  • Manual regeneration for one product or the whole store
  • Configurable batch size for balancing speed and server load
  • Force Reset option for rebuilding permissions when counts or state need to be reset
  • Compatible with WooCommerce’s normal permission tables rather than a custom access layer
On-the-Fly Mode

Useful when you want the work distributed across customer visits

On-the-Fly skips the store-wide post-save scan. Instead, when a customer opens My Account > Downloads, the plugin checks only that user’s eligible orders, grants any missing files immediately, and refreshes the download list on the same request.

  • Per-user cache window reduces repeated scans
  • No scheduled queue required for new permissions
  • Scale is tied to the customer’s own order history, not total store volume
  • Helpful when a product has many historical orders and files change often
  • Customer sees new files right after the scan runs
My Account / Downloads Customer download check user_id 77 – cache expired – scan starting scan only this customer’s qualifying orders Order #1042 2 existing files · 1 missing file granted updated now Order #1098 already complete · no new insert needed no change cache timestamp updated after scan

Simple Setup

Simply activate the plugin. The defaults will work.

If you want more control, these are the three main things to review.

01

Choose a Sync Method

The plugin works with the default Background Process mode. Switch to On-the-Fly only if you want permissions checked when customers open their downloads page.

02

Review the Defaults

Completed and Processing orders work by default. You can optionally adjust the date range, expiry, download limits, and customer email notifications.

03

Add New Files

When you add new downloadable files to an existing product, the plugin grants the missing permissions automatically. You can also run a manual regeneration if needed.

Technical Details

Implementation details that matter in practice

WooCommerce

6.0+

PHP

7.4+

Plugin Version

1.2.0

Sync Methods

Background + On-the-Fly

Background Engine

Action Scheduler

Default Batch Size

20 orders

Default Cache

60 minutes per user

Default Statuses

Completed + Processing

Scope Filters

Status + Date Range

Permission Storage

WooCommerce tables

Notifications

Optional, one email per order

Logging

WooCommerce Status Logs

Need a cleaner way to grant newly added files to old orders?

Read the documentation for the full behavior and setup details, or get in touch if you want to check whether the plugin fits your store’s order volume and download workflow.

Open Documentation →