Login
Get Started

Easy Digital Downloads Changelog

View releases and changelogs for EDD and addons.
Version 3.6.5 — October 27, 2026
  • NEW: AI – Connected AI assistants can look up commissions, total what each recipient is owed, and mark commissions paid, unpaid, or revoked (requires EDD 3.7.1).
  • Security: Added permission checks to the commission shortcodes and the commission export.
  • Security: Strengthened request verification for commission bulk actions and upgrade routines.
  • Admin: Editing a commission keeps amounts of 1,000 or more correctly formatted.
  • Admin: Flat-rate commissions keep a rate below 1 when edited, and the rate field accepts decimal values.
  • Admin: Manual commissions on variable-priced downloads now save the selected price option.
  • Emails: The {download} email tag works again when the commission’s download has been deleted.
  • Renewals: Commissions earned on renewals are flagged as renewals again, including flags saved before 3.6.0.
  • Reports: Commission exports no longer add a trailing dash to products without a price option or repeat the previous row’s download name.
  • Shortcodes: The Revoked Commissions table in [edd_commissions] now pages separately from the Paid Commissions table.
  • Shortcodes: Every [edd_commission_breakdown_table] on a page now renders, not just the first.
  • Dev: Commission meta now uses the edd_commission meta type, so its metadata hooks are named get_edd_commission_metadata and so on, instead of get_commission_metadata.
  • Dev: Removed compatibility code for EDD versions below 3.4.0, and deprecated eddc_are_email_templates_registered() and eddc_render_commissions_meta_box().
  • Dev: The minimum required versions are now WordPress 6.2 and EDD 3.4.0, and the addon tools are updated.
Version 2.3.1 — October 26, 2026
  • NEW: AI – Assistants connected to your store can now look up product reviews and approve, hold, spam, trash, or restore them.
  • Security: Strengthened verification of review submissions, replies, and edits.
  • Security: Tightened permission checks on review moderation and product review status changes.
  • Security: The Reviews admin screen now requires permission to moderate reviews.
  • Security: Improved validation in the Review block.
  • Security: The reviews API now requires permission to moderate reviews before returning reviewer contact details.
  • Security: Added a permission check before an admin reply to a review is published.
  • Security: The review shortcode, block, and Featured Review widget now only show approved reviews of publicly visible products.
  • Compatibility – Frontend Submissions: The dashboard’s At a Glance widget and the Comments screen now show correct comment counts when Frontend Submissions is active.
Version 2.8.3 — October 20, 2026
  • Security: Vendor profile saving now checks permission on the account being changed, so a logged-in user can no longer change another user’s email address or details.
  • Security: Restricted approved vendors from seeing other authors’ private products in store listings or editing product categories and tags.
  • Security: Approving downloads from the Downloads list now requires permission to publish each one, so vendors can no longer skip store review or publish other vendors’ pending products, posts, or pages.
  • Security: The vendor registration, login, and contact forms now always apply the reCAPTCHA and required fields set in the FES settings.
  • Security: Limited taxonomy suggestions on vendor forms to product taxonomies, so approved vendors no longer see unrelated term names.
  • Security: Prevented visitors who weren’t logged in from changing vendors’ recorded sales and earnings.
  • Security: Removed old FES upgrade routines that visitors who weren’t logged in could run to delete vendor roles and create unapproved vendor records.
  • Security: Restricted approved vendors to editing only the products they authored, rather than any post, page, or product.
  • Security: Blocked other websites from making a user an approved vendor when a store admin visited them while logged in.
  • Security: Blocked other websites from changing a vendor’s status when a store admin visited them while logged in.
  • Security: Vendor display names are now made safe on the admin vendor profile, so unsafe content entered at registration no longer runs when a store admin views it.
  • Security: Closed a gap on the FES tools and upgrades screens that let a crafted link run unwanted actions as the store admin who opened it.
  • Security: Vendor dashboard comment replies are now posted as the replying vendor and only on their own products, and can no longer hide comments from other vendors’ dashboards.
  • Security: Product files added through the vendor pricing field must now be the vendor’s own uploads or links to another site, not protected files stored on the site.
  • Security: Vendors can now view a receipt only for orders containing their own products, rather than any order’s customer details, license keys, or subscriptions.
  • Security: Corrected vendors list searching and sorting, which let store managers, or a crafted link opened by one, read or change data in the store’s database.
  • Security: The FES login form now signs a visitor into only the account whose password they entered.
  • Security: Vendor file fields now accept only media files the vendor uploaded.
  • Admin: Vendor addresses are now edited in a modal.
  • Admin: Vendors are now redirected away from admin screens they shouldn’t reach in every case.
  • Admin: Saving a vendor profile no longer adds backslashes to names and addresses containing quotes or apostrophes.
  • Forms: Fixed taxonomy term suggestions on vendor forms, which failed on PHP 8.
  • i18n: Fixed a WordPress 6.7 notice about translations loading too early.
  • Tools: Fixed a PHP warning when recounting vendor statistics for vendors with no products.
  • Tools: Removed the outdated Pre-FES 2.4 import/export and Reset All Forms tools, and laid out the remaining Frontend Submissions tools as cards.
  • Vendors: Fixed an undefined variable notice in the vendor cache.
  • Dev: FES forms now refuse to save when the form ID doesn’t match the type of form being saved.
  • Dev: Removed the FES 2.2 and 2.3 upgrade routines, which current installs no longer use.
  • Dev: Deprecated fes_tools_page(), fes_get_tools_tabs(), and fes_process_form_tools(); the FES tools now submit through EDD’s admin action router and require manage_shop_settings.
  • Dev: The minimum requirements are now PHP 7.4, WordPress 6.2, and EDD 3.4.0, and the addon tools library has been updated.
