Selling files is a different problem from selling objects. The product is the delivery, the licence check is an API every customer install calls, and both have to be right.
Two endpoints carry the business: the one that hands over a file, and the one that says whether a licence is still valid.
Purchase links are time-limited and tied to the buyer rather than being a permanent URL. A link posted on a forum stops working instead of becoming a free distribution channel.
Every install of your plugin or theme phones home on a schedule. Those checks are a high-volume API against your database, and they are tuned as one rather than treated as ordinary page loads.
A 300MB download served through PHP occupies a worker for the whole transfer. Files are handed off so the transfer does not consume the capacity your storefront needs.
Digital stores accumulate orders and licence records faster than they accumulate products, and those tables are what every customer account page reads.
The product files and the records of who bought them are equally unrecoverable. Both are in the daily backup.
Checkout is the easy part and every host handles it. What separates a digital store is what happens for the next two years: downloads, updates, renewals and support.
A successful plugin business generates more traffic from software than from shoppers, and the licence endpoint is the busiest URL on the site by a wide margin.
A digital store's load is not shopping traffic. It is downloads and machine-to-machine licence traffic, which behave nothing like each other.
| Setting | What we do | Why |
|---|---|---|
| Download endpoints | Time-limited links bound to the purchase | A permanent file URL turns one sale into unlimited distribution the moment somebody shares it. |
| Licence endpoint | Tuned as a high-volume API rather than a page | Every install checks in on a schedule, so this URL sees more requests than the storefront and behaves like an API under load. |
| File transfer | Handed off rather than streamed through PHP | A large download served by PHP holds a worker for the entire transfer, and a few concurrent downloads can starve the store. |
| Licence tables | Indexed on key and site URL | Activation checks look up by licence key and registered domain, and those lookups run constantly rather than occasionally. |
| Renewal notices | Batched with their own execution limits | Reminding thousands of customers before expiry is one long task, and it decides whether renewals happen at all. |
Every plan includes free migration, daily backups, SSL and 24/7 support.
Move the store across — migration is free, products and licences included.