Digital Product Delivery

bencurthoys Sep 18, 2020

More and more customers are using the system to allow themselves to sell and deliver digital content.

That is - making video streams and other things available only to people who have bought tickets, or people who have bought memberships.

For example, the Two Moors Festival has a video of a performance which is available to members only (with more videos to come)

The Cockpit have interactive broadcasts

and The Reader have online children’s shows

What all these approaches have in common is that the media is embedded in the “Folder Web Copy”, and then access is restricted to that folder.

The Two Moors Festival version - where access to the video is restricted to members - is the simplest. We just set up on sale schemes which make the folder visible to members only. The festival are using Vimeo to host the video, which allows them to control where it can be viewed and embedded

so someone with access to the video can’t dig the URL out of the page source and repost it on Facebook.

Until the latest version, folders which were not on sale - because of the on sale scheme or even because they were inactive - could still be viewed by someone with the direct URL. This was because we wanted Expired Content to tell be accessible by search engines for SEO. Therefore, in the latest version we have made an explicit “visible if you have the direct link” option in on-sale schemes.


“Visible” means “can be seen with the direct link”, and there is a default rule added to all on-sale schemes that makes them always visible. This rule should be removed from on-sale schemes protecting folders with digital products, so that they then can’t be accessed if the direct link is shared. If the folder is not “visible” and you attempt to view it as a not-logged-in session, you are redirected to the login screen. But if you are logged in and still don’t have permission to see it, you just get a “forbidden” message.

So. All of the above works ok. But, if you had hundreds of different videos you wanted to protect, doing them with user statuses would be annoying and fiddly. The system is built to handle dozens of different membership statuses, but not hundreds. What we want is something that’s linked directly to the product being purchased, not via a user status.

We’ve had a think, and our conclusion is that the best way to handle this is via the existing “delivery” mechanism. When you buy a ticket, we deliver it by sending you an email with a pdf attachment, or posting you a ticket. When you buy a digital product, getting it to you - enabling you to watch the stream - should go through the same “delivery” mechanisms. We normally attach PDF documents to emails when we send them, but we already have the functionality to create PDF documents and save them in the database to be downloaded later, which is useful when the documents are too large for an email. We’re going to use this as a template for a new delivery method which creates some HTML when the product is purchased, and then that HTML - saved in the database with a unique id, possibly different for every user - can be viewed on a unique link. This way we don’t have to add a new thing to the system (“protected digital content”) which looks almost exactly like things we already have (“folders” and “on sale schemes”) but which works slightly differently - that is always a recipe for confusion. Instead, we can extend existing functionality in a way that gives us maximum flexibility.