Version 2.14.0 — October 20, 2026
  • NEW: API – Subscriptions, renewals, and subscription notes are now available to AI assistants through the WordPress Abilities API.
  • NEW: Subscriptions – Customers whose update link no longer works can now request a new one by email from the update page.
  • Security: Improved validation of recurring product prices and billing terms at checkout.
  • Security: Strengthened verification of PayPal Standard and 2Checkout subscription notifications.
  • Security: Content restricted to active subscribers now checks subscription status more strictly.
  • Security: Improved sanitization of subscription notes.
  • Security: The subscriptions API now requires permission to view subscriptions before returning subscription details.
  • Security: Strengthened verification before a PayPal Express order is marked complete.
  • Security: Strengthened ownership checks when a customer updates a subscription’s payment method.
  • Security: The PayPal Express confirmation page now only shows subscription details to the customer they belong to.
  • Admin: The hidden upgrades page no longer appears in the WordPress Command Palette.
  • Blocks: Header and footer blocks on the payment method update page now work correctly with block themes.
  • Compatibility – Multi-Currency: Stripe subscriptions now renew in the currency of the purchase instead of the store’s base currency.
  • Compatibility – Software Licensing: Renewing a license manually through PayPal now cancels the old subscription, so customers are no longer billed twice.
  • PayPal: Canceled subscriptions that use a saved PayPal payment method can now be reactivated.
  • PayPal: Renewals with tax are no longer overcharged by the tax amount.
  • Privacy: Erase Personal Data can now anonymize subscription renewal orders.
  • Renewals: A failed renewal payment no longer extends a subscription or its license.
  • Renewals: Renewals processed on the last day of a month now get the correct expiration date.
  • Stripe: Subscriptions are now created when an order that was placed on hold is completed.
  • Stripe: Purchases completed after the customer leaves checkout, including live Amazon Pay purchases, now create their subscriptions.
  • Stripe: Subscriptions canceled after failed payments can be reactivated again, and payment is collected when they are.
  • Stripe: The Subscription Sync tool now updates expiration dates, so reactivated subscriptions stay active.
  • Stripe: Subscriptions recovered with the missing subscription tool now store the correct recurring tax.
  • Stripe: Canceling a subscription that is unpaid in Stripe now cancels it in Stripe as well.
  • Stripe: Renewal payments are now recorded even when a subscription’s saved Stripe ID is out of date.
  • Stripe: The Create Subscription recovery tool on the order screen finds matching Stripe subscriptions again.
  • Stripe: A new payment method now gets the customer’s full billing address, so renewals in regions that require one are no longer declined.
  • Taxes: Renewal orders now use the current tax rate instead of one that has been deactivated.
  • Dev: The legacy Stripe subscription creation callbacks are no longer registered in Payment Elements mode.
  • Dev: Added a lock utility to prevent the same record from being processed twice at once.
  • Dev: Added the missing parent_payment_id_product_id index to the subscriptions table for stores that upgraded from 2.12.2 or earlier, which fixes slow admin page loads.
  • Dev: The subscriptions query now validates its own sort direction.
  • Dev: Stripe subscription reactivation now runs in a dedicated service.
  • Dev: Blocks now use the plugin’s shared build tooling, and dependencies have been updated.
