Table of Contents
Downloadable Products with FoxyCart
About Downloadable Products
FoxyCart's downloadable product functionality allows for a quick, secure, and easy way to sell any type of file. While the concept of selling a downloadable product may seem pretty straightforward, there are many questions that come up, which we'll attempt to address below.
How to Create Downloadable Products
Creating a downloadable product is easy.
- Ensure you have a category with a “product delivery option” set to “downloaded by the customer”. While you can make your default category “downloaded by the customer”, this is not recommended unless you are only selling downloadables, as otherwise it can lead to unintended errors with non-downloadable products. You'll create your category in the FoxyCart product categories in your admin.
- Click the “downloadables” link in your FoxyCart admin navigation, then click the “add a product” link. Alternatively, you can use this link to go to your product downloadables settings.
- Select the appropriate file to upload, and the appropriate category, product name (as displayed to the customer), product code (unique per product, per category), and price.
- Upload the file.
- Create an add-to-cart link or form, making sure to include the necessary
code. Note that without the appropriate
codevalues, the addition of the product to the cart will either error, or will add a normal, non-downloadable product. Also worth noting is that with downloadable products you do not have to pass in the product's
nameto the cart, since that is set explicitly on the server-side.
How Are Downloadables Different from Normal Products?
Unlike normal FoxyCart products, downloadable products must be created explicitly in the FoxyCart admin, and given a
price. (Note that for downloadable products the code is required.) Downloadables must also have a category set, and that category must be set to “Downloaded by the customer” under the category's product delivery options.
Further, since the downloadable product's
name is set in the admin, the
name parameter need not be included in the product's add-to-cart link or form (though it won't hurt to include it).
Downloadables currently do not support product level discounts, but can still be discounted by using either category level discounts, or our coupon functionality.
How Are Products Delivered?
A downloadable product is added to the cart just like any other product, but upon a successful transaction the receipt displays links to download the products purchased, as well as on the email receipt (as shown below).
The customer can click on either link to retrieve their product(s), and their download will begin immediately (or as close to immediately as it may take to for their web browser to load the link). The customer may be prompted to select a location to save the file, or the file may be downloaded automatically, depending on the user's browser settings.
Downloadables and Delayed Payment Methods (Purchase Orders, eChecks)
Since there is no real-time validation of Purchase Orders or e-check payments through PayPal Express Checkout, downloadable products are not included in the initial receipt (both the web receipt and the email receipt). FoxyCart sends a special response details entry in the datafeed indicating the delayed payment method.
For payments made with a payment method other than a Purchase Order: Once the order is approved, you can login to the FoxyCart admin and manually initiate another email receipt to be sent (from the “transactions” page in the admin, each transaction includes an “(email)” link to resend the email receipt to the customer and possibly the store depending on your settings), which will include the downloadable product links.
For payments made with a Purchase Order, you will need to manually send the download links to the customer.
Manually Re-Delivering Downloadables
If you have a customer that needs downloadable links resent, you can resend the original email receipt directly from the “transactions” page in your store's admin. You can also reset the download count per product if you need to allow customers to re-download the file.
How Are Downloads Secured?
Each link to download a file is unique per order, and your downloadable products can only be accessed by a valid link generated by FoxyCart. These links can be configured to expire by two different methods:
- Maximum downloads. For example, if this is set to “3”, the link will allow the product to be downloaded up to 3 times, after which point it will display an expiration message rather than allowing the customer to download the file.
- Hours for maximum downloads. This is basically a timed expiration. If the maximum downloads are 1000 but the “hours” is set at “24”, the FoxyCart-generated download link will expire after 24 hours from the purchase, regardless of the number of downloads at that point.
Again, to be clear: Your files are stored in a location that is inaccessible to web users. The only way for your files to be downloaded by a customer is through the specific download link unique to their specific transaction.
Limitations and Considerations
- The current file size limit per downloadable product is 250MB.
- Downloadables currently do not support product-level discounts, although category level discounts and coupons can still be used.
- Multiple downloadable products can be ordered simultaneously, but one product can only have one file. So, if you wanted to have one product with multiple separate files you'd have to zip those files together first.
- Similarly, if you wanted to do 10 separate and individual album tracks at $0.99 but the entire 10 track album at $6.99, you'd have to make them all separate products. You could get creative on the add-to-cart link or form to emulate that behavior, but there isn't any native FoxyCart functionality to do rule-based product adding and removing.
- Subscriptions with downloadables are not a recommended approach. For example, if you want to have a monthly billing arrangement where users can download a new file each month, we recommend using FoxyCart's subscription functionality to manage user permissions or access on your own system, then use that access to allow downloads (from your site) as appropriate.