Share

Virtual Products Management Pro - Downloadable Files per Combination with Versions and GitHub Sync

Price: €49.99
No tax

PrestaShop 9 treats Virtual product and Product with combinations as mutually exclusive — so a product sold in several editions or licence tiers cannot normally carry a file per variant. This module manages downloadable files independently of that restriction, giving every combination its own file, version number and changelog. Manage the whole catalogue from one page instead of opening products one at a time, link a combination to a GitHub repository and pull the file, version and changelog with one button, and email past buyers when a new version lands. For PrestaShop 1.7 – 9.

Share
Compatible with:
PS 1.7 PS 8 PS 9
Available in:
Dutch Dutch English English French French German German Italian Italian Polish Polish Spanish Spanish Turkish Turkish
Downloaded 103 times by customers like you

The PrestaShop 9 problem this exists to solve

In PrestaShop 9, "Virtual product" and "Product with combinations" are mutually exclusive product types. That is fine until you sell software, e-books, samples or licences in more than one variant — Standard and Pro, single-seat and team, Windows and macOS — because the moment you need combinations, the built-in virtual-product file field is gone.

This module manages downloadable files outside PrestaShop's virtual-product system entirely. Create the product as Product with combinations, define the variants, and upload a file to each one. Every combination gets its own file, its own version number and its own changelog.

One page instead of one product at a time

Files for the whole catalogue live on a single screen. Expand a product, see its combinations, upload or replace a file, set the version, write the changelog. Seven counters across the top tell you where you stand at a glance — virtual files, products, combination files, simple files, missing files, total downloads and customers — so a product whose file never got uploaded shows up in red there rather than being discovered by a customer.

Each file also carries its own download limit, validity in days and expiry date, so a licence can be time-boxed rather than handed over indefinitely. Any downloadable format works: ZIP, PDF, MP3, FLAC, EPUB, or anything else you sell.

Link a combination to GitHub and stop uploading

Every combination works in one of two modes: Upload File, or GitHub Repository. Switch it to GitHub, give it an owner/repo and optionally a branch or tag, and one Fetch / Sync from GitHub button pulls the file, the version and the changelog together — packaging the release, extracting the version, and reading the recent commit subjects server-side, rather than just filling a box in your browser.

Private repositories are supported through a Personal Access Token. Set a default token once for the whole shop, and override it per product where a different repository needs different credentials.

A Recent Sync Log table records what actually happened per run — product, combination, status, message and date — showing the old → new version transition, or explicitly "no version change" when a run found nothing. A Last automatic run timestamp sits above it, so you can tell at a glance whether the scheduled sync has genuinely fired or has never run at all.

One honest caveat: the hourly sync rides on PrestaShop's own cron-task system, which needs a real external cron on your server to trigger it. Until that is wired up, the manual Fetch / Sync button does the same job on demand — and the Last automatic run line will keep saying never, which is exactly the point of showing it.

Tell your customers there is an update

Each combination has its own Notify Customers button, which emails the customers who bought that product to tell them a new version is available. For anything sold as a licence or a tool, that single button is the difference between a customer who upgrades and one who forgets they own it.

Customers get a proper downloads area

Buyers see their files in their account and on the order detail page, with the version they are entitled to. It is the ordinary PrestaShop account experience, extended to cover per-combination files that the core cannot represent.

What version 1.5.x fixed

Version 1.5.2 fixed a set of real defects worth knowing about, because they are the kind that hide for months.

The changelog field could never be updated by sync. Both sync paths omitted changelog from their UPDATE statement, so once a combination's row existed the field froze at whatever had last been typed by hand — and neither path fetched changelog content from GitHub server-side at all. Sync now pulls the resolved ref's recent commit subjects itself and saves them in the same operation, on both the manual and automatic paths.

The manual and automatic sync paths had diverged. The manual endpoint reimplemented the GitHub calls, the zip handling and the version extraction independently, so a fix applied to one silently did not apply to the other. The manual path now delegates to the shared sync class — while still taking the repo and ref from the form you are looking at, so try before you save keeps working.

Hourly sync always logged "success" with no detail, even when nothing changed, which made the log useless for telling a quiet run from a silent failure. And fresh installs never registered the cron hook — only the configuration page's self-heal block did, so the hourly sync could not fire until an admin happened to open that page. Install now registers it directly.

One thing to plan for

Because the product is not flagged as Virtual in PrestaShop, the standard shipping calculation still applies to it. To keep these products free of shipping charges, assign them to a carrier with a zero-cost / free-shipping rule. It is a one-time setup step, and the module's own configuration page says so plainly rather than leaving you to discover it on a live order.

Compatibility

PrestaShop 1.7, 8 and 9, in eight languages: Dutch, English, French, German, Italian, Polish, Spanish and Turkish. Multistore aware. Uninstalling removes the module's data and the virtual files it manages, which the uninstall confirmation states outright — so take a copy first if you intend to reinstall.

Frequently asked questions

Why do I need this on PrestaShop 9?

Because PS 9 makes Virtual product and Product with combinations mutually exclusive. If you sell a downloadable product in several editions or tiers, the core cannot give each variant its own file. This module can.

Can each combination have a different file and version?

Yes — its own file, its own version number and its own changelog. That is the point of the module.

How does the GitHub sync work?

Switch a combination to GitHub Repository mode, give it an owner/repo plus an optional branch or tag, and press Fetch / Sync from GitHub — it pulls the file, version and changelog in one go. Private repositories work through a Personal Access Token, set once as a shop default and overridable per product. The hourly automatic sync additionally needs PrestaShop's cron task runner driven by a real cron on your server.

Will my customers know when I ship an update?

Yes, if you press Notify Customers on the combination — it emails the customers who bought that product.

Will these products be charged shipping?

They can be, because PrestaShop does not see them as virtual. Assign them to a carrier with a free-shipping rule and the charge disappears.

What file types are supported?

ZIP, PDF, MP3, FLAC, EPUB and any other downloadable format.

How do I spot a product whose file is missing?

The counters at the top of the page include a Missing Files figure, so a gap shows up there rather than in a customer complaint.

What happens if I uninstall?

The module's data and the virtual files it manages are deleted — the confirmation says so. Keep a copy of anything you will need again.

  • Brand
  • Reference
    18561
  • EAN13
    8691246218513

  • Compatibility
    Prestashop 1.6
    Prestashop 1.7
    Prestashop 8
    Prestashop 9
  • Available Module Translations
    Dutch
    English
    French
    German
    Italian
    Polish
    Portuguese
    Spanish
    Turkish

Compatibility
PS1.7 PS8 PS9
Translations
Dutch Dutch
English English
French French
German German
Italian Italian
Polish Polish
Spanish Spanish
Turkish Turkish
Demo
Login: demo@demo.com / Demodemo123!
Developer
MEG Venture MEG Venture

Comments (6)

(4.7)

4 other products in the same category

Share
Loading...

We use cookies to give you the best shopping experience. By clicking Accept, you agree to their use as described in our privacy policy.

Learn more
Back to top