Version 3.9.8 — October 20, 2026
  • NEW: Licenses – Licenses can now be read and managed through the WordPress Abilities API (requires EDD 3.7.1 or later).
  • Security: Package download links are now signed with a site-specific secret, so their expiration can’t be forged.
  • Security: The license renewal form no longer reveals a license’s details or renewal price to anyone other than the license owner.
  • Security: Fixed an issue that allowed license upgrade and renewal prices to be changed at checkout.
  • Security: Fixed an information disclosure issue where the update API could describe unpublished or password-protected products.
  • Security: Fixed a stored cross-site scripting issue in the product changelog.
  • Security: Fixed a server-side request forgery issue in the product readme.txt location.
  • Security: Deleting a license, including through bulk actions, now requires the delete licenses capability.
  • Security: Added cross-site request forgery protection to the activation limit and renewal notice actions on the licenses screen.
  • Security: Fixed a reflected cross-site scripting issue on the licenses screen.
  • Security: Bulk actions on the licenses screen now require the same capabilities as their single-license versions.
  • Security: Fixed a SQL injection issue in the licenses list table’s sort order.
  • Security: Fixed an issue that could reveal another customer’s activated site URL when adding a site to a license.
  • Security: Exporting license keys now requires permission to manage licenses.
  • Security: Product changelogs, descriptions, and upgrade notices sent by the update API are now limited to the same HTML as other product content.
  • Security: Fixed a SQL injection issue in the license export’s status filter.
  • Security: Fixed an issue that let an unauthenticated request delete an order’s licenses while the order remained.
  • Admin: The Licenses screen’s page title is now “Licenses”.
  • Admin: Fixed the plugin requirements notice styling on the Plugins screen in WordPress 7.1.
  • Admin: The license upgrades page no longer appears in the WordPress command palette.
  • Admin: Fixed sending a renewal notice to an expired license from the licenses screen’s bulk actions.
  • Admin: Clicking Filter on the licenses screen no longer runs the selected bulk action on checked licenses.
  • Admin: The licenses screen keeps the search term and tab when it reloads after a bulk action.
  • API: The update API no longer describes unpublished, private, or password-protected products unless the request includes an active or expired license for that product. A disabled license no longer counts.
  • Blocks: Restored the cancel button on the license renewal form.
  • Downloads: Update package download links use a new signature, so links generated before updating stop working. They expire on their own within the store’s download link expiration (24 hours by default).
  • Downloads: Product changelogs no longer allow scripts, iframes, or other HTML outside what post content allows, so embedded videos in a changelog are removed.
  • Downloads: A product’s readme.txt location must be a public URL. Local and private network addresses are no longer fetched, and invalid URLs aren’t saved.
  • Emails: Renewal notices are no longer sent for licenses whose product has been deleted.
  • Emails: Fixed the bulk Send Renewal Notice action sending nothing for licenses that had not expired.
  • Licenses: A license must be attached to a user account to be upgraded. A license with no account, such as one from a guest purchase, can no longer be upgraded.
  • Licenses: Fixed a fatal error when running retroactive licensing on bundles with an unresolvable child license.
  • Renewals: In the license renewal form and block, a license attached to a user account can only be renewed by that user.
  • Renewals: With email matching enabled, a guest renewing a license attached to an account is now asked to log in.
  • Renewals: Renewing a license no longer removes the same product from the cart when it’s already there as a new purchase. Both stay in the cart.
  • Renewals: Fixed a false “already in your cart” message when renewing a product that was in the cart as a new purchase.
  • Dev: Deprecated EDD_Software_Licensing::get_download_package(). Use EDD\SoftwareLicensing\Downloads\Package::get_download_package().
  • Dev: The activation limit AJAX handlers now return a JSON response instead of a raw number.
  • Dev: The edd_sl_package_download_computed_hash filter now applies when package URLs are generated, not only when they’re validated.
  • Dev: Package download link expiration is now generated and checked in UTC.
Version 1.3.0 — October 20, 2026
  • NEW: Downloads – Products can now override the All Access “Add To Cart” display mode, so a single product can show “Buy All Access” and “Login” buttons without changing the store-wide setting.
  • Security: Fixed a stored cross-site scripting issue in All Access shortcode text that users with contributor access could add to a post.
  • Security: Fixed an issue that let a pass limited to certain price options download files attached to the product’s other price options.
  • Security: Restricted the manual pass expiration check to store managers.
  • Admin: Fixed the “Buy All Access” and “Log In” instructional text settings losing their links when saved on EDD 3.7.1 or later.
  • Admin: Hidden All Access admin pages no longer appear in the command palette.
  • Admin: The store-wide “Add To Cart” display mode setting is now a dropdown with clearer option labels.
  • Checkout: Fixed the “Create an account or log in” error not showing for an All Access pass when an excluded All Access-only product came before it in the cart.
  • Cron: Expired passes now renew reliably: the daily expiration check runs in batches across every active pass, and more than one expired pass can renew in the same request.
  • Logs: Fixed All Access downloads that could be recorded against another customer’s file download log when two downloads happened at the same time.
  • Logs: The debug log no longer records an entry for every product viewed by a visitor without a pass. Orders: Invalid passes now show why they are invalid in the order’s Pass Details.
  • Reports: Added a date range picker to the All Access report.
  • Reports: The All Access report’s product filter now lists only All Access passes.
  • Reports: Fixed a fatal error on sites with a non-standard WordPress directory layout, caused by loading the All Access report table on every page.
  • Reports: Fixed the All Access report leaving out downloads made today.
  • Dev: Fixed edd_all_access_get_customer_pass_objects() returning the first customer’s passes for every customer checked in the same request, which also affected edd_all_access_user_has_pass().
  • Dev: The minimum requirements are now EDD 3.5.0 and WordPress 6.2.
  • Dev: Added the edd/all_access/checkable_passes filter and the edd/all_access/file_download_logged action, so an extension can share a pass with other users.
  • Dev: Deprecated edd_all_access_check_expired_periods_via_cron(), edd_all_access_add_meta_box(), and edd_all_access_render_all_access_meta_box().
