How to deliver digital downloads in WooCommerce
WooCommerce can deliver digital files without another plugin. Mark the product as downloadable, upload the file from its product editor, set download limits and expiry, then choose a protected delivery method in WooCommerce settings. Use S3 storage when files are large or need signed, expiring URLs.
- 01Prepare the download file
- 02Create a downloadable product
- 03Add the customer download
- 04Choose a protected delivery method
- 05Check when access is granted
- 06Place a test order
What you need
- A WooCommerce store on WordPress 6.0 or later
- Administrator access to WordPress
- The final PDF, ZIP, audio, video or other digital file
- A payment method that can confirm orders
Prepare the download file
Put the finished file in a format your customers can use, such as PDF, ZIP, MP3 or MP4. If you are selling several files together, a ZIP archive is usually easier to manage than separate download rows.
Do not upload a paid file to the normal WordPress Media Library and then paste its public URL into the product. Files uploaded there can be accessible to anyone who knows the direct address. Upload the file from the WooCommerce product editor instead, so WooCommerce can place it in its protected download area.
Create a downloadable product
Go to Products > Add New, enter the product name and price, then find the product data panel. Tick Downloadable. Tick Virtual as well if the purchase does not require shipping.
Downloadable products can still be shipped if you leave Virtual unchecked, which is useful when a physical item includes a digital manual or bonus file. For a purely digital product, selecting both options prevents shipping fields and calculations from being used.
Add the customer download
In the Downloadable files area, click Add File, enter a customer-facing file name and upload the file, or enter its full external file URL. Set a Download limit if you want to restrict how many times each purchaser can download it. Leave the field blank for unlimited downloads.
Set Download expiry to the number of days the link should work after purchase, or leave it blank for no expiry. For variable products, add the appropriate file and limits to each variation rather than only to the parent product.
Choose a protected delivery method
Go to WooCommerce > Settings > Products > Downloadable products. Choose Force downloads or X-Accel-Redirect/X-Sendfile where your host supports it. These methods hide direct file links better than Redirect only. X-Sendfile or X-Accel-Redirect is generally the better choice for larger files if your hosting provider supports it.
Use Redirect only only when the external host requires it or you accept that the file URL is not protected. Turn on the unique filename option, and enable login requirements only if guest purchasers should not receive downloads.
Check when access is granted
In the same downloadable product settings, enable Grant access to downloadable products after payment if customers should receive the file as soon as payment puts the order into Processing. Otherwise, access normally waits until the order is Complete.
Customers receive download links on the order confirmation page and by email. Logged-in customers can also find them under My Account > Downloads. Products marked both Virtual and Downloadable usually move directly to Complete after successful payment.
Place a test order
Buy the product with a test payment method or a real low-value order, then check the confirmation page, email and My Account download area. Confirm that the file opens, the name is correct, and the link stops working after the configured limit or expiry.
If a large file times out, the problem may be the server rather than WooCommerce. Force Downloads uses PHP and can time out on large files or an underpowered host, so move the file to suitable cloud storage or use a supported server delivery method.
Fast way: For ordinary PDFs, ZIPs and audio files, use WooCommerce's built-in downloadable product fields. For large or security-sensitive files, use WooCommerce Amazon S3 Storage to store files in Amazon S3 and deliver them with signed URLs, download limits and expirations.
Let WooCommerce Amazon S3 Storage do it
S3-backed storage with signed URLs, download limits, and expirations for large or security-sensitive digital products.
Sources
- woocommerce.com /document/digital-downloadable-product-handling/?utm_source=…
- woocommerce.com /document/managing-products/virtual-downloadable/?utm_source…
Questions
- Can WooCommerce deliver digital downloads without a plugin?
- Yes, WooCommerce core can deliver digital files without another plugin. Mark the product as Downloadable, add the file from the product editor, and configure download limits and expiry. Core WooCommerce is usually enough for PDFs, ZIP files, audio and similar products. You need an additional storage or delivery solution when files are very large, stored in private cloud storage, or require signed URLs and more detailed access controls.
- Where should I upload files sold through WooCommerce?
- Upload paid files from the downloadable product editor rather than the public WordPress Media Library. Files added through the product editor are placed in WooCommerce's download area, while Media Library files may be reachable through their direct public URLs. If you use external storage, add the file's full URL and check whether your chosen delivery method supports that host.
- When do customers receive their download link?
- Customers can receive download links on the order confirmation page and in the order email after payment is confirmed. Logged-in customers can also access them from My Account > Downloads. If access after payment is disabled, downloads may wait until the order is marked Complete. This commonly causes confusion when a digital product is purchased alongside a physical product.
- Why is a WooCommerce download link not working?
- A download link commonly fails because the product is not marked Downloadable, no file was added, the order has not reached the status that grants access, or the chosen delivery method cannot serve the file. Large files may time out with Force Downloads, while Redirect only can fail to protect or pass through some external hosts. Test the product with a fresh order and check the order's downloadable permissions.
- Can I use Amazon S3 for WooCommerce downloads?
- Yes, WooCommerce accepts an external file URL, so files can be stored outside your WordPress server. A dedicated S3 integration is useful when you need private bucket storage, signed download URLs, expiry times, download limits or better handling for large files. For a small catalogue of ordinary files, the built-in WooCommerce method may be simpler; S3 becomes more useful as file size, traffic or access control requirements increase.