=== FileDeck – Document Library & Download Manager ===
Contributors: josephlines
Tags: document library, download manager, document gallery, document search, client portal
Requires at least: 6.1
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 2.54.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Document libraries, tracked downloads and client portals — show any files in searchable table, grid, gallery or folder layouts.

== Description ==

FileDeck is a WordPress plugin for documents, downloads and client portals. It turns file collections into a fast, searchable document library with table, grid, gallery and folder layouts; tracks and protects every download; and gives each client a private document portal. List policies, guides, minutes, forms, resources, or any downloadable files — a PDF library, an Office-document archive, a mixed media collection — with instant search that filters as you type, and have a professional document library on your site in minutes.

**See it in action:** try the [live demo](https://www.getfiledeck.com/demo/) — a real 66-document library, no signup — or read the [documentation](https://www.getfiledeck.com/docs/).

**A free version that's actually usable.** Every layout, every filter, and the Gutenberg block are free, and you can list as many documents as you like. Nothing essential is locked away just to force an upgrade.

= What you won't find elsewhere =

* **Full-text document search** – Pro searches *inside* your PDFs, Office and text files (with optional OCR for scanned documents) — on your own server, so documents never leave your site
* **One-click migration** – switching from Download Monitor, Simple Download Monitor, WordPress Download Manager, Document Library Lite/Pro, Shared Files, Simple File List, Advanced File Manager, BSK PDF Manager, Download Attachments, WP Customer Area or FileBird? FileDeck imports your whole library straight from your own database — no export files, no column mapping
* **Large file uploads** – drawings, scans and video upload in resumable chunks, so your host's upload limit is no longer the ceiling and a dropped connection resumes instead of restarting
* **Library event webhooks** – a signed JSON POST when a document is published, updated, retired or deleted; point Zapier, Make or your own system at it
* **Client areas** – give each client a private document portal with uploads and email notifications

= Free features =

* **Four layouts** – searchable table, responsive card grid, a thumbnail-forward document gallery, or collapsible folders by category
* **Instant search** – filters as you type, no page reloads
* **Filter dropdowns** – categories and tags, plus click-a-category filtering
* **Sortable columns** – title, date, size, type, downloads, and more
* **Unlimited documents** – no cap; search scales automatically as your library grows
* **Download tracking** – per-document download counts
* **Force download or open in browser** – choose per document whether the button saves the file or displays it in the browser, instead of leaving it to each visitor's browser defaults
* **Gutenberg block + shortcode + Elementor, Bricks & Divi** – native block with live preview, a `[filedeck]` shortcode, and native Document Library elements for Elementor, Bricks and Divi — all with the same layout, filter and column options
* **Translation-ready** – documents and categories translate with WPML, Polylang and compatible plugins; a bundled `wpml-config.xml` declares exactly how document data behaves (one file, many languages)
* **⌘K command palette** – site-wide quick-search overlay that jumps straight to any document
* **Sidebar widgets & Popular Documents block** – Recent Documents and Top Downloads widgets for any sidebar, plus a Popular Documents block that puts the most-downloaded (or newest) list on any page; access-aware, so restricted documents never show to someone who cannot open them
* **QR codes** – generate a printable QR for any document (offline, nothing leaves your site) for noticeboards and posters
* **Shareable filtered views** – search/filter state lives in the URL with a one-click “copy link”; hover previews show a thumbnail and file details
* **External links** – list documents hosted on Google Drive, Dropbox, SharePoint, or any URL
* **Custom fields & taxonomies** – add any post meta (cf:field) or taxonomy (tax:slug) as a column
* **Document previews** – lightbox preview for PDFs and images, and featured images open in a lightbox from the image column
* **Single document pages** – a clean page with file details and a download button
* **Standalone search & links** – `[filedeck_search]`, `[filedeck_login]`, and `[filedeck_download]` shortcodes
* **Styles to match any theme** – a full design-token system: a "Match my theme" preset that inherits your theme's colours, Minimal/Bordered/Compact presets, a built-in light/dark/auto colour scheme, accent + surface + text colours, plus link styles, custom download-button text, empty messages and pagination — no CSS required, and every element is a `--fdk-*` variable when you want to go further
* **Any file type** – PDF, Word, Excel, PowerPoint, images, audio, video, and more
* **Lightweight** – no jQuery on the frontend; assets load only where a library appears
* **Accessible** – keyboard-sortable columns, ARIA labels, screen-reader friendly

= Switching from another plugin? =

If you're looking for a Download Monitor alternative, a WordPress Download Manager alternative, or a Document Library Pro alternative, FileDeck Pro imports your existing library in one click — documents, nested categories, tags, files, and (where the source records them) download counts and access rules — read straight from your own database. Shared Files libraries import the same way. No export files, no column mapping, safe to re-run, and [we'll help you move free](https://www.getfiledeck.com/switch/) if you'd like a hand.

**Using Simple File List?** It was closed on wordpress.org in July 2026 and no longer receives updates or support. FileDeck imports your entire Simple File List library in one click — files, folders and descriptions — straight from your own database.

= FileDeck Pro =

Upgrade for the features organizations need — from $59/year, and your renewal never increases:

* **Full-text search inside files** – search the text inside PDFs, Office documents and text files (optional OCR makes scanned PDFs searchable too); extraction runs on your own server, and results tell you which page of a PDF the match is on so you can jump straight to it
* **Access control & protected files** – role and password restrictions (on categories or any single document) with a deny-all vault and signed, expiring download links — direct file URLs stop working
* **Client areas** – per-client private portals with front-end submission, moderation and new-document emails
* **One-click migration** – from Download Monitor, Simple Download Monitor, WordPress Download Manager, Document Library Lite/Pro, Shared Files, Simple File List, Advanced File Manager, BSK PDF Manager, Download Attachments, WP Customer Area and FileBird (see above)
* **Automatic PDF thumbnails** – plus Office, audio and video previews on top of the free PDF/image lightbox
* **Document lifecycle** – version history, supersede with evergreen links, review cycles, approval workflow and auto-expiry
* **Downloads toolkit** – email/webhook download notifications, daily quotas, per-document download limits (expire after N downloads), optional Cloudflare Turnstile bot friction, lead capture with Mailchimp/Brevo sync, and multi-select zip downloads
* **Require a form before download** – gate downloads behind Gravity Forms, Ninja Forms, WPForms, Contact Form 7 or any other form plugin you already use
* **Attach documents to a post** – tick documents in the post editor and they list automatically at the end of the page
* **Terms before download** – require readers to accept licence conditions or a disclaimer first, with every acceptance recorded in the activity log
* **Analytics & audit** – activity log with per-document history (now including country, referrer and user agent), analytics dashboard, optional GA4 events, CSV export
* **Search analytics** – popular searches and a content-gap report of searches that found nothing, fed by every search box: library search, the command palette, full-text and AI search
* **Document feedback** – anonymous "Was this helpful?" votes on document pages, with a least-helpful report (off until you enable it)
* **Cloud storage** – browse and attach files from Amazon S3 or any S3-compatible service (Cloudflare R2, Wasabi, DigitalOcean Spaces), plus Dropbox, Google Drive, OneDrive, SharePoint document libraries and Box
* **Publish & embed** – put your whole library on any other website (Wix, Squarespace, Shopify, Webflow, Framer, or a custom front end) with one line of code; embeds show public documents only

Plus custom fields with faceted filtering, CSV import/export, bulk add from the Media Library, change subscriptions, a library health monitor, a GDPR toolkit and more — [see every feature](https://www.getfiledeck.com/features/). An optional AI tier adds records governance — retention schedules, access certification, transmittals, acknowledgment tracking and PDF accessibility screening — plus semantic search, smart collections and "Ask this library". Full pricing: https://www.getfiledeck.com/pricing/

Download Monitor, Simple Download Monitor, WordPress Download Manager, Document Library Pro, Document Library Lite, Shared Files, Simple File List, Advanced File Manager, BSK PDF Manager, Download Attachments, WP Customer Area, FileBird, and FileBird Document Library are trademarks of their respective owners; FileDeck is not affiliated with or endorsed by them.

= Quick start =

1. Install and activate. FileDeck creates a “Document Library” page automatically.
2. Go to **Documents → Add New**, add a title, and attach a file (or paste an external URL).
3. Done — the document appears in your library instantly.

Use the **Document Library block** or the `[filedeck]` shortcode to place libraries anywhere:

`[filedeck layout="grid" category="policies" columns="title,excerpt,size,link" per_page="20"]`

= Shortcode options =

* `layout` – table, grid, gallery, or folders
* `columns` – comma-separated: id, image, title, excerpt, content, categories, tags, date, modified, author, size, type, filename, downloads, preview, link
* `category` – limit to category slugs (comma-separated)
* `per_page` – documents per page
* `sort_by` – title, date, modified, menu_order
* `sort_order` – asc or desc
* `link_style` – button, button_icon, button_icon_only, icon, icon_text, text
* `dl_text` – custom text for the download button/link (default "Download")
* `image_lightbox` – set to 0 to stop featured images opening in a lightbox
* `wrap` – set to 0 to keep every document on a single truncated row
* `scroll_offset` – pixel offset for pagination jumps, for themes with a sticky header

== Installation ==

1. Upload the plugin to `wp-content/plugins/filedeck`, or install it from Plugins → Add New in your WordPress admin.
2. Activate the plugin. A **Document Library** page is created automatically.
3. Go to **Documents** to add your files (from the Media Library or an external URL), and organize them with categories and tags.
4. Add the **Document Library** block to any page or post — or use the `[filedeck]` shortcode — to display your library.
5. Adjust layouts, columns, and styling under **Documents → Settings**.

== External services ==

This plugin can connect to these external services, all only with your opt-in:

**Freemius** — FileDeck uses Freemius to deliver plugin updates, and (for Pro customers) to activate licenses. On activation you are asked to opt in; if you decline, no data is sent and only anonymous update checks are made. If you opt in, Freemius receives basic environment data (site URL, WordPress/PHP versions, active theme/plugins) to power update delivery and diagnostics. This happens when you activate the plugin, opt in, activate a license, or check for updates.
Freemius terms: https://freemius.com/terms/ — privacy policy: https://freemius.com/privacy/

**FileDeck usage ping** — only if you opted in to usage tracking above (and never otherwise), FileDeck sends a small anonymous ping to `https://in.getfiledeck.com/telemetry` once a week to guide the product roadmap. It contains only the plugin/PHP/WordPress versions, the plan tier, a bucketed document count (e.g. "11–50"), a handful of on/off feature flags (search index, OCR, AI mode, subscriptions, sample library used), and how the setup wizard ended (completed, skipped, or dismissed). It never includes document contents, file names, URLs, emails, IP-based profiles, or any personal data. Declining or opting out of Freemius tracking disables it completely, and developers can switch it off with the `filedeck_telemetry_enabled` filter.
FileDeck privacy policy: https://www.getfiledeck.com/privacy/

**Cloud storage (Pro, optional)** — if you connect a cloud provider under Documents → Cloud storage, FileDeck contacts that provider's API using credentials you supply, only to list folders and fetch files you choose. Amazon S3 (`*.amazonaws.com`, or the S3-compatible endpoint you configure), Dropbox (`api.dropboxapi.com`, OAuth via `dropbox.com`), Google Drive (`googleapis.com`, OAuth via `accounts.google.com`), and Microsoft OneDrive and SharePoint Online (`graph.microsoft.com`, OAuth via `login.microsoftonline.com`), and Box (`api.box.com`, OAuth via `account.box.com`; terms: https://www.box.com/legal/termsofservice). Nothing is sent to these services unless you set up a connection.
Amazon S3 terms: https://aws.amazon.com/service-terms/ — Dropbox: https://www.dropbox.com/terms — Google: https://policies.google.com/terms — Microsoft: https://www.microsoft.com/servicesagreement

**Bot protection & mailing lists (Pro, optional)** — if you add Cloudflare Turnstile keys, the token from a completed check is verified against `challenges.cloudflare.com` (Turnstile terms: https://www.cloudflare.com/website-terms/). If you connect a mailing-list provider, captured lead names and emails are sent to the provider you chose — Mailchimp (`api.mailchimp.com`, https://mailchimp.com/legal/) or Brevo (`api.brevo.com`, https://www.brevo.com/legal/termsofuse/). Both are off until you configure them.

The optional Pro **AI features** (semantic search and Ask this library) are not part of this free plugin. If you upgrade and enable them with your own API key, the document text you choose to index is sent to the AI provider you pick (OpenAI, Anthropic, or Voyage) to create embeddings and answers. They are off by default and never active in the free version.

== Frequently Asked Questions ==

= Is there a document limit? =

No. The frontend automatically handles large libraries: small libraries get a zero-round-trip inline search index; larger ones paginate efficiently.

= Can I link to files hosted elsewhere? =

Yes — each document can use an uploaded file or an external URL (Google Drive, Dropbox, SharePoint, S3, YouTube, etc.).

= Does it track downloads? =

Yes, every document shows a running download count (visible in the admin list and optionally as a frontend column).

= Does it work with my theme? =

FileDeck uses minimal, namespaced styles designed to inherit your theme's typography, and works with any properly-coded theme.

= I'm on nginx — how do I protect restricted files? =

FileDeck moves restricted documents' files into `wp-content/uploads/filedeck-protected/` and drops in an `.htaccess` deny rule. Apache honours that automatically. nginx ignores `.htaccess`, so add one location block to your server config and reload nginx:

`location ^~ /wp-content/uploads/filedeck-protected/ { deny all; return 403; }`

Until that rule is in place, authorised downloads still work (they are streamed through FileDeck), but the raw files in that folder remain directly reachable. On Apache (and most managed WordPress hosts), no action is needed.

== Screenshots ==

1. Searchable document table with instant search and category filter
2. Full-text search inside your PDFs and Office files — jump to the exact page a match is on (Pro)
3. Grid layout with file type badges
4. Drag-and-drop bulk upload — drop files and each becomes a document
5. Collapsible folder layout — documents grouped by category
6. ⌘K command palette — site-wide quick search that jumps straight to any document

== Changelog ==

= 2.54.0 =
* New: a Popular Documents block — the most-downloaded (or newest) documents as a compact list on any page, access-aware like the sidebar widgets it extends.

= 2.53.0 =
* New (Pro): "Was this helpful?" votes on single document pages — anonymous yes/no, off by default, with a least-helpful report on the Analytics screen.
* Improved (Pro): search analytics now cover every search surface — the library search box and the command palette feed the popular-searches and content-gaps reports alongside full-text and AI search, with crawler traffic filtered out. A "Searches with no results" table joins the Analytics screen.

= 2.52.0 =
* Improved: the setup wizard's last step now leads with drag-and-drop bulk upload, offers one-click migration when it detects another document plugin's data (Pro), points Pro & AI sites at their next setup steps, and its Finish button lands on your live library page.
* Improved: the opt-in weekly usage ping now also reports how the setup wizard ended and whether the sample library was used (see External services; still anonymous, still off unless you opted in).

= 2.51.3 =
* Housekeeping: clearer, calmer release notes.

= 2.51.2 =
* Housekeeping: release notes are now summaries rather than implementation detail, and the published history covers recent releases with the full changelog on our site.

= 2.51.0 =
* Improved: the top tier is now named **AI & Governance** and led by its records-governance capabilities — retention schedules, access certification, transmittals, acknowledgment tracking and PDF accessibility screening — alongside search by meaning. No functional change.

= 2.50.0 =
* Improved: a routine hardening pass across the Pro feature set.
* Note for multisite: download links signed before this release need re-issuing, including any sent by transmittal. Single-site installs are unaffected and existing links keep working.
* Improved: a document refused because its download limit is spent is now recorded in the activity log, so you see it rather than hearing about it.
* Improved: bot protection is described accurately as raising the cost of scraping rather than preventing it — it is not a substitute for access restrictions.

= 2.49.0 =
* Added (Pro): SharePoint and Box as cloud storage providers — browse SharePoint Online document libraries (via Microsoft Graph, the same plumbing as OneDrive) and Box folders, attach files, and serve downloads through short-lived per-click links. The full cloud set is now S3 + S3-compatible, Dropbox, Google Drive, OneDrive, SharePoint and Box.
* Added (free): native Document Library elements for Bricks and Divi — the library in each builder's own palette, rendering through the same pipeline as the block and shortcode. Registration is defensive: without the builder present, nothing loads.
* Added (free): translation readiness, declared — a bundled wpml-config.xml tells WPML, Polylang and compatible plugins that documents and categories are translatable and exactly how document data behaves on translation (file references copied, counters per-language).

= 2.48.0 =
* Added (Pro): vault offload — mirror protected files into your connected S3-compatible bucket (S3, R2, Wasabi, Spaces, MinIO) and serve downloads by short-lived presigned link. Every access gate still runs on your server first; local files remain for previews, search and checksums; watermarked serving deliberately stays local so stamping is never bypassed. Requires write (s3:PutObject) credentials.
* Added (Pro): multisite shared libraries — render any network site's library on any other with [filedeck_library site="2"]. One central library, no copies: the central site's access rules, gates and activity log do the enforcing.

= 2.47.0 =
* Added (Pro): server-folder import — point FileDeck at a folder inside wp-content/uploads and every file becomes a document, sub-folders becoming nested categories. Optional daily re-scan makes it a drop folder: SFTP a file in, it appears in the library. Additive and one-way; confined to uploads by the same safety rules as the Advanced File Manager importer.
* Added (Pro): a formal developer surface — `wp filedeck status` and `wp filedeck list` join the existing import/reindex/event commands, and a new developer reference documents the REST routes, signed webhooks and the filters worth scripting against.

= 2.46.0 =
* Added (AI): smart collections — save a plain-language query ("everything a new contractor needs") as a self-updating collection and publish it anywhere with one shortcode. Matching is semantic, the document list refreshes daily and on demand, resolution runs as an anonymous visitor so restricted documents are never baked into a public page, and page views never call the AI provider.
* Improved (AI): auto-metadata extraction — the suggestions box now also proposes values for your custom fields (dates, reference numbers, document types) read from the document text. Each proposal is pre-validated against the field's type and individually approved; nothing is written without your say-so.


Older releases: the full, illustrated changelog lives at
https://www.getfiledeck.com/changelog/