Version 3.7.2 — October 14, 2026
  • Security: Fixed a missing authorization check when sending a test Email Summary.
  • Security: Discount codes with a maximum number of uses are now reserved when checkout starts, so customers checking out at the same time can no longer redeem a code past its limit.
  • Checkout: Fixed the Log in and Register forms not showing on a checkout page built from the Checkout block with no inner blocks.
  • Checkout: Improved order completion speed by deferring total store earnings calculations until after checkout has completed.
  • Database: Database events can now be triggered only by the operations that create them.
  • Discounts: Discount uses held by unpaid pending orders are now given back sooner, so abandoned checkouts no longer block other customers from using a limited code.
  • Discounts: A paid order whose discount code has no uses left is now placed On Hold for review instead of completing.
  • Emails: Fixed a fatal error with Cart Recovery enabled that could stop all site emails from sending when another mail plugin is active.
  • Emails: Fixed sending a test email or previewing a custom Cart Recovery email.
  • Emails: The new user email can now be sent only by user registration.
  • Orders: Fixed order status changes running pending order processing for statuses other than pending and processing.
  • Orders: Fixed PHP warnings on the order screens when an order has no IP address.
  • PayPal: Fixed partial refunds failing for amounts of 1,000 or more, or on stores that use a comma as the decimal separator.
  • Reports: Fixed the customers export shifting every column after the ID when filtered by a download category or tag.
  • Reports: Fixed the Export screen running out of memory on stores with many categorized downloads.
  • Reports: An export the current user isn’t allowed to run now shows an error instead of running forever.
  • Stripe: Improved checkout speed on stores with many orders.
  • Tools: The Tools screen now shows the default tab when it’s asked for a tab that doesn’t exist.

Version 3.7.1.1 — October 6, 2026
  • Improved: Square orders are now completed only once Square confirms the payment is complete.

Version 2.4.2 — September 28, 2026
  • Admin: Updated the documentation links on the Amazon S3 settings screen.
  • Admin: Improved the display of bucket and object names on the Amazon S3 Library tab.
  • Admin: Fixed the S3 file browser so that Insert/Use File fills in the file name and URL and closes the modal.
  • Admin: Fixed a PHP warning when S3 does not return a bucket owner, and fall back to N/A instead.
  • Compatibility – Frontend Submissions: Fixed the Amazon S3 field on vendor submission forms.
  • Downloads: Improved validation of S3 file requests and uploads.
  • Downloads: Improved the handling of files offloaded to Amazon S3 from other extensions.
  • Dev: The new minimum requirements are PHP 7.4, WordPress 6.2, and Easy Digital Downloads 3.3.0.
  • Dev: Updated composer dependencies.
