Lurox 1.0 is live — visual page building for Magento 2. Read the guide
Magento 2 · Product content

Datasheets, manuals and warranties — right there on the product page.

Attach the documents your buyers keep asking for to any product, category or CMS page. Store a file once and reuse it everywhere, decide who is allowed to download it and for how long, and see exactly what gets downloaded. Attaching files to products is free. Reuse, scoping, the secure-download suite, analytics and the API are Pro.

Product · category · CMS one file, assigned anywhere Limits + expiry + log the secure set nobody else bundles Luma · Hyvä · Lurox static-first, works without JavaScript Perpetual licence one-time, with updates — not a rental
A Magento 2 product page showing a documents tab with a datasheet, a user manual and a warranty certificate, each with a file-type icon and size
Magento 2.4.x · PHP 8.4Luma · Hyvä · LuroxSelf-hosted — your files stay on your server30-day money-back guarantee
Attach to products — free
file-type icons, file size, tab or content block
One file, many places
assign a stored file to products, categories and CMS pages (Pro)
Downloads you control
per-customer limits, expiry dates and a login gate (Pro)
Never a raw media URL
every download is served by a controller with a traversal guard

The documents exist. They’re just not where the buyer is.

Every considered purchase has paperwork behind it — a spec sheet, an installation guide, a compliance certificate, a size chart, a warranty. Magento gives you nowhere to put it. So it ends up somewhere else: a Dropbox link that rots, a media URL pasted into the description that anyone can share, or an inbox where the same “can you send me the manual?” email arrives every week.

Each workaround costs something specific. The pasted media URL is a file anyone can hotlink and you can never withdraw. The Dropbox link breaks the moment somebody reorganises a folder. The inbox answer is a person doing a job a page should do — and it never shows up in a report, so nobody can see how much of it is happening.

The fix is not “upload a file”. It is a document library your catalogue can point at: one stored copy, assigned wherever it belongs, with rules about who may take it and a record of who did.

Three things it does that a file upload does not.

Store the file once, use it everywhere

One installation manual can belong to forty products, a category and a support page at the same time. It is stored once and assigned as many times as you like, so updating the file updates it in every place at once — there are no copies to chase.

Decide who gets it, and for how long

Restrict a document to particular customer groups or store views, require a login, cap how many times one customer can download it, and give it an expiry date. Downloads are served by a controller, never as a raw media URL, so a shared link cannot outlive the rule.

See what actually gets downloaded

Every download is logged with the file, the customer, the page it came from and a hashed IP. That turns “we should probably put the manual up” into a number you can act on — and shows which documents are doing the selling.

A Magento 2 product page with a Documents tab listing a datasheet, a manual and a warranty, each with a file-type icon and file size

The documents show up where the buyer already is.

Attached files render on the product page as a tab or a content block — your choice, set once in configuration. Each row shows a file-type icon, the label you gave it and the file size, so a buyer knows what they are about to open before they click.

The template is static-first: it is real HTML that renders with JavaScript switched off, then layers Alpine on top where a theme provides it. That is why it looks the same on Luma, on Hyvä and on Lurox instead of needing a per-theme port.

Read the guide
The Magento 2 admin file grid for Product Attachments, listing stored files with label, type, size and status

A file library, not a pile of per-product uploads.

Files live in their own grid with their label, type, size, group and status. From there a single file is assigned to as many products, categories and CMS pages as you need — the file is stored once and the assignments point at it.

That is the difference that shows up two years in. When the safety notice changes, you replace one file and every product carrying it is correct immediately. With per-product uploads you would be hunting duplicates.

Read the guide
The Magento 2 admin form for an attachment, showing customer-group visibility, store-view scoping, login requirement, maximum downloads, expiry date and the list of assignments

Who can download it, how often, and until when.

One screen carries the whole rule set for a document: which customer groups may see it, which store views it belongs to, whether a login is required, how many times a single customer may download it, and the date it stops being available.

The limits are enforced where it matters — in the download controller, against the log — not by hiding a link. A URL somebody saved last month still has to pass every check today. Per-customer limits, expiry dates and access logging as one bundle is rare, and where you do find it, it sits behind a licence you have to keep renewing.

Read the guide
The Product Attachments section on a Magento 2 product edit page, showing the documents currently attached to that product

Attach a document without leaving the product.

Merchandisers work on the product edit page, so the attachment controls are on the product edit page — a section on the product form where you pick documents from the library, set their order and see what is already attached.

