Digital Downloads
Sell digital files (PDF, ZIP, video, software) from your Contensio site. Stripe Checkout handles payments, download links are delivered by email, and each purchase can optionally include an auto-gener
About this plugin
Digital Downloads
Sell digital files (PDF, ZIP, video, software) from your Contensio site. Stripe Checkout handles payments, download links are delivered by email, and each purchase can optionally include an auto-generated license key.
Features
- Products - create digital products with title, description, cover image, and price
- Files per product - attach multiple files (external URL or local private storage)
- Stripe Checkout - redirect buyers to Stripe-hosted checkout; webhook confirms payment
- Free products - skip Stripe entirely for price = 0 products
- License keys - optional auto-generated XXXX-XXXX-XXXX-XXXX key per purchase
- Download limits - configurable per-product download attempt limit (0 = unlimited)
- Secure tokens - time-limited download tokens sent by email; expire after a configurable TTL
- Order management - admin dashboard with revenue stats, order list, and detail view
- Download log - per-order history of every file download (file, IP, timestamp)
Setup
- Enable the plugin in the admin Plugins panel.
- Go to Digital Downloads > Settings and enter your Stripe API keys.
- Create a Stripe webhook pointing to
https://yoursite.com/digital-downloads/webhookand add the webhook secret to settings. Subscribe the webhook to thecheckout.session.completedevent. - Create your first product under Digital Products.
Embedding a buy button
In any Blade template or page partial:
@include('contensio-digital-downloads::partials.buy-button', ['slug' => 'my-ebook'])
Or pass the model directly:
@include('contensio-digital-downloads::partials.buy-button', ['product' => $product])
Storage types
Each file attached to a product uses one of two storage types:
- URL - the download controller redirects to the URL. Suitable for CDN-hosted or S3 files that have their own access control.
- Local - the file is stored on the
privatestorage disk and streamed through PHP on download. Suitable for files that must not be publicly accessible.
License
AGPL-3.0-or-later. See LICENSE file.