Version 3.7.1 — September 21, 2026
  • NEW: Abilities – Store data is now registered with WordPress’s Abilities API, so AI assistants can discover and work with orders, customers, products and discounts.
  • NEW: Admin – Introducing Command Palette support, so orders, customers, discounts and downloads can be found and jumped to with Cmd+K / Ctrl+K on WordPress 6.9 and later.
  • Admin: Improved the styling of enhanced select fields so they render correctly alongside plugins that load their own Chosen styles.
  • Admin: Hardened the validation and output of store settings when they are saved.
  • API: Improved the visibility checks on the products API endpoint.
  • API: Improved the permission checks on the file download logs API mode, and the conditions under which API keys are issued.
  • Blocks: Improved the ownership checks in the User Downloads block.
  • Blocks: Hardened how styling attributes are written into the Downloads block’s inline CSS.
  • Cart: Fixed cart item removal links breaking after the cart was refreshed with AJAX.
  • Cart: Improved the checks applied to a restored guest cart, including its pricing and access.
  • Checkout: Restored the “Reset Password” link in the checkout login error message.
  • Checkout: Fixed a “Confirm your password” error that prevented customers from registering a new account on block checkout.
  • Checkout: Fixed the PayPal button not responding for guests when the checkout login form is hidden.
  • Checkout: Increased the verification required before an order automatically registers a new account.
  • Checkout: Added abuse controls to front-end account creation, and improved how checkout applies the store’s registration setting.
  • Compatibility – Elementor: Fixed cart item thumbnails rendering at full size, and a PHP warning, in the legacy checkout widget.
  • Compatibility – Elementor: Fixed the two column checkout layout rendering incorrectly.
  • Compatibility – Elementor: Improved front-end performance by no longer decoding the full Elementor element tree on every pageview.
  • Compatibility – WP All Export: Fixed EDD’s enhanced select scripts breaking the Drag & Drop builder.
  • Cron: Session cleanup now reschedules itself until the full backlog of expired sessions is cleared.
  • Cron: Improved the context checks on cron maintenance routines.
  • Customers: Fixed undefined key warnings when a customer’s session data was only partially populated.
  • Customers: Improved the capability checks required to delete a customer and its records.
  • Customers: Increased the verification required before registration attaches an existing customer record.
  • Customers: Improved how customer name and address details are stored when a checkout does not complete.
  • Database: Improved the sanitization of serialized meta values.
  • Discounts: Strengthened the enforcement of discount usage limits.
  • Downloads: Fixed a PHP warning when delivering files hosted at a URL with no local file path.
  • Downloads: Tightened the directory boundary applied when serving locally hosted files.
  • Downloads: Improved the ownership and location checks on files referenced by attachment ID.
  • Downloads: Improved the visibility checks applied to product search results.
  • Downloads: Improved how product search results are cached.
  • Downloads: Improved the permission check when saving bundled products, and how access to bundled files is determined.
  • Downloads: Strengthened the enforcement of per-file download limits.
  • Downloads: Improved how files with no price option assigned are matched to a purchase.
  • Downloads: Improved the access checks applied to a purchased price option.
  • Downloads: Improved the location checks applied to a product’s file path.
  • Downloads: Improved the validation performed when generating file download links.
  • Emails: Improved how product details are rendered in the {download_list} email tag.
  • Emails: Improved the checks performed before purchase receipt and new sale emails are sent.
  • Emails: Fixed a fatal error in the name email tag when an order has no first name.
  • Gateways: Improved the validation and permission checks on Apple Pay domain registration.
  • Logs: Improved the capability checks required to view store logs.
  • Migration: Improved the context checks on background upgrade routines.
  • Orders: Improved the validation required to recover an abandoned order.
  • Orders: Added additional validation to the resend receipt action.
  • Orders: Corrected the rendering of product titles in the order editor.
  • Orders: Increased the verification required for a guest to view an order receipt.
  • Orders: Tightened the markup allowed in product notes on the order receipt.
  • Orders: Improved the sanitization and display of order addresses in the admin.
  • Orders: Tightened the requirements for running a deferred order action.
  • Orders: Improved the authorization required to create an order.
  • Orders: Improved the capability checks on bulk trashing and restoring orders.
  • Orders: Improved the capability and input checks on manual order creation.
  • Orders: Improved how the order receipt handles pending email verification.
  • Orders: Tightened how the receipt shortcode resolves which order to display.
  • PayPal: Site Health now correctly reports the connection status for stores still on PayPal Commerce v2.
  • PayPal: Added additional verification before a refund is sent to PayPal.
  • PayPal: Fixed refunds failing for stores still connected with PayPal Commerce v2.
  • PayPal: Strengthened the checks on the PayPal return URL before a purchase session is created.
  • PayPal: Added additional verification to the PayPal webhook sync action.
  • PayPal Standard: Improved the verification of incoming IPN messages.
  • PayPal Standard: Improved how gateway messages are stored in order notes from PayPal disputes.
  • Reports: Improved the performance of the reports screens.
  • Reports: Improved how the discount usage chart matches a discount code.
  • Stripe: Fixed free trial subscription checkouts failing the amount check on Card Elements.
  • Stripe: Prevented duplicate charges when paying with Stripe Payment Elements.
  • Stripe: Added additional verification to the Stripe Connect completion step.
  • Stripe: The Elements Mode setting is now visible to stores still using Card Elements.
  • Dev: Email tags are now defined in a registry of individual tag classes. edd_add_email_tag() and the edd_email_tags filter are unchanged, and edd_email_tag_billing_address() is deprecated.
  • Dev: Updated Action Scheduler to 4.1.0.
  • Dev: New internal hooks use a slash delimited namespace (edd/domain/event). No existing hook names changed.
  • Dev: Consolidated the dynamic action routers into a single class, and added the edd/actions/router/blocked_hooks filter for controlling which hook names the routers will dispatch.
  • Dev: Added the edd/logs/file_downloads/columns and edd/logs/file_downloads/row filters to the file download logs table.
  • Dev: Download history export rows now carry the log ID.