Nobody has to learn a second screen or remember where the library lives to add a datasheet to a new SKU.

Read the guide
The Attachment Groups admin grid in Magento 2, listing named document groups with their sort order and active status

Ten documents, sorted into the sections a buyer expects.

Once a product carries more than a handful of files, a flat list stops helping. Groups let you sort documents into named sections — Manuals, Certificates, Safety — each with its own order and its own icon, so the storefront list arrives organised instead of alphabetical by accident.

Groups are managed in their own admin screen and apply wherever the files are shown.

Read the guide
The Product Attachments usage report in the Magento 2 admin, listing downloads by file, customer, source page and date

Which documents are doing the selling.

Every download is recorded: the file, the customer, the page it was requested from, and a SHA-256 hash of the IP rather than the address itself. The usage report turns that into something you can read — what gets taken, from where, and how often.

It is also the enforcement record. Per-customer download limits are counted against this log, so the report and the rules are the same data rather than two systems that can disagree.

Read the guide
The Product Attachments import and export screen in the Magento 2 admin

Six hundred datasheets, by CSV.

A catalogue with a document per SKU is not a job for a form. Import brings attachments and their assignments in from CSV and updates what is already there; export takes the current state back out — for a bulk edit in a spreadsheet, or to move a set of documents between environments.

This is the band that decides whether a large catalogue can adopt the module at all.

Read the guide

Every screen, from the storefront to the report.

The storefront documents tab on a Magento 2 product page
The storefront list — free, and it renders without JavaScript.
The Product Attachments admin file grid
The file library — store once, assign anywhere.
The attachment form showing scoping and secure-download settings
Visibility, limits, expiry and assignments on one form (Pro).
The Product Attachments section on the product edit page
Attach from the product edit page itself.
The Attachment Groups admin grid
Groups — Manuals, Certificates, Safety (Pro).
The Product Attachments usage report
The usage report — and the enforcement record (Pro).
The Product Attachments import and export screen
CSV import and export for large catalogues (Pro).

How to attach a PDF to a product in Magento 2

  1. Upload the document once. In Content › Product Attachments › Files, add a file and give it the label a customer should see — “Installation manual (EN)”, not “manual-v3-final.pdf”.
  2. Assign it to the products that need it. Either from the file itself, or from the Product Attachments section on the product edit page.
  3. Choose how it appears. In Stores › Configuration › Content › Product Attachments, pick a Product Tab or a Content Block, set the tab label, and decide whether to show file sizes and type icons.

That is the whole free path. Reuse across categories and CMS pages, download rules and analytics are Pro, and none of them change these three steps.

How to show a datasheet on a category or CMS page

  1. Open the file in the Product Attachments library and add an assignment.
  2. Pick the target — a category, or a CMS page — instead of a product. The same stored file can hold assignments of all three kinds at once.
  3. Place it if you need it somewhere specific. The standalone widget drops the file list into any layout position or CMS block, so a buying-guide page can carry the same documents as the products it discusses.

Because the file is stored once, the category listing and every product using it stay in step — replace the file and all of them update together. Category and CMS assignment, and the widget, are Pro.

Why this one.

The secure set, as one bundle

Per-customer download limits, expiry dates and access logging together. The nearest comparable secure set costs $149 for year one and $90 every year after that; the $299 alternative does not bundle it at all. Ours is included, once.

A free tier that is not a trial

Attaching documents to products — icons, file sizes, tab or block, controller-served downloads — is free and stays free. Every paid rival in this category has no free tier; the free ones stop at attach-to-product with no support behind them.

Bought once, not rented

One-time licence per website with twelve months of updates. Others charge a yearly prolongation to keep updating, and a subscription lapse elsewhere can cost you the extension outright. Yours keeps working either way.

Your files stay on your server

No cloud storage, no third-party document service, no external SDK. Files sit in your Magento media directory and are served by a controller with a path-traversal guard — so nothing leaves your infrastructure and nothing can be hotlinked around the rules.

Free vs Pro

The free tier is the whole attach-to-product workflow, not a countdown. Pro adds reuse, control and measurement.

CapabilityFreePro — $299
Attach files to products
File-type icons + file size
Product tab or content block
Controller-served downloads (never a raw media URL)
Admin file grid
Category & CMS-page attachments
File reuse — one file, many assignments
Customer-group visibility
Store-view scoping
Per-customer download limits + expiry dates
Download analytics + access log
Documents in the customer account
Attach to order emails by status
File groups
Web-link (URL) attachments
CSV import / export
Standalone widget
REST + GraphQL

