How selling software through EDD works
One flow from order to file to license
In Easy Digital Downloads a product is a download with one or more files and, optionally, several price options. When an order completes, the customer record is updated, download links are generated for that purchase, and extensions hang their own work on the same event: creating a license key, starting a subscription, adding a tag in your email platform. Orders and customers are kept in dedicated database tables, which keeps reporting quick as history grows. Understanding that sequence is what lets us add custom steps in the right place and keep them off the checkout request.
Licensing is a set of business rules
The Software Licensing extension gives each purchase a key with an activation limit and an expiry date. The hard questions are yours to answer. Does a local or staging site count as an activation? What does a customer keep after expiry: the installed version, or nothing? Is an upgrade from a single-site to an unlimited plan prorated? We write those answers down and configure or code them, then test with real keys on real WordPress installs. Vague rules are the main source of license support tickets.
How updates reach customer sites
Your plugin includes a small updater class. Whenever WordPress checks for updates, that class sends the license key, site URL and current version to your store. The store checks the key and answers with the latest version, a changelog and, for valid licenses, a download package. Failures are usually mundane: a version string that was not bumped, a caching layer returning an old response, or a firewall blocking the request. We test the full loop on a clean site before a release goes out, and we document the routine so your team can repeat it.
Renewals deserve their own project
Recurring revenue depends on reminder timing, card update flows and what the payment processor does with a failed charge. We map the renewal timeline, write the emails, make sure Stripe or PayPal webhooks reach the store and build a report of upcoming and failed renewals. Subscription and license status must agree, so a refunded or canceled order also ends its updates.
When custom code is the right call
Extensions cover common models. Custom work begins with things like seat-based licensing, usage reporting from customer sites, a branded customer dashboard or sync with your help desk. We write these as separate add-ons that use Easy Digital Downloads hooks and its API, the same way we approach WordPress plugin development in general.