Version 3.7.1 — September 21, 2026
  • NEW: Abilities – Store data is now registered with WordPress’s Abilities API, so AI assistants can discover and work with orders, customers, products and discounts.
  • NEW: Admin – Introducing Command Palette support, so orders, customers, discounts and downloads can be found and jumped to with Cmd+K / Ctrl+K on WordPress 6.9 and later.
  • Admin: Improved the styling of enhanced select fields so they render correctly alongside plugins that load their own Chosen styles.
  • Admin: Hardened the validation and output of store settings when they are saved.
  • API: Improved the visibility checks on the products API endpoint.
  • API: Improved the permission checks on the file download logs API mode, and the conditions under which API keys are issued.
  • Blocks: Improved the ownership checks in the User Downloads block.
  • Blocks: Hardened how styling attributes are written into the Downloads block’s inline CSS.
  • Cart: Fixed cart item removal links breaking after the cart was refreshed with AJAX.
  • Cart: Cart recovery now displays its rate limit warning instead of silently discarding it.
  • Cart: Improved how the cart recovery timeline is rendered.
  • Cart: Fixed cart recovery timeline entries being dropped when the stored event data contained a quotation mark.
  • Cart: Improved how the recipient of a cart recovery email is determined.
  • Cart: Improved the checks applied to a restored guest cart, including its pricing and access.
  • Checkout: Restored the “Reset Password” link in the checkout login error message.
  • Checkout: Fixed a “Confirm your password” error that prevented customers from registering a new account on block checkout.
  • Checkout: Fixed the PayPal button not responding for guests when the checkout login form is hidden.
  • Checkout: Increased the verification required before an order automatically registers a new account.
  • Checkout: Added abuse controls to front-end account creation, and improved how checkout applies the store’s registration setting.
  • Compatibility – Elementor: Fixed cart item thumbnails rendering at full size, and a PHP warning, in the legacy checkout widget.
  • Compatibility – Elementor: Fixed the two column checkout layout rendering incorrectly.
  • Compatibility – Elementor: Improved front-end performance by no longer decoding the full Elementor element tree on every pageview.
  • Compatibility – WP All Export: Fixed EDD’s enhanced select scripts breaking the Drag & Drop builder.
  • Cron: Session cleanup now reschedules itself until the full backlog of expired sessions is cleared.
  • Cron: Improved the context checks on cron maintenance routines.
  • Customers: Fixed undefined key warnings when a customer’s session data was only partially populated.
  • Customers: Improved the capability checks required to delete a customer and its records.
  • Customers: Increased the verification required before registration attaches an existing customer record.
  • Customers: Improved how customer name and address details are stored when a checkout does not complete.
  • Database: Improved the sanitization of serialized meta values.
  • Discounts: Strengthened the enforcement of discount usage limits.
  • Downloads: Fixed a PHP warning when delivering files hosted at a URL with no local file path.
  • Downloads: Tightened the directory boundary applied when serving locally hosted files.
  • Downloads: Improved the ownership and location checks on files referenced by attachment ID.
  • Downloads: Improved the visibility checks applied to product search results.
  • Downloads: Improved how product search results are cached.
  • Downloads: Improved the permission check when saving bundled products, and how access to bundled files is determined.
  • Downloads: Strengthened the enforcement of per-file download limits.
  • Downloads: Improved how files with no price option assigned are matched to a purchase.
  • Downloads: Improved the access checks applied to a purchased price option.
  • Downloads: Improved the location checks applied to a product’s file path.
  • Downloads: Improved the validation performed when generating file download links.
  • Emails: Improved how product details are rendered in the {download_list} email tag.
  • Emails: Improved the checks performed before purchase receipt and new sale emails are sent.
  • Emails: Fixed a fatal error in the name email tag when an order has no first name.
  • Gateways: Improved the validation and permission checks on Apple Pay domain registration.
  • Invoices: Tightened the markup allowed in customer notes on invoices.
  • Invoices: Tightened the requirements for saving an invoice billing address.
  • Logs: Improved the capability checks required to view store logs.
  • Migration: Improved the context checks on background upgrade routines.
  • Orders: Improved the validation required to recover an abandoned order.
  • Orders: Added additional validation to the resend receipt action.
  • Orders: Corrected the rendering of product titles in the order editor.
  • Orders: Increased the verification required for a guest to view an order receipt.
  • Orders: Tightened the markup allowed in product notes on the order receipt.
  • Orders: Improved the sanitization and display of order addresses in the admin.
  • Orders: Tightened the requirements for running a deferred order action.
  • Orders: Improved the authorization required to create an order.
  • Orders: Improved the checks applied when an order’s IP address is recorded.
  • Orders: Improved the capability checks on bulk trashing and restoring orders.
  • Orders: Improved the capability and input checks on manual order creation.
  • Orders: Improved how the order receipt handles pending email verification.
  • Orders: Tightened how the receipt shortcode resolves which order to display.
  • PayPal: Site Health now correctly reports the connection status for stores still on PayPal Commerce v2.
  • PayPal: Added additional verification before a refund is sent to PayPal.
  • PayPal: Fixed refunds failing for stores still connected with PayPal Commerce v2.
  • PayPal: Strengthened the checks on the PayPal return URL before a purchase session is created.
  • PayPal: Added additional verification to the PayPal webhook sync action.
  • PayPal Standard: Improved the verification of incoming IPN messages.
  • PayPal Standard: Improved how gateway messages are stored in order notes from PayPal disputes.
  • Reports: Improved the performance of the reports screens.
  • Reports: Improved how the discount usage chart matches a discount code.
  • Stripe: Fixed free trial subscription checkouts failing the amount check on Card Elements.
  • Stripe: Prevented duplicate charges when paying with Stripe Payment Elements.
  • Stripe: Added additional verification to the Stripe Connect completion step.
  • Stripe: The Elements Mode setting is now visible to stores still using Card Elements.
  • Dev: Email tags are now defined in a registry of individual tag classes. edd_add_email_tag() and the edd_email_tags filter are unchanged, and edd_email_tag_billing_address() is deprecated.
  • Dev: Updated Action Scheduler to 4.1.0.
  • Dev: New internal hooks use a slash delimited namespace (edd/domain/event). No existing hook names changed.
  • Dev: Consolidated the dynamic action routers into a single class, and added the edd/actions/router/blocked_hooks filter for controlling which hook names the routers will dispatch.
  • Dev: Added the edd/logs/file_downloads/columns and edd/logs/file_downloads/row filters to the file download logs table.
  • Dev: Download history export rows now carry the log ID.
