Plugin Page

WooCommerce – Retroactive Download Access

View Plugin

Admin Settings

Accessing Settings

All plugin settings are at WP-Admin > Retroactive Downloads (admin.php?page=wcrda-settings). Access requires the manage_woocommerce capability (Shop Manager or Administrator role).

Settings Tabs

The settings panel is divided into seven tabs:

TabPurpose
LicenseLicense key activation and status — see License Activation
GeneralDebug mode and logging
Sync MethodBackground Process or On-the-Fly, and method-specific options
ScopeEligible order statuses and date range
BehaviorDownload expiry, limits, and customer email notifications
ToolsGlobal permission regeneration
SupportLinks to documentation and support channels

Settings Storage

Each setting is stored as an individual WordPress option with the wcrda_ prefix. There is no single serialized settings array — each key can be read independently with get_option(). See Developer Reference for the full list of option keys and their defaults.

General

The General tab contains a single setting for enabling debug output.


Debug Mode

Option key: wcrda_debug_mode Default: Disabled

When enabled, the plugin writes detailed log entries for every permission check, grant, and batch operation. Logs are written to the WooCommerce log system and can be viewed at WooCommerce > Status > Logs — look for entries prefixed with wcrda.

Log entries include:

  • File change detection results (which download IDs were added or unchanged)
  • Each order evaluated during a batch, with its pass/skip reason
  • Each permission granted, with product ID, order ID, and download ID
  • Batch pagination (start and end of each page)
  • Global regeneration progress

Note: Debug logging adds database writes on every permission operation. Enable it for troubleshooting, then disable it in production to avoid unnecessary overhead.


Sync Method

The Sync Method tab controls how and when the plugin grants download permissions to past customers.


Sync Method

Option key: wcrda_sync_method Values: async (Background Process) | fly (On-the-Fly) Default: async

Select the method that best fits your store. See Sync Methods Overview for a comparison.


Background Process Options

These settings apply only when Background Process is selected.

Batch Size

Option key: wcrda_batch_size Default: 20

The number of orders processed in a single Action Scheduler job. Larger values complete regeneration faster but may increase memory usage per job. Lower values are safer on hosts with strict resource limits.

Force Reset Permissions

Option key: wcrda_force_reset Default: Disabled

When enabled, the plugin deletes all existing download permissions for a product+order combination before re-creating them. This guarantees a clean state but removes any manually customized permissions (custom expiry dates, remaining download counts set directly in WooCommerce).

Warning: Force Reset permanently deletes existing permission records. Use only when you need to resolve corrupted or duplicate permissions.


On-the-Fly Options

These settings apply only when On-the-Fly is selected.

Disable Cache

Option key: wcrda_disable_cache Default: Disabled

When disabled (default), the plugin scans each user’s orders at most once per cache window. When enabled, a fresh scan runs on every visit to the Downloads page. Useful during testing, but not recommended for production as it adds a database scan to every Downloads page load.

Cache Duration

Option key: wcrda_cache_duration Default: 60 (minutes)

How long (in minutes) to wait before rescanning a user’s orders. After the window expires, the next visit to My Account > Downloads triggers a new scan. The per-user throttle is stored in user meta (_wcrda_last_scan).


Scope

The Scope tab defines which past orders are eligible when the plugin scans for missing permissions. Orders that do not match the scope are skipped entirely.


Eligible Order Statuses

Option key: wcrda_order_statuses Default: wc-completed, wc-processing

Select one or more WooCommerce order statuses. Only orders currently in one of the selected statuses are processed. Statuses are stored with the wc- prefix (e.g. wc-completed).

Examples:

  • Completed only — restrict to fully fulfilled orders. Safe default for most stores.
  • Completed + Processing — include orders still awaiting fulfillment. Useful for digital-only stores where processing and completed are both valid paid states.
  • Custom statuses — any registered WooCommerce order status appears in the list.

Note: Changing this setting affects future regeneration runs. Orders previously skipped because their status was not selected will be included on the next run if their status is now selected.


Date Range

Orders From

Option key: wcrda_date_from Format: YYYY-MM-DD Default: (blank — no lower limit)

Only orders placed on or after this date are eligible. Leave blank to include all orders regardless of age.

Orders To

Option key: wcrda_date_to Format: YYYY-MM-DD Default: (blank — no upper limit)

Only orders placed on or before this date are eligible. Leave blank to include orders up to today.

Example use cases:

  • Set Orders From to the date you launched a new product version to limit the backfill to recent purchasers.
  • Set both Orders From and Orders To to target a specific promotion window.
  • Leave both blank (default) to process all qualifying orders regardless of date.

Behavior

The Behavior tab controls how newly granted permissions are configured and whether customers are notified.


Download Expiry

Option key: wcrda_expiry_handling Values: current | preserve Default: current

Determines the expiry date applied to newly granted permissions.

ValueBehavior
currentThe new permission uses the product’s current expiry setting (same as a fresh purchase today).
preserveThe new permission copies the expiry date from the customer’s first existing permission on that order.

Choose preserve when you want the new file access to expire at the same time as the customer’s other files from the same order.


Download Limit

Option key: wcrda_download_limit_handling Values: current | inherit Default: current

Determines the download count applied to newly granted permissions.

ValueBehavior
currentThe new permission uses the product’s current download limit setting.
inheritThe new permission copies the remaining download count from the customer’s first existing permission on that order. An empty value means unlimited.

Notify Customers

Option key: wcrda_send_email Default: Disabled

When enabled, the plugin sends an email to the customer each time new permissions are granted to one of their past orders. One email is sent per order per regeneration run, regardless of how many new files were granted.

Note: The email is sent after all files for an order are processed, not per individual file. If an order receives three new files in one run, the customer receives a single notification.

Email Subject

Option key: wcrda_email_subject Default: [{site_name}] New downloads available for order #{order_number}

Available placeholders:

PlaceholderReplaced with
{site_name}Your WordPress site title
{order_number}The WooCommerce order number

Customizing the Email Template

The email header, footer, and body can be customized at WooCommerce > Settings > Emails > New Downloadable Files Available. The email uses WooCommerce’s standard email header and footer templates, so it inherits your store’s branding automatically.


Tools

The Tools tab provides a manual trigger to regenerate download permissions for all eligible past orders in your store.


Global Regeneration

Click Regenerate All Permissions to start a full scan of all orders in your store. The plugin evaluates every eligible order (matching the configured Scope) and grants any missing permissions.

How it works

Global regeneration runs as a series of AJAX requests driven by your browser:

  1. The plugin fetches the total count of eligible orders and displays a progress bar.
  2. Your browser sends one AJAX request per batch, each processing up to Batch Size orders (configured on the Sync Method tab).
  3. The progress bar updates after each batch completes.
  4. Once all batches have run, the progress bar reaches 100% and a completion message is shown.

Important: The browser tab must remain open for the entire duration. If you close the tab or navigate away, the process stops at the current batch. No data is lost — you can restart the process from scratch and it will re-evaluate all orders.

When to use this

  • After initially installing the plugin, to backfill permissions for all past orders.
  • After adding files to a product when the Background Process method is not active.
  • To verify that all permissions are in sync after changing scope or behavior settings.

Performance considerations

For stores with a large number of orders, global regeneration can take a significant amount of time. The Batch Size setting controls how many orders are processed per request. If you experience timeouts, reduce the batch size.