Downloadable subscription products use the standard WooCommerce download system. Milo Subscriptions wires the WooCommerce download permissions to the subscription’s status so access is granted and revoked automatically as the subscription moves through its lifecycle.
How access is controlled
Milo Subscriptions hooks into subscription status changes and updates the WooCommerce download permissions accordingly. Internally, the plugin calls update_download_permissions() on every status change and manipulates the standard access_expires date on each permission: clearing it to restore access, setting it to a past date to revoke.
| Status | Downloads |
|---|---|
| Active | Granted (on entry, access is restored) |
| Pending cancellation | Granted (no explicit change; the subscription was Active before, so existing access carries over until the final cancellation) |
| On-hold | Revoked |
| Cancelled | Revoked |
| Expired | Revoked |
| Pending | Pending (initial permissions are granted by the standard WooCommerce order flow once the first payment succeeds) |
When a previously revoked subscription returns to Active (for example, by reactivation from on-hold), its download access is restored automatically.
Setting up a downloadable subscription
- Go to Products → Add New or edit an existing subscription product.
- In the Product data panel, choose Simple subscription or Variable subscription.
- Tick Downloadable at the top of the panel.
- Add files under Downloadable files, and optionally set download limits and expiry on each file.
- Save.
Files are served by the standard WooCommerce download handler, so the usual hosting options apply (media library, external URL, or a protected-storage extension).
Variable subscriptions with per-variation downloads
Variable subscription products support WooCommerce’s standard per-variation downloadable files. When a customer switches between variations, the subscription’s line item is replaced, so downloadable permissions follow the new variation’s files automatically.
Drip downloadable content
Milo Subscriptions adds one downloadable-specific setting: Drip downloadable content under Subscriptions → Settings → Checkout. When enabled, newly added files on a subscription product are not exposed to existing subscribers until their next renewal is processed. This lets you roll out new content on a cadence without giving every subscriber immediate retroactive access.
What renewals do (and do not) do
Renewals create a new renewal order for the subscription; they do not reset download permissions, counters, or expiry dates on the existing permission records. The customer continues to use the permissions granted on their original order for the life of the subscription. Download limits and expiry set on each file at the product level apply as configured by WooCommerce, independent of the renewal cycle.
If you need per-renewal refreshes of download limits (for example, “5 downloads per month, resetting on renewal”), that is not part of core behavior and would need a custom extension.
Emails that include download links
The exact set of emails that include download links depends on your email templates. Two emails typically surface them:
- Activated subscription: fires on
milosubscriptions_subscription_status_active, which covers both the first activation and any later reactivation (there is no separate “welcome” or “reactivated” email). - Customer processing renewal: fires when a renewal payment is being processed.
There is no “Subscription welcome” email and no “Subscription reactivated” email in the core plugin. If your current documentation mentions those names, it should be corrected.
Customer view
Customers see their downloadable files on the standard WooCommerce My Account → Downloads page.
Troubleshooting
Customer cannot download a file
- Confirm the subscription status is Active or Pending cancellation.
- Confirm the file URL is reachable (no 404/403).
- Check WooCommerce’s download permission record for
access_expires: if it is set to a past date, the subscription is currently in a revoked status.
Downloads were revoked on renewal
This happens when a renewal payment fails and the subscription moves to On-hold. Once the customer updates their payment method and the subscription returns to Active, download access is restored automatically.