Version 3.7.0 — August 14, 2026
  • NEW: Checkout – The block editor checkout now supports customization with inner blocks.
  • NEW: Checkout – New composable checkout widgets for finer control of the Elementor checkout.
  • NEW: Stripe – Added support for UPI payments.
  • Admin: Fixed compatibility with WordPress 7.1 for admin list tables and bulk invoice generation.
  • Admin: Prevented EDD’s admin styles from overriding other plugins’ meta box styling in the block editor.
  • Admin: Added a spam-protection recommendation to the Misc settings.
  • Admin: Changed the telemetry opt-in to a toggle.
  • Checkout: Updated the checkout loading indicator.
  • Checkout: Updated the shortcode checkout to use the same address fields as the block checkout.
  • CLI: Fixed detection of available EDD and extension updates via WP-CLI.
  • Discounts: Fixed preset discount links losing the coupon when a cart hook removed items during add-to-cart.
  • Downloads: Hardened redirect handling during file downloads.
  • PayPal: Improved compatibility with staging and cloned sites.
  • PayPal: Improved PayPal Connect reliability.
  • PayPal: Improved the Apple Pay domain registration process.
  • PayPal: Improved compatibility with PayPal’s brand name attribute.
  • PayPal: Skipped fetching the Fastlane token on non-checkout pages.
  • PayPal: Improved the PayPal Connect buttons.
  • PayPal Standard: Improved legacy IPN handling.
  • Square: Fixed the checkout button staying disabled for cards from countries where Square hides the postal code field.
  • Stripe: Improved error message handling for failed payments.
  • Stripe: Updated the “Connect with Stripe” button to match Stripe’s current branding.
  • Stripe: Added an admin notice for stores still using the legacy card elements.
  • Stripe: Rebranded the iDEAL gateway.
  • Dev: Replaced the legacy browser-detection library with modern user-agent parsing.
  • Dev: Improved filesystem handling to better match WordPress core conventions.
  • Dev: Fixed exception handling when registering service providers.
  • Dev: Declared edd-tom-select as an explicit dependency of the admin scripts.
  • Dev: Centralized request-context detection (cron, AJAX, REST).
  • Dev: Updated blocks script handling and asset building.
  • Dev: Migrated cart events to native CustomEvents.
  • Dev: Switched Mozart to a global install for build stability.
  • Dev: Updated the minimum requirements to PHP 8.0 and WordPress 6.7.
  • Dev: Registered EDD blocks as a metadata collection.
  • Dev: Addressed a WordPress 6.6 deprecation (PluginPostStatusInfo).
