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:
| Tab | Purpose |
|---|---|
| License | License key activation and status — see License Activation |
| General | Debug mode and logging |
| Sync Method | Background Process or On-the-Fly, and method-specific options |
| Scope | Eligible order statuses and date range |
| Behavior | Download expiry, limits, and customer email notifications |
| Tools | Global permission regeneration |
| Support | Links 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.
| Value | Behavior |
|---|---|
current | The new permission uses the product’s current expiry setting (same as a fresh purchase today). |
preserve | The 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.
| Value | Behavior |
|---|---|
current | The new permission uses the product’s current download limit setting. |
inherit | The 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:
| Placeholder | Replaced 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:
- The plugin fetches the total count of eligible orders and displays a progress bar.
- Your browser sends one AJAX request per batch, each processing up to Batch Size orders (configured on the Sync Method tab).
- The progress bar updates after each batch completes.
- 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.