Digital Product extension for Commerce

Last year we had a chat with Tony Klapatch, the original developer of the Digital Product extension for Commerce. As that was no longer working with Commerce 1.1 or up, but also a very common ask from our clients, Tony was kind enough to hand over the keys so we could help in getting that up and running.

We've since released a number of dev builds and new documentation, and are today sharing the first stable build of the Digital Product extension, v2.0. 

Special shout-out to the handful of clients that helped us with testing the dev builds over the past few months and provided valuable feedback.

This 2.0 release incorporates fixes and improvements, and we have plans for more features to be added in the future. The current version requires either working with ACLs to lockdown resource access, or having files publicly available and only restricted by their filenames not being known, so one of the things we want to add is a way to sell access to specific resources without ACLs, and actually restricted file downloads too. 

This extension is now also considered an official extension, with a new set of documentation and questions about it covered by the standard support that comes with Commerce. Hopefully this move will empower you to do more with Commerce, including in the digital space.

Tony, thank you so much for all your work on your Commerce extensions!

Changelog for 2.0.0-pl

New features:

  • Add digitalproduct.get_user_files snippet to list users' previously purchased digital products. Uses the same data structure as the thank you page and order messages, plus the order the product was purchased in.
  • Digital product download links are now available in order messages as well, same format as for the thank you page


  • Bump minimum requirements to Commerce 1.2.0-rc3+, MODX 2.7+ and PHP 7.1+
  • Simplify product form a bit, more logical layout for editing the digital options


  • Fix digital product information (resource/download links) not being available on the thank you page
  • Switch default engine from MyISAM to InnoDB
  • The "Digitalproduct Product" class is now hidden, with the shipment approach it's no longer needed to use the separate product type
  • Fix incorrect composite relation from Digitalproduct > DigitalproductFile