Version 3.7.0 — August 14, 2026
  • NEW: Checkout – The block editor checkout now supports customization with inner blocks.
  • NEW: Checkout – Import ready-made checkout templates in Elementor.
  • NEW: Checkout – New composable checkout widgets for finer control of the Elementor checkout.
  • NEW: Stripe – Added support for UPI payments.
  • Accessibility: Improved the invoice accent color contrast to meet WCAG AAA.
  • Admin: Fixed compatibility with WordPress 7.1 for admin list tables and bulk invoice generation.
  • Admin: Prevented EDD’s admin styles from overriding other plugins’ meta box styling in the block editor.
  • Admin: Added a spam-protection recommendation to the Misc settings.
  • Admin: Removed the “New” indicator from Cart Recovery.
  • Admin: Enabled Abandoned Cart Recovery by default for new installations.
  • Admin: Changed the telemetry opt-in to a toggle.
  • Checkout: Updated the checkout loading indicator.
  • Checkout: Updated the shortcode checkout to use the same address fields as the block checkout.
  • CLI: Fixed detection of available EDD and extension updates via WP-CLI.
  • Discounts: Fixed preset discount links losing the coupon when a cart hook removed items during add-to-cart.
  • Downloads: Hardened redirect handling during file downloads.
  • Licenses: Hardened the display of license activation error messages.
  • PayPal: Improved compatibility with staging and cloned sites.
  • PayPal: Improved PayPal Connect reliability.
  • PayPal: Improved the Apple Pay domain registration process.
  • PayPal: Improved compatibility with PayPal’s brand name attribute.
  • PayPal: Skipped fetching the Fastlane token on non-checkout pages.
  • PayPal: Improved the PayPal Connect buttons.
  • PayPal Standard: Improved legacy IPN handling.
  • Square: Fixed the checkout button staying disabled for cards from countries where Square hides the postal code field.
  • Stripe: Improved error message handling for failed payments.
  • Stripe: Updated the “Connect with Stripe” button to match Stripe’s current branding.
  • Stripe: Added an admin notice for stores still using the legacy card elements.
  • Stripe: Rebranded the iDEAL gateway.
  • Taxes: Corrected legacy VAT rates on initial EU VAT activation.
  • Taxes: Added graceful degradation for EU VAT validation when the VIES service is unavailable.
  • Dev: Replaced the legacy browser-detection library with modern user-agent parsing.
  • Dev: Improved filesystem handling to better match WordPress core conventions.
  • Dev: Fixed exception handling when registering service providers.
  • Dev: Declared edd-tom-select as an explicit dependency of the admin scripts.
  • Dev: Centralized request-context detection (cron, AJAX, REST).
  • Dev: Updated blocks script handling and asset building.
  • Dev: Migrated cart events to native CustomEvents.
  • Dev: Switched Mozart to a global install for build stability.
  • Dev: Updated the minimum requirements to PHP 8.0 and WordPress 6.7.
  • Dev: Registered EDD blocks as a metadata collection.
  • Dev: Addressed a WordPress 6.6 deprecation (PluginPostStatusInfo).
  • Dev: Changed the weekly pass check to use the weekly pro hook.
Version 3.6.9.1 — July 27, 2026
  • Admin: Hardened the display of payment gateway error and API request log messages.
  • Imports: Improved hardening and validation of uploaded import files.

Version 2.3.5 — July 13, 2026
  • Admin: Fixes a style dependency for the content restriction metabox.
  • Admin: Fixes an issue which could prevent a previously selected download being set as selected in the content restriction metabox.
Version 2.13.13 — July 1, 2026
  • Compatibility – Content Restriction: Fixed an issue that prevented admins from being able to view content restricted by the shortcode.
  • Emails: Admins can now be notified when a renewal payment fails.
  • Stripe: Prevent an issue that resulted in a PHP notice in the renewal webhooks.
  • PayPal: Improve the renewal date handling for vaulted PayPal subscriptions.
  • Dev: Clean up the unneeded renewal reminder logs that were migrated to EDD’s log tables.

Version 0.2.0 — June 29, 2026
  • Updates: Fixed updates for users without an EDD Pro Pass (one-time manual update required)
  • Emails: Email tags are now integrated with the EDD Email Editor.

Version 3.9.7 — June 29, 2026
  • Blocks: NEW license renewal block added, with options to show a user’s current licenses for easier renewal handling.
  • Blocks: NEW license management block added.
  • Accessibility: Headings on the license management shortcode have been updated.
  • Admin: The licenses admin table counts could be incorrect when filters were applied.
  • Admin: The licenses admin table filters now support individual product variations.
  • API: Improved license checks for API requests.
  • Database: The legacy database class has been updated for better cache management.
  • Messaging: Error messaging has been updated to follow EDD core practices.
  • Missing Licenses: In some cases, the tool could fail to create missing child licenses for a bundle.
  • Missing Licenses: The missing license tool could incorrectly decide that processing was complete when more orders needed to be retrieved.
  • Orders: Renewal discounts are now recorded as order adjustments.
  • Renewals: Improved email matching when enforced.
Version 0.1.0 — June 22, 2026
  • Initial Release

Version 2.13.12 — June 18, 2026
  • Admin: Added a link to the original transaction on the subscription details screen.
  • Integrations: Fixed the expiration calculation when upgrading from a non-recurring licensed product to one with a subscription.
  • Integrations: Updated the license key details on the license management page.
  • PayPal: Added support for new PayPal integration.
  • Stripe: Fixed the payment method update button.
  • Subscriptions: Ensured that cancelled subscriptions with a refund do not receive expiration notices.
  • Dev: The new minimum version requirements are PHP 7.4, WordPress 6.2, and Easy Digital Downloads 3.6.2.

Popular Resources

Start selling today!

Join over 50,000 smart store owners, and start using the easiest way to sell digital products with WordPress.

Copyright © 2025 Sandhills Development, LLC