If a Pro licence lapses, features that add capability switch off — but rules that restrict access stay enforced. A lapsed licence can never widen who can reach a document.

Pricing

Free
$0
forever — not a trial
Attach documents to products with type icons, file sizes and a tab or content block, served securely by a controller. Includes the admin file grid.

Get it free

Pro
$299
one-time, per website · 12 months of updates
Everything in Free, plus category and CMS attachments, file reuse, customer-group and store-view scoping, download limits and expiry, analytics, customer-account documents, order-email attachments, groups, web links, CSV import/export, the widget, and REST + GraphQL.

Buy Pro — $299

30-day money-back guarantee · perpetual licence — the module keeps working after the update window ends.

Specifications

Platform

Magento 2.4.x Community Edition, PHP 8.4.

Themes

Luma, Hyvä, Lurox or any modern theme. Static-first markup — renders with JavaScript disabled.

File types

A configurable allow-list. Ships permitting PDF, DOC, DOCX, XLS, XLSX, ZIP, PNG and JPG; add whatever else you need.

File size

A configurable maximum, set to 10 MB out of the box.

Licensing

One licence per website. Perpetual, with 12 months of updates.

Integration

REST and GraphQL endpoints, a standalone widget, and CSV import/export (Pro).

Release history

Actively maintained — every entry maps to a real release.

v1.0.0 · 28 July 2026
Initial release. Free: attach files to products, file-type icons and sizes, product tab or content block, controller-served downloads with a path-traversal guard, admin file grid. Pro: category and CMS-page attachments, file reuse across assignments, customer-group and store-view scoping, the secure-download suite (per-customer limits, expiry dates, login gate, hashed-IP access log), download analytics, documents in the customer account, order-email attachments by status, file groups, web-link attachments, CSV import/export, the standalone widget, and REST + GraphQL.

Questions merchants actually ask

Yes. Attaching documents to products — with file-type icons, file sizes, your choice of a product tab or a content block, and downloads served securely by a controller — is free and stays free. It is not a trial and it does not expire. Reuse across categories and CMS pages, access rules, analytics and the API are Pro at $299 one-time.

Yes, on Pro. That is the point of the library: a file is stored once and assigned to as many products, categories and CMS pages as you like. Replace the file and every place it appears is updated at once — there are no per-product copies to track down.

To a real extent, yes. Downloads are never raw media URLs — they go through a controller that re-checks the rules on every request. On Pro you can require a login, limit a document to particular customer groups or store views, cap how many times one customer may download it, and give it an expiry date. A link somebody saved last month still has to pass all of those checks today.

Whichever you allow. The allow-list is a configuration field: it ships permitting PDF, DOC, DOCX, XLS, XLSX, ZIP, PNG and JPG, and you can add or remove types. There is also a maximum file size, set to 10 MB by default.

The same module. The storefront template is static-first — plain HTML that renders correctly with JavaScript switched off — and layers Alpine on top where the theme provides it. That means it works on Luma, Hyvä, Lurox and any other modern theme with no theme-specific build.

No. Pro includes CSV import and export for attachments and their assignments, so a large catalogue can be loaded in one pass and edited in a spreadsheet afterwards. Export also gives you a clean way to move a document set between staging and production.

No. It is a one-time licence per website with twelve months of updates. When the update window ends the module keeps working exactly as it is — renewing only puts you back on the latest version. That is deliberately different from others, who charge a yearly prolongation to keep the updates coming.

Need documents to behave a particular way in your store?

Out of the box the module attaches files to products, categories and CMS pages, reuses one file anywhere, controls who may download it and for how long, and reports on what gets taken. If you need something specific — a document set driven by a product attribute, a particular customer-group rule, or a bulk migration from wherever your files live now — tell us about your store and we will scope it, usually within one business day.

We build these on top of the Product Attachments module, so you keep the whole toolkit and add exactly what you need.

We'll only use your details to reply to this enquiry.

Put the manual where the buyer is looking.

Attach documents to products for free, and upgrade when you need one file in many places, rules about who downloads it, and a report of what they took. Self-hosted, static-first, and yours to keep. Pro is $299 one-time.

Buy Pro — $299