# FileDeck documentation — full corpus Complete knowledge base for FileDeck, the WordPress document library plugin (https://www.getfiledeck.com). One article per section; each section header carries the article's canonical URL and plan availability. Generated 2026-10-13; 155 articles. ## Contents - **Getting Started**: Quick start: your first document library, Settings overview: what lives where, What is FileDeck?, Install and activate FileDeck, Requirements and compatibility, The setup wizard, Try FileDeck with a sample library, Free vs Pro: what's included, List files on a page with a download button (free), Document library vs knowledge base plugin — which do you need? - **Managing Documents**: Uploading large files, Find PDFs that fail accessibility checks, Custom document fields & advanced filtering, Add a document, Document fields reference, Link files hosted on Drive, Dropbox, or any URL, Reference numbers: part numbers, document codes and form numbers, Replace or update a document's file, Front-end document submission & editing, Import from a server folder (drop-folder workflow), Bulk convert Media Library files into documents, Bulk upload documents by drag and drop, Connect cloud storage (S3, Dropbox, Drive, OneDrive, SharePoint, Box), Export documents to CSV, Import documents from CSV, Migrate from Advanced File Manager, Migrate from BSK PDF Manager, Migrate from Document Library Pro / Lite, Migrate from Download Attachments, Migrate from Download Monitor, Migrate from FileBird, Migrate from Shared Files, Migrate from Simple Download Monitor, Migrate from Simple File List, Migrate from WP Customer Area, Migrate from WordPress Download Manager, Migrate from another document library plugin, Old links keep working after you migrate, Check out a document (editing locks), Retention schedules (auto-archive or remove after N years), Organize with categories and tags, Search synonyms — teach the library your vocabulary, Spelling tolerance in search, Approval workflow: review before publishing, How to track employee policy sign-off (not just click-through), How to track policy acknowledgments and prove who has read a document, Library health scans, Review cycles: keep documents current, Set an expiry date on a document, Version history and rollback - **Displaying Libraries**: Build a downloads page with a table per category, Choose and reorder columns, Embed a document inline on a page, Multiple libraries on one site, Page builders: Bricks, Divi, WPBakery, Avada and Beaver Builder, Pagination, load more, and infinite scroll, Style your library: colors and display settings, The FileDeck viewer: self-hosted PDF viewing, Use FileDeck with Elementor, Developer reference: REST API, webhooks & WP-CLI, Override library markup from your theme, Document pages: what each document's own page shows, Favourites: let readers keep a shortlist, Filter a library by when documents were added, Filter a library by year, Multisite shared libraries, New and already-downloaded markers, One library, a section per category, Public document changelog: show what changed in your library, Share a document: copy link, email and social, Smart collections (self-updating semantic folders), Translations & multilingual sites (WPML, Polylang), Publish your library on another website, Shortcode reference: [filedeck], The Document Library block, The library builder, Use FileDeck with Astro, Next.js or any front end, Let AI agents search your library (Abilities API & MCP), Automatic PDF thumbnails, File-type and folder icons, Folder layout, Gallery layout, Grid layout, Table layout, AI semantic search: find documents by meaning, Ask this library: chat with your entire document library, Can AI search inside your WordPress documents?, Jump to the page a search match is on, Make scanned PDFs searchable with OCR, Search inside documents (full-text search), Site-wide quick search (Cmd+K / Ctrl+K), Instant search, sorting, and filters, Standalone search box: [filedeck_search] - **Access Control & Protection**: Access certification (quarterly access reviews), Access control overview, Assign a document to specific people, Client areas (per-user document portals), Dynamic PDF watermarking, Gate documents by membership plan, Give a whole company access by email domain, Groups — grant access to a team, not one person at a time, Hotlink protection, How to restrict document downloads to logged-in users, How to set up secure client folders on your law firm website, IP rules (restrict downloads by network), Password-protect documents and categories, Restrict documents by role, Send refused visitors to a page of your own, Single-use download links, Vault offload (serve protected files from S3 or R2), View-only documents, File integrity: SHA-256 checksums, Protect files on nginx servers, True file protection: how signed download links work - **Downloads, Leads & Analytics**: Activity log: downloads, views, and searches, Bot protection for downloads (Turnstile or reCAPTCHA), Document feedback: “Was this helpful?” votes, Download counts, Download quotas (daily limits per role), Download tracking in FileDeck: counts, logs and reports, Force download or open in browser, Let people see what they have already downloaded, Let visitors download multiple files as one zip, Multi-select zip downloads, Per-download notifications (email & webhook), Require a form before download, Require terms before download, Transmittals (numbered document packages), Library event webhooks, Capture leads before download, Send captured leads to your mailing list (Mailchimp / Brevo), Email subscriptions and digests, Inline document preview - **Troubleshooting & FAQ**: Large libraries and performance, Frequently asked questions, Category passwords: not prompting, not unlocking, or re-asking, Downloads not working: 404s, wrong file, or zero counts, Imports stuck, slow, or missing documents, Library looks wrong or unstyled, PDF thumbnails or previews not appearing, Search or filters not returning results - **Account & Billing**: Billing, refunds, and getting support, License keys, activation, and updates, Upgrade from Free to Pro - **How-to Guides**: How to choose and set up a WordPress download manager with access control, How to create a client document portal in WordPress, How to create a resource library in WordPress, How to create a searchable document library in WordPress, How to display PDFs in a searchable table in WordPress, How to embed a PDF in WordPress (with or without a plugin), How to password-protect PDFs and file downloads in WordPress, How to restrict file downloads by user role or membership in WordPress, How to search PDF content in WordPress (PDF and Word files), How to stop direct URL access to files in WordPress uploads, How to track file downloads in WordPress --- # Quick start: your first document library *Collection: Getting Started · Category: Basics · Availability: Free & Pro · Canonical URL: https://www.getfiledeck.com/docs/quick-start/* > **New to FileDeck?** FileDeck is a WordPress plugin that turns your files into a searchable document library on your own site. The free plugin on WordPress.org includes instant search, filters, four layouts and download counts, with no limit on documents. [FileDeck Pro](https://www.getfiledeck.com/pricing/), from $59 a year for one site, adds search inside PDFs, access control with file protection, and version history. [Try the live demo](https://www.getfiledeck.com/demo/) to use a real library before you install anything, or read [what FileDeck is](/docs/what-is-filedeck/). You can go from a fresh FileDeck install to a working, searchable document library in about five minutes. Add two or three documents, assign categories, and view the auto-created library page — or drop the Document Library block onto any page you like. This guide assumes FileDeck is already [installed and activated](/docs/installation/). ![A finished FileDeck document library rendered with the table layout](/docs/images/table-layout.png) ## Step 1: add a few documents 1. Go to **Documents → Add New Document** in wp-admin. 2. Enter a title (for example, "Enrollment Form 2026"). 3. Drag and drop the file onto the document, or choose one from the Media Library. FileDeck captures the file size, type, and filename automatically. 4. Optionally add a short description and a featured image (used by the grid layout). 5. Click **Publish**. Repeat for two or three files so the library has something to show. ## Step 2: assign categories Categories power the category filter and the folders layout, so it is worth adding them now. 1. On the document edit screen, tick or add a category (for example, "Forms" or "Policies") in the category panel. 2. To manage categories in one place, go to **Documents → Document Categories**. Categories are hierarchical, so you can nest them. You can also add tags under **Documents → Document Tags** for a second, non-hierarchical way to filter. ## Step 3: view your library FileDeck created a "Document Library" page, titled in your site's language, when you activated it. Open **Pages**, find that page, and click **View**. Your published documents are already there, with search-as-you-type, sortable columns, and category and tag filters. ## Step 4 (optional): put a library on any other page 1. Edit any page and add the **Document Library** block. You get a preview in the editor and a layout picker; **Open the library builder** sets columns, categories, filters and the rest with a live preview in your theme. Or start from **Documents → Library builder**, which can create the page for you. 2. Prefer the classic editor or a non-block context? Use the shortcode instead: ``` [filedeck layout="table" columns="title,excerpt,categories,date,size,type,link" per_page="10" sort_by="title"] ``` ## Step 5: pick a layout Choose **table**, **grid**, or **folders** in the block settings or the shortcode's `layout` attribute. Table suits detailed lists, grid suits visual collections, and folders groups documents into collapsible categories. That is the whole setup: a live, searchable library your visitors can use right now. To adjust the layout, columns, and accent color, head to **Documents → Settings**, or re-visit the choices from the [setup wizard](/docs/onboarding-wizard/). ## FAQ ### What file types can I add as documents? Any file your WordPress Media Library accepts — PDFs, Office documents, images, spreadsheets, zips, and more. ### How do I show only one category on a page? Scope the block to a category in its settings, or add `category="your-slug"` to the shortcode. ### How do I change the layout later? Edit the block and pick a different layout, or change the `layout` attribute in the shortcode. Nothing about your documents changes. --- # Settings overview: what lives where *Collection: Getting Started · Category: Basics · Availability: Free & Pro · Canonical URL: https://www.getfiledeck.com/docs/settings-overview/* All of FileDeck's site-wide options live under **Documents → Settings**, organized into tabs. The free plugin shows **Display**, **Features**, and **Data**; installing Pro adds the rest (Submissions and Health appear when those modules are active). This page tells you what lives where, so you can jump straight to the right tab. ## Display How every library looks: default layout (table, grid, gallery, or folders), the columns manager, documents per page and pagination, accent color, grid columns, download link styles, empty-state messages, and what titles link to. See [styling your library](/docs/styling/) and [choose and reorder columns](/docs/columns/). ## Features Front-end toggles — the preview lightbox, multi-select zip downloads, category-click filtering, the site-wide ⌘K / Ctrl-K quick search, and more — plus access and leads options: hiding restricted documents, [lead capture](/docs/lead-capture/) with its webhook, [activity logging](/docs/download-log-reports/), and moving expired documents to draft. ## Scanned OCR Scanned or photographed PDFs have no text layer, so [content search](/docs/content-search/) cannot read them. This tab enables the FileDeck OCR service, which extracts that text — the only feature that sends document contents off your server, and files are discarded immediately after processing. ## AI search Optional semantic search that finds documents by meaning, using your own AI provider API key; the vectors are stored in your own database. Keyword search always stays 100% on your server. See [AI semantic search](/docs/ai-semantic-search/). ## Ask AI Configures the "Ask this library" chat widget — grounded answers from your documents — and the chat key that also powers AI summary and tag suggestions in the document editor. See [Ask this library](/docs/ask-this-library/). ## Lifecycle Lets visitors subscribe to email digests of new and updated documents (see [subscriptions and digests](/docs/subscriptions-digests/)), and adds an approval gate — a "submit for review → approve & publish" workflow — to the document editor. Review dates themselves are set per document or category; see [review cycles](/docs/review-cycles/). ## Downloads Download notifications — an email per download to the recipients you list (capped at 200/day site-wide as a flood guard) and an optional webhook that receives a JSON payload per download, with no cap. On the AI tier this tab also holds PDF watermarking: stamp a footer on every served PDF recording who downloaded it. ## Submissions Settings for [front-end document submission](/docs/front-end-submission/): let visitors submit documents through a form with moderation, see their own submissions, and edit them from the front end — no wp-admin access needed. ## Privacy Activity log retention (keep forever or purge older rows daily), IP anonymization, and FileDeck's integration with the WordPress core privacy export and erase tools. File integrity also lives here: a SHA-256 checksum per file, with optional verification on every protected download. ## Health Configures [health scans](/docs/library-health/), which check every published document for missing files, dead external links, and downloads nobody wants, and flag documents that use the same file as a restricted document and restricted files an import left public or unprotected — weekly and on demand. ## Search Index Status and controls for the [content search](/docs/content-search/) index — see how many documents are indexed and rebuild the index (large libraries rebuild in the background in batches). ## AI Index The counterpart for [AI semantic search](/docs/ai-semantic-search/): the vector index's status and rebuild controls. ## Data One decision: whether uninstalling the plugin deletes all documents, categories, tags, and leads. It is off by default, so your content survives removal — and uploaded files always stay in the Media Library either way. ## FAQ ### Do settings apply per library or site-wide? Site-wide. They set the defaults for every library; the block and shortcode can override layout, columns, and scope per page. ### Which tabs need extra keys? Scanned OCR is included with your Pro license, with no key to enter. AI search and Ask AI require your own AI provider API key; a managed option is planned but not yet available. ### Where do I turn on lead capture and activity logging? Both are toggles on the **Features** tab; leads then appear under **Documents → Audience → Leads** and events under **Documents → Insights → Activity log**. --- # What is FileDeck? *Collection: Getting Started · Category: Basics · Availability: Free & Pro · Canonical URL: https://www.getfiledeck.com/docs/what-is-filedeck/* FileDeck is a document library plugin for WordPress. It turns your files — PDFs, forms, policies, minutes, reports — into a searchable, organized library that visitors can browse on any page of your site. The free version is available on [wordpress.org](https://wordpress.org/plugins/filedeck/), and FileDeck Pro adds access control, file protection, and reporting on top. ## What FileDeck does FileDeck gives you a **Documents** menu in wp-admin where each file becomes a document with a title, optional description and featured image, and hierarchical categories and tags. You can drag and drop a file straight onto a document or pick one from the Media Library; the file size, type, and filename are captured automatically. On the front end, a library displays those documents in one of four layouts: - **Table** — sortable columns (click a header to sort) such as title, date, size, type, and a download link. - **Grid** — card-style tiles with featured images, suited to visual collections. - **Gallery** — large thumbnails front and centre, for image-led and design-led collections. - **Folders** — collapsible categories that visitors expand like a file explorer. Every layout includes instant search-as-you-type, multi-select filters for category and tag, and page numbers, load more or infinite scroll. Libraries are server-rendered with progressive enhancement, so they work with any theme and stay fast without configuration. You place a library with the **Document Library** Gutenberg block (live preview, layout picker, columns and category scoping) or the `[filedeck]` shortcode. FileDeck also creates a ready-made "Document Library" page when you activate it. Beyond the library itself, FileDeck can search inside file contents — with OCR for scanned PDFs — and can optionally add AI semantic search and an "Ask this library" chat widget, using your own AI provider key. Review cycles, email digests for subscribers, and an approval workflow keep the library current, while a weekly health scan and an activity log with a content-gap report show you what is broken, stale, or missing. ## Who FileDeck is for Any organization that publishes documents: schools sharing forms and newsletters, councils publishing agendas and minutes, clinics posting patient information, law and accounting firms sharing resources with clients, nonprofits, manufacturers with spec sheets — anywhere visitors need to find the right file quickly. ## Free vs Pro in short The free version covers the full publishing workflow: unlimited documents, all four layouts, search, filters, the block and shortcode, a standalone search box, external file links, color and column controls, and download counting. Pro (from $59/yr) adds access control by role or password, true file protection with expiring signed download links, CSV import and export, automatic version history, auto-expiry dates, multi-select zip downloads, inline previews, download logs and reports, and lead capture. See the full breakdown in [Free vs Pro](/docs/free-vs-pro/). ## Where to go next Try the [live demo](https://www.getfiledeck.com/demo) to click through the layouts before installing anything, [download FileDeck free from wordpress.org](https://wordpress.org/plugins/filedeck/) (or search for "FileDeck" under **Plugins → Add New**), then follow the [quick start](/docs/quick-start/) to publish your first library in about five minutes. Full instructions are in [install and activate FileDeck](/docs/installation/). ## FAQ ### Does FileDeck work with my theme? Yes. Libraries are server-rendered standard markup and inherit your theme's typography, and FileDeck ships accent color and layout controls to match your branding. ### Do visitors need an account to download files? No. By default any visitor can search and download. Restricting downloads by role or password is a Pro feature. ### Can I try FileDeck before buying Pro? Yes. Install the free version from [wordpress.org](https://wordpress.org/plugins/filedeck/), explore the [live demo](https://www.getfiledeck.com/demo), and if you upgrade, Pro comes with a 30-day money-back guarantee. --- # Install and activate FileDeck *Collection: Getting Started · Category: Installing · Availability: Free & Pro · Canonical URL: https://www.getfiledeck.com/docs/installation/* FileDeck installs like any WordPress plugin. The free version comes straight from the [wordpress.org plugin directory](https://wordpress.org/plugins/filedeck/); FileDeck Pro is a zip file you download from your purchase email or Freemius account and upload in wp-admin. Activation takes under a minute and sets up a ready-to-use library page. ## Install FileDeck Free 1. Go to **Plugins → Add Plugin** in wp-admin (older WordPress versions call it **Add New**). 2. Search for **FileDeck**. 3. Click **Install Now**, then **Activate**. If you prefer a manual install, download the zip from [wordpress.org/plugins/filedeck](https://wordpress.org/plugins/filedeck/), go to **Plugins → Add New → Upload Plugin**, choose the zip, and click **Install Now**, then **Activate**. ## Install FileDeck Pro 1. Download the Pro zip. It is linked in your purchase email, and it is always available in the Freemius customer portal (follow the link in that same email). 2. Go to **Plugins → Add New → Upload Plugin** in wp-admin. 3. Choose the zip file and click **Install Now**, then **Activate**. 4. Open the FileDeck license screen in wp-admin and enter the license key from your purchase email. Your license key unlocks Pro features and enables automatic updates in wp-admin. For details on activation, moving keys between sites, and expiry, see [License keys, activation, and updates](/docs/licensing-activation/). If the free version is already installed, your documents and settings carry over to Pro — see [Upgrade from Free to Pro](/docs/upgrade-to-pro/). ## What happens when you activate FileDeck? On first activation, FileDeck sets up two things: - A top-level **Documents** menu appears in the wp-admin sidebar. The free plugin shows *All Documents*, *Add New Document*, *Upload Documents*, *Document Categories*, *Document Tags* and *Settings*. Pro adds *Leads*, *Activity Log*, *Analytics*, *Review cycles*, *Subscribers*, *Fields*, *Cloud storage*, *Bulk add / export* and *Migrate*, and the AI tier adds *Acknowledgments*. The *Search Index*, *Health* and *AI Index* screens are tabs within *Settings* rather than menu items. - A "Document Library" page is created automatically, ready to display your documents. Right after that, the free version asks whether you'd like email about security and feature updates, tips and occasional offers, and to share some basic WordPress environment info. **Allow & Continue** and **Skip** both lead straight on, and FileDeck works the same whichever you choose — or if you leave the question for later. (FileDeck Pro asks for your license key at this point instead, and the wizard opens once the key is activated.) Then the three-step [setup wizard](/docs/onboarding-wizard/) opens so you can choose a layout, style, and library page. You can skip it and change those later in **Documents → Settings**. From there, follow the [quick start](/docs/quick-start/) to add your first documents. ## FAQ ### Can I install Pro on top of the free version? Yes. Install and activate the Pro build and your existing documents, categories, and settings are preserved — they use the same data. ### Does deactivating FileDeck delete my documents? No. Deactivating a plugin never removes its content. Your documents, categories, and files stay in place and reappear when you reactivate. ### Where do I find the Pro zip again later? In the Freemius customer portal, linked from your purchase email. You can re-download the latest version there at any time. --- # Requirements and compatibility *Collection: Getting Started · Category: Installing · Availability: Free & Pro · Canonical URL: https://www.getfiledeck.com/docs/system-requirements/* FileDeck runs on WordPress 6.4 or newer with PHP 7.4 or newer (tested through PHP 8.4). It works with any theme, needs no special server setup, and the only optional dependency is the PHP ZipArchive extension, used by the Pro multi-select zip download feature. ## Minimum requirements - **WordPress:** 6.4 or newer - **PHP:** 7.4 or newer, tested through PHP 8.4 - **Theme:** any theme — block or classic - **Server:** standard WordPress hosting; nothing extra required If your host runs a current WordPress and PHP version, FileDeck will run. You can check both under **Tools → Site Health → Info** in wp-admin. ## Does FileDeck work with any theme? Yes. Libraries are server-rendered standard HTML with progressive enhancement, so they inherit your theme's typography and behave like native content. Layout, column, and accent color controls under **Documents → Settings** let you match your branding without touching CSS. The **Document Library** block works in the block editor, and the `[filedeck]` shortcode works anywhere shortcodes render. ## Performance and JavaScript FileDeck loads no jQuery and keeps its front-end footprint small. Up to about 500 documents, search, sort, filter and pagination all run in the visitor's browser with no round-trips, using an inlined search index. Larger libraries switch to **server mode** automatically: page one renders server-side and the same controls fetch rows from the server as needed, so search-as-you-type keeps working at any size. There are no performance settings to tune. Because pages are server-rendered and search runs client-side, FileDeck works with page caching — cached library pages still search, sort, and filter normally. ## Accessibility and translations FileDeck tables meet WCAG AA accessibility standards, and the plugin is fully keyboard- and screen-reader-friendly out of the box. It is translation-ready, so you can translate it with standard WordPress translation tools. ## What is ZipArchive needed for? Only one feature: the Pro multi-select zip download, where visitors tick checkboxes and download their selection as a single zip. It requires the PHP ZipArchive extension, which is present on nearly all hosts. Every other feature — including single-file downloads — works without it. If zip downloads fail on your server, ask your host to enable ZipArchive. ## Web server notes (Pro file protection) Pro's true file protection works on Apache automatically via `.htaccess`. On nginx, one documented config snippet is needed to block direct access to the protected uploads folder. This only applies if you use protected documents. ## FAQ ### Will FileDeck slow down my site? No. It ships no jQuery, renders libraries server-side, and handles search-index sizing automatically, so even large libraries stay responsive. ### Does FileDeck work with caching plugins? Yes. Library pages are server-rendered and search runs in the browser, so page caching does not break search, sorting, or filtering. ### Can I use FileDeck on an older PHP version? FileDeck requires PHP 7.4 as a minimum. Versions below that are not supported, and upgrading PHP is recommended for security regardless. --- # The setup wizard *Collection: Getting Started · Category: Installing · Availability: Free & Pro · Canonical URL: https://www.getfiledeck.com/docs/onboarding-wizard/* When you activate FileDeck for the first time, a three-step setup wizard opens in wp-admin — on the free version straight after the opt-in question, whichever way you answer it, and on Pro once your license key is activated. It walks you through choosing a layout and accent color, then getting your first documents in. Each choice is optional and can be changed later in **Documents → Settings**, so there is no wrong answer. ## What the three steps cover 1. **Welcome.** FileDeck has already created a "Document Library" page for you on activation — the wizard confirms it and explains what the next two steps do. 2. **Pick a layout and accent colour.** Choose the table, grid, gallery or folders layout as your library default, and optionally set an accent colour so the library matches your site's branding. (Columns are set later, under **Documents → Settings → Display**.) 3. **Add your documents.** The fastest route is the drag-and-drop uploader — drop in a folder's worth of files and each one becomes a document. You can also add a single document, or load the removable [sample library](/docs/sample-library/) to try search, filters and every layout before committing your own files. The wizard's Finish button takes you to your live library page. ### If you're switching from another plugin On FileDeck Pro, the last step also checks your site for importable documents from other document and download plugins. If it finds any, it names the plugin, says how many items it found, and links you straight to the one-click migration tool. The original plugin and its data are left untouched. See [migrating from another plugin](/docs/migrate-from-another-plugin/) for the full list of supported plugins. ### Pro and AI next steps On Pro sites the wizard ends with a short "worth setting up next" list — building the content search index so visitors can search inside PDFs, restricting categories to roles or a password, and connecting cloud storage. On the AI & Governance plan it also points you at choosing an AI provider and adding your API key, since AI features stay off until you do. ## Can you skip the wizard? Yes. You can skip the wizard at any step, and FileDeck falls back to sensible defaults: the table layout, the default accent color, and the auto-created "Document Library" page. Skipping the wizard never blocks you from using the plugin. ## How to re-run the wizard or change your choices You do not need the wizard to change anything — every option it sets is a normal setting: - **Layout** lives in the **Document Library** block settings (or the shortcode's `layout` attribute) and in **Documents → Settings**. - **The accent color** is under **Documents → Settings** on the **Display** tab, alongside the other display options. - **The library page** is a regular WordPress page you can edit, rename, or replace like any other. The wizard is offered by the setup notice after activation, and from the "run the setup wizard" link on an empty Documents list. You can also return to it directly at any time via `wp-admin/admin.php?page=filedeck-setup`. Re-running it does not touch your documents — it only updates the same layout and accent-colour options. ## FAQ ### I skipped the wizard — did I miss anything? No. The wizard only sets the layout and accent color, all of which you can configure in **Documents → Settings** and in the block or shortcode — and its shortcuts (the uploader, migration tool, and sample library) are all normal screens you can reach from the Documents menu at any time. ### Does re-running the wizard delete my documents? No. The wizard never touches documents, categories, or files. It only updates display settings. ### Can I use a page I already have instead of the auto-created one? Yes. Add the **Document Library** block or `[filedeck]` shortcode to any existing page. Since 2.94.0 FileDeck notices: the moment another published page renders a library, the auto-created page is unpublished for you — it becomes a draft, never deleted — and a notice in wp-admin says which page superseded it, with a one-click **Restore the starter page**. This only ever happens to a starter page you have not touched; rename it or change anything in it and it is yours to keep, published, for as long as you like. --- # Try FileDeck with a sample library *Collection: Getting Started · Category: Installing · Availability: FileDeck Free · Canonical URL: https://www.getfiledeck.com/docs/sample-library/* An empty document library doesn't show you much. If you'd rather see FileDeck working before you go and find your own files, load the **sample library**: nine documents across three categories, added in one click. > **Free** — included in every FileDeck install. **Visitors never see the samples.** They show only to logged-in editors, badged **Sample**, so you can build your real library alongside them and leave them in place as long as you like. Anyone else — a visitor, a subscriber, an embedded library on another site — gets your own documents only. ## Load it During setup, on the last step of the wizard, choose **Load sample library**. Already finished setup? Go to **Documents → All Documents**. While your library is empty, FileDeck offers the same **Load sample library** button there. You'll get: | Category | Documents | | --- | --- | | Policies | Employee Handbook, Code of Conduct, Remote Working Policy | | Forms | Expense Claim Form, Leave Request Form, Equipment Request Form | | Reports | Annual Report, Financial Summary, Sustainability Review | ## What you can try with it Every sample is a **real PDF**, not a placeholder, so nothing is faked: - **Search** finds them by title and — with Pro's [content search](/docs/content-search/) — by the text inside them. - **Downloads** actually download, and the [download counter](/docs/track-file-downloads/) starts counting. - **Thumbnails** generate from the files where your server supports it. - **Layouts and filters** have enough content and enough categories to be worth switching between. Put the Document Library block (or the `[filedeck]` shortcode) on a page and you have a working library to look at in under a minute. See [The Document Library block](/docs/filedeck-block/). ## Remove it While any samples are installed, the **Documents** list shows a reminder with a **Remove sample documents** link. One click deletes all nine documents and their PDF files. Removal is careful about what it deletes: - **Only the sample documents go.** Anything you added yourself is untouched, even if you gave it the same title. - **Your own files are kept.** If you replaced a sample's PDF with your own, that file stays in your Media Library. - **Categories are only deleted if they're empty.** If you filed your own documents under *Policies*, the category stays — with your documents in it. Trashing or deleting the samples one by one from the Documents list has the same effect: once the last one is gone, the empty sample categories go with it. (Restore a trashed sample and it comes back without its category.) So it's safe to load the samples, build your real library alongside them, and clear them out whenever you're ready. ## FAQ ### Will the sample documents show on my site? Only to you. Since 2.94.0 the samples render for logged-in editors alone, badged **Sample** in every layout, and a library shows an editor a note saying so. A visitor does not see them — not in a library, not on a document's own page, not in the REST listing — so there is no launch-day cleanup to remember. Remove them whenever you are done with them. ### Can I edit them instead of deleting them? Yes. They're ordinary documents — rename one, swap the file, recategorise it. If you replace a sample's file with your own, **Remove sample documents** will still delete the document but will leave your file in the Media Library. ### Can I load them more than once? No, and that's deliberate — loading twice would leave you with eighteen documents and two of everything. If the samples are already installed, the button is replaced by the removal reminder. ### Do they affect my download statistics? They count like any other document while they exist. Remove them before you start paying attention to your numbers, and their counts go with them. --- # Free vs Pro: what's included *Collection: Getting Started · Category: Plans · Availability: Free & Pro · Canonical URL: https://www.getfiledeck.com/docs/free-vs-pro/* FileDeck Free, available on [wordpress.org](https://wordpress.org/plugins/filedeck/), includes everything you need to publish a searchable document library: unlimited documents, all four layouts, search, filters, and the block and shortcode. FileDeck Pro adds access control, real file protection, import/export, versioning, reporting, and more, starting at $59/yr. ## What's in FileDeck Free - **Documents** post type with its own admin menu, drag-and-drop upload or Media Library selection, auto-captured file size, type, and filename, featured images, hierarchical categories, and tags. - Four layouts — **table**, **grid**, **gallery** (thumbnail-forward tiles), and **folders** (collapsible categories) — server-rendered with progressive enhancement. - Instant search-as-you-type, multi-column sorting, multi-select category and tag filters with live counts and an active-filter bar, and page numbers, load more or infinite scroll (with an optional fixed library height). - Eighteen available columns (`id, image, title, reference, excerpt, content, categories, tags, date, modified, author, size, type, filename, downloads, views, preview, link`) and four download link styles — button, button with icon, icon only, and text link — with an open-in-new-tab option. - The **Library builder** — design a library with a live preview on your own site, in your theme, then create the page in one click or copy its shortcode. See [the library builder](/docs/library-builder/). - The **Document Library** Gutenberg block (it opens the library builder), the `[filedeck]` shortcode, and a **FileDeck Library** Elementor widget. - Native **Document Library** and **Document Embed** elements in five more page builders — Bricks, Divi, WPBakery (Visual Composer), Avada (Fusion Builder) and Beaver Builder. See [page builders](/docs/page-builders/). - **Theme template overrides** — copy a template into your theme's `filedeck/` directory to replace library markup without forking the plugin. See [template overrides](/docs/template-overrides/). - Auto-created library page, three-step setup wizard, and accent color controls. - Lifetime download counting per document, shown in admin. - Instant client-side search, sort and filter — libraries up to ~500 documents get an inlined search index for zero-round-trip search-as-you-type, and larger libraries switch to server mode automatically so search keeps working at any size. - Site-wide **⌘K / Ctrl-K** quick search overlay to jump to any document from any page. - Bulk drag-and-drop upload under **Documents → Import & Export → Upload files** — each file becomes a published document titled from its filename. - Category-click filtering — clicking a category name in the table filters the library by it. - Hover preview cards showing a thumbnail, title, category, type, size, and date. - **External file links** — point a document at Google Drive, Dropbox, OneDrive, SharePoint, Amazon S3, or any URL instead of uploading it. Pasted Google Docs, Sheets, Slides and Drive links embed and preview as live documents. - **Inline document embed** — show a PDF, image or Google document as an always-visible viewer inside any page, via the `[filedeck_embed]` shortcode, the Document Embed block or the Elementor widget, with width/height controls, an optional download link and a full-screen button. (Pro extends the embeddable types to Office, audio and video.) - **Sidebar widgets** — *Recent Documents* and *Top Downloads* for any sidebar or block area, access-aware so a restricted document never shows to someone who cannot open it. - **Standalone shortcodes** — `[filedeck_search]`, `[filedeck_login]`, `[filedeck_download]` and `[filedeck_qr]` for placing library search, sign-in, single-file links and QR codes anywhere. - An optional **date-added filter** (Any time / Past week / month / 3 months / year), and a `period` attribute to pre-filter a library to recent documents. - An optional **year filter** listing the years the library's documents span, and a `year` attribute to pin a library to one year. See [filter by year](/docs/year-filter/). - A **reference number** on every document — part number, document code, form number — searchable and available as a sortable column. See [reference numbers](/docs/reference-numbers/). - **Group by category** — one library rendered as a titled section per category with a single search box, via `group_by="category"`, the Elementor widget or a site-wide default. See [a section per category](/docs/group-by-category/). - **AI-agent ready**: three read-only abilities registered with WordPress 6.9's Abilities API, so agents can search the library over MCP. Access-filtered, and agents get page links rather than download URLs. - **Document pages** — each document's own page lists its details above the Download button: reference, published and updated dates, categories and tags, plus author and download count if you tick them. See [document pages](/docs/document-pages/). - **Old links keep working** after a one-click migration (a Pro import): the old plugin's download links, item pages and shortcodes open your FileDeck documents once it's switched off, and keep doing so if your Pro licence lapses. See [old links](/docs/old-links-after-migration/). ## What Pro adds | Pro feature | What it does | |---|---| | Access control | Restrict categories by WordPress role or protect them with a password | | Groups | Name a set of people once, then give that group a client area or a single document; change the membership and every grant follows | | Client areas by email domain | Admit everyone with an address at a domain, so someone who joins it later gets in without the category being edited | | IP rules | Limit downloads to chosen addresses or CIDR ranges, or block specific ones; applies to signed share links too; site administrators keep access | | Single-use download links | A link that works for exactly one download and then stops; expires after 7 days if unused | | Hotlink protection | Refuse downloads requested from another site's pages; requests with no referrer and signed share links are unaffected | | Custom access-denied page | Send a refused visitor to a page of your own; documents whose existence is private keep the not-found page | | Search synonyms | Groups of equivalent terms, so "PO" finds "purchase order"; each word you type is still required | | Spelling tolerance | A search returning no results retries against the closest spelling in your titles and categories, and says which word it used | | Personal download history | `[filedeck_my_downloads]` shows a signed-in visitor what they already took; anything they lost access to drops out | | New & downloaded markers | Mark rows new since a signed-in visitor last looked, and dim what they have downloaded | | True file protection | Protected files move out of public uploads; downloads use signed URLs that expire after 15 minutes | | CSV import and export | Bulk create or update documents; export your library | | Bulk convert | Turn existing Media Library files into documents | | Cloud storage | Browse and attach files from Amazon S3 (and S3-compatible services), Dropbox, Google Drive, OneDrive, SharePoint and Box, with a scheduled one-way pull that imports new files automatically | | Version history | The old file is archived automatically on every replacement; download URLs never change | | Auto-expiry dates | Remove a document from the library after a set date | | Public document changelog | A block or `[filedeck_changelog]` shortcode that lists published and updated documents newest first, grouped by month and optionally limited to chosen categories. See [public document changelog](/docs/document-changelog/) | | Folder Download all | One button per folder that zips everything in it, through the same gates as any other download | | Bulk access changes | Make a whole selection public or logged-in-only from the Documents list in one action | | Multi-select zip download | Visitors tick checkboxes and download a single zip | | Office & media previews | Preview and embed Word, Excel, PowerPoint, audio and video — on top of the free PDF and image preview and embed | | Automatic PDF thumbnails | Grid and image views show a real first-page preview of each PDF, rendered on your own server | | Download log and reports | Who, what, when — with optional IP anonymization and CSV export; also powers the `views` library column | | Analytics dashboard | Downloads, views and searches at a glance — a downloads-over-time chart, top documents and top searches, over 30 days to all time, with CSV export | | Google Analytics 4 | Send document downloads, searches and previews to your own GA4 as standard events (file_download, search, select_content); off by default, no data goes to FileDeck | | Lead capture | Require name/email before download; export leads or send to a webhook | | Require a form before download | Gate downloads behind Gravity Forms, Ninja Forms, WPForms, Contact Form 7 or any other form plugin — paste its shortcode; one submission unlocks downloads for an hour | | Terms before download | Require readers to accept licence conditions or a disclaimer first, with every acceptance recorded in the activity log | | Attach documents to a post | Tick documents in the post or page editor and they list automatically after the content, using your normal layout | | Content search + Search Index | Search inside PDFs, Office and OpenDocument files, and text files; rebuild the index under **Documents → Settings → Search Index** | | Scanned-PDF OCR | Extracts text from scanned PDFs that have no text layer; included with your license, no key needed | | AI semantic search + Ask AI _(AI plan)_ | Find documents by meaning, and offer an "Ask this library" chat widget with cited answers; a **Documents → Insights → Activity log → AI Questions** view shows what visitors ask and turns unanswered questions into new-document drafts. Requires your own AI provider API key — a managed option is not yet available | | Accessibility screening _(AI plan)_ | Screens every PDF in the library for machine-detectable accessibility problems — untagged for screen readers, no document language, no title, or a scan with no text — and names the WCAG criterion each relates to. A screening tool, not a compliance check: it finds documents that certainly need work, it cannot certify the rest. Runs locally; no AI provider is called | | Review cycles | Put documents or categories on a review schedule and mark them reviewed from one screen | | Subscriptions and digests | Visitors subscribe to daily or weekly email digests of new and updated documents | | Approval gate | Adds a submit-for-review, approve-and-publish workflow to the document editor | | Library health scans | Weekly automatic scan for missing files, dead external links, and documents with no downloads in 90+ days, plus documents that use the same file as a restricted document, and restricted files an import left public or unprotected | | Activity log + content gaps | Logs views, searches, and downloads — with country, referrer and user agent where the host provides them — plus a report of searches that found nothing | | File integrity | SHA-256 checksum recorded for every file, with optional verification on download | | One-click plugin import | Move a library across from Download Monitor, WordPress Download Manager, Document Library Lite/Pro or Shared Files in one click — no CSV export step | | Custom fields | Add your own document fields (text, number, date, dropdown, multi-select, URL, user, yes/no) and use them as sortable columns and faceted filters | | Front-end submission | Let visitors or staff upload documents from the front end, landing as pending for moderation | | Assign to specific people | Give a document to named users; it stays invisible to everyone else, not even a locked row | | Client areas | Assign named users to a category and give each of them a private portal of just their documents | | Membership-plan gating | Restrict a category or a document to holders of a MemberPress, Paid Memberships Pro, WooCommerce Memberships, Restrict Content Pro or s2Member plan — access follows the membership, so it goes when the membership lapses | | Share button | A Share button on every document — copy the link, open the device share sheet, or send it by email, X, Facebook, LinkedIn or WhatsApp; shares the document page, never the file, and loads nothing from any network until a visitor picks one. See [share a document](/docs/share-documents/) | | Favourites | Signed-in readers star a document to keep it, and read their favourites back on any page with `[filedeck_my_favourites]`; access is re-checked when the list is read | | Download notifications | Email and/or webhook on every download | | Download quotas | Daily per-role download limits, including a bucket for logged-out visitors | | Bot protection | A CAPTCHA check — Cloudflare Turnstile or Google reCAPTCHA v2 — before the first download of a visit, so a script cannot walk every link on the page. Logged-in users are not challenged | | Acknowledgment tracking _(AI plan)_ | Ask named roles to read and confirm a document, with an append-only evidence trail and reminder emails | | PDF watermarking _(AI plan)_ | Stamp each served PDF with who downloaded it, when and from where | | View-only documents _(AI plan)_ | Let a document be read in the browser but not downloaded | ## Pricing **Pro** — everything in the table above except the AI features: - **$59/yr** — 1 site - **$99/yr** — 5 sites - **$179/yr** — Agency plan (50 sites) **AI** — everything in Pro, plus semantic search, "Ask this library", the AI Questions view, PDF accessibility screening, and AI summary/tag suggestions: - **$119/yr** — 1 site - **$199/yr** — 5 sites - **$399/yr** — Agency plan (50 sites) AI features are opt-in and use your own AI provider API key (bring your own key). Renewal prices never increase: the price you buy at is the price you renew at. Every plan includes priority email support and updates while the license is active. Checkout and licensing are handled by Freemius, and every purchase has a 30-day money-back guarantee — see [Billing, refunds, and getting support](/docs/billing-refunds-support/). Ready to switch? See [Upgrade from Free to Pro](/docs/upgrade-to-pro/) — your documents and settings carry over automatically. ## FAQ ### Is the free version limited in how many documents I can add? No. Free has no document limits. Pro adds features, not capacity. ### Do all Pro plans include the same features? Yes. The three plans differ only in how many sites you can activate the license on. ### What happens to Pro features if I don't renew? They switch off: the plugin falls back to the free version, so your library keeps working and restricted documents stay restricted, while the Pro features, updates and support stop until you renew. See [License keys, activation, and updates](/docs/licensing-activation/). --- # List files on a page with a download button (free) *Collection: Getting Started · Category: Tutorials · Availability: FileDeck Free · Canonical URL: https://www.getfiledeck.com/docs/list-files-with-download-button/* You have files — PDFs, forms, guides — sitting in your Media Library, and you want a page that lists them with a working download button. Not a pile of pasted links: a proper list visitors can search and sort. Here's the five-minute version, using FileDeck's free plugin — no code, no paid upgrade. ## Why not just paste links? A handful of links in a page works fine — until about file ten. Then the problems arrive: no search, no order, no way to see the file type or size before clicking, and every added file means editing the page again. Browsers also decide for themselves whether a linked PDF opens or downloads. A document library plugin fixes all four: files become a searchable, sortable list with real download buttons, and adding a file never means touching the page again. ## Step 1: Install FileDeck **Plugins → Add New**, search for FileDeck, install and activate. FileDeck creates a "Document Library" page for you automatically — you can use that page or add a library to any page of your own. ## Step 2: Add your files Two ways: - **Files already in your Media Library:** turning existing media into documents in bulk is a Pro feature — see [bulk-convert the Media Library](/docs/bulk-convert-media-library/). In the free plugin you can attach an existing media file to a document one at a time with **Choose or upload file** on the document editor. - **New files:** same screen — drag and drop them. Add many at once; a batch category and tags can be applied in the same step. There's no cap on documents in the free version. ## Step 3: Put the list on a page Edit any page and add the **Document Library** block (or paste the `[filedeck]` shortcode). You'll see your files as a searchable table with a **Download** button per row — that's the whole job done. The block's sidebar lets you switch layouts (table, grid, gallery, or folders by category), and its **Open the library builder** button lets you choose columns like file size, type and date, and pick a sort order. To list only *some* files on a page, give those documents a category and scope the block to it (or use `[filedeck category="forms"]`). ## Step 4: Make the button behave By default the browser decides whether a click opens the file or saves it. If you want a file to always save to disk — or always open in a browser tab — edit the document and set **Delivery** to *Force download* or *Open in browser*. That's [per-document delivery control](/docs/delivery-control/), also free. ## What you get for free Search-as-you-type, category and tag filters, sortable columns, download counting, all four layouts, and unlimited documents. When you later need to restrict who can see certain files — a members' area, internal documents — that's when [access control](/docs/access-control-overview/) (Pro) enters; nothing about your setup changes, you just add rules. --- # Document library vs knowledge base plugin — which do you need? *Collection: Getting Started · Category: Which plugin do I need? · Availability: Free & Pro · Canonical URL: https://www.getfiledeck.com/docs/document-library-vs-knowledge-base/* **Make the knowledge in your files easy to find and use.** If your manuals, policies, guides and technical information already exist as documents, FileDeck helps readers use that knowledge without first rebuilding every file as a help article. Start with searchable document listings for free. Pro searches supported locally stored file contents and adds private access, versions and reviews. AI & Governance adds questions and answers grounded in your documents, with source references and permission-aware retrieval. ## Which approach fits your content? | Content and task | FileDeck approach | |---|---| | Manuals, policies, forms and datasheets | Organise them in a searchable, filterable library (Free) | | Readers need information within files | [Content search](/docs/content-search/) for supported local documents (Pro); [OCR for scanned PDFs](/docs/scanned-pdf-ocr/) when configured | | Readers ask questions across documents | Optional [Ask this library](/docs/ask-this-library/) answers, with sources (AI & Governance); provider usage is billed separately | | Files change and require review | [Version history](/docs/version-history/), the [approval gate](/docs/approval-gate/) and [review dates](/docs/review-cycles/) (Pro) | | Help content is primarily web-native articles | Use an article-authoring workflow; FileDeck can supply the associated document library | ## Give file-based knowledge a useful front end Display [previews](/docs/document-preview/), group related documents and let readers filter by topic or product. Pro adds [document feedback](/docs/document-feedback/) and content-gap reporting, so the team can see which resources are useful and what visitors searched for without finding. For restricted information, set the intended audience before publication. AI answers should be checked against their cited sources; the feature does not make every answer automatically correct. ## If you also publish articles Keep writing articles in the tool that suits your editorial workflow and use FileDeck for managed files. Link from an article to its supporting documents or embed a relevant library. FileDeck is not presented as a complete replacement for every article-publishing feature. ## FAQ ### Can FileDeck replace a knowledge base? It may cover the need when the knowledge lives mainly in files and the job is discovery, access and maintenance. Check article-specific requirements such as authoring templates and article navigation separately. ### Can I keep my existing knowledge-base plugin? Yes, you can use separate pages or embed a document collection where needed. Check compatibility with your own theme and plugins before launch; separate post types alone do not guarantee zero conflicts. ### Can FileDeck answer questions about cloud-linked files? Do not assume so. The current [cloud storage documentation](/docs/connect-cloud-storage/) says cloud-backed contents are not indexed. Use supported locally stored documents for content-indexed features and verify your configuration. --- Try FileDeck's document experience in the [live demo](https://www.getfiledeck.com/demo/), or [compare Free, Pro and AI & Governance](https://www.getfiledeck.com/pricing/). --- # Uploading large files *Collection: Managing Documents · Category: Adding Documents · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/large-file-uploads/* Every WordPress upload normally has to fit inside one request, so the biggest file your site accepts is whatever your host allows — typically somewhere between 8 MB and 64 MB. For a policy PDF that's fine. For a set of construction drawings, a scanned archive box or a training video it is not. FileDeck Pro removes that ceiling by uploading large files **in chunks**. The file is sliced in the browser, each slice is sent as its own small request, and the server reassembles them. No single request ever approaches your host's limit, so the practical maximum becomes your disk space rather than `upload_max_filesize`. > **FileDeck Pro** — there is nothing to configure. Large files simply upload. ## What you'll notice Not much, which is the point. Drop a large file on **Documents → Import & Export → Upload files** as usual. The progress bar moves more steadily than a single-request upload, because the browser genuinely knows how much has been received rather than guessing. The real difference shows up when something goes wrong. If your connection drops at 80%, the upload **resumes from 80%** rather than starting over — the server still holds the part it received and tells the browser where to continue. ## The size limit There is still a cap, deliberately. By default FileDeck accepts files up to **512 MB**. The parts land on your own server's disk while the upload is in progress, and an endpoint with no ceiling is an easy way for anyone who can add documents to fill your volume. Site owners who need more can raise it in code: ```php add_filter( 'filedeck_max_upload_bytes', function () { return 2 * 1024 * 1024 * 1024; // 2 GB } ); ``` Raise it with your available disk space in mind, not just your ambitions for the library. ## Who can upload Exactly the same people as before. Chunked upload is a transport detail, not a lower bar: it requires the same capabilities as any other document upload — permission to upload files, to edit documents, and to publish them. Someone who cannot add a document normally cannot add one this way either, and an upload in progress belongs to the person who started it and nobody else. ## Where in-progress files live Parts are written into FileDeck's protected folder, which already carries a deny-all rule, so a half-uploaded file is never reachable from the web. They are removed as soon as the upload finishes. Abandoned uploads — a closed tab, a browser crash — are cleared by a daily cleanup after 24 hours, so an interrupted upload can still be resumed the same day but never accumulates as wasted disk space. ## FAQ ### Do I still need to raise my host's PHP limits? No. That is the point of the feature — FileDeck sizes each chunk to sit comfortably below whatever `post_max_size` and `upload_max_filesize` your server reports, so it works within your existing limits rather than fighting them. ### Does this change what file types I can upload? No. The assembled file goes through exactly the same type and extension checks WordPress applies to any upload. A file type your site does not allow is still rejected — just faster, because the name is checked before the upload starts rather than after. ### Can I resume an upload tomorrow? Within 24 hours, yes, as long as it is the same file in the same browser session. After that the parts are cleaned up and the upload starts fresh. ### Does the free version have this? The free version uploads normally, in a single request, so it is bounded by your host's limit. Chunked and resumable uploading is a Pro feature. --- # Find PDFs that fail accessibility checks *Collection: Managing Documents · Category: Compliance · Availability: FileDeck AI · Canonical URL: https://www.getfiledeck.com/docs/accessibility-report/* If you publish documents for a public body, you have a legal duty to make them accessible — and the hard part is rarely fixing one PDF. It's knowing **which** of your two thousand PDFs are the problem. FileDeck screens the whole library and lists them. > **FileDeck AI tier** — the PDF accessibility report is included in all AI plans (from $119/year), > the tier above Free and Pro; not included in Pro. [See pricing](https://www.getfiledeck.com/pricing/) ## Read this first: what this tool is This is a **screening** tool. It is not a compliance check, and it cannot tell you a document is accessible. Automated testing finds only a minority of accessibility problems. FileDeck can tell you a PDF has no tag tree. It cannot tell you the tags are *wrong* — that the reading order is scrambled, that a heading is tagged as body text, that the alt text says "image1.png", or that a table's headers mean nothing to a screen reader. Those need a person. So use this to find the documents that **certainly** need work, not to certify the ones that don't. A document that passes every check here may still be unusable with a screen reader. We're explicit about this because the alternative is worse than having no tool: a report that let you believe a library was compliant would stop you looking. ## What it checks, and why each matters Go to **Documents → Compliance → Accessibility** and choose **Scan the library**. The scan runs in the background, so you can leave the page. | Finding | What it means | Relates to | | --- | --- | --- | | **Scanned image, no text** | The page is a picture. Nothing can be read aloud, searched, or reflowed. | WCAG 1.4.5, 1.1.1 | | **Not tagged for screen readers** | No structure tree, so a screen reader gets an undifferentiated wall of text — no headings, no lists, no table structure, no reliable reading order. Usually the most serious finding. | WCAG 1.3.1 · PDF/UA-1 7.1 | | **No document language set** | Assistive technology has to guess the language, so English can be read aloud with a French voice. | WCAG 3.1.1 | | **No document title** | The window or tab shows a filename instead of a name. | WCAG 2.4.2 | | **Could not be checked** | The file is corrupt, or encrypted in a way that blocks reading it. | Not a failure in itself | That last row matters more than it looks. FileDeck reports files it couldn't read as **unknown**, never as passes. A report that quietly counted unreadable files as fine would be flattering and wrong. ## Fixing what it finds FileDeck reports; it doesn't rewrite your PDFs. Remediation happens in whatever produced them: - **Scanned documents** need re-creating from the source, or running through OCR *and* then being tagged. FileDeck's [OCR](/docs/scanned-pdf-ocr/) makes a scan **searchable**, which is genuinely useful — but it does not make it accessible, and this report will still flag it as a scan. - **Untagged documents** are usually fixed at source: export from Word or InDesign with tagging enabled, rather than printing to PDF. Retro-fitting tags in Acrobat is possible but slow. - **Language and title** are two fields in the document properties of whatever wrote the file — the cheapest wins on the list, and worth doing in bulk. Re-run the scan after a batch of fixes to see the numbers move. ## FAQ ### Does this make my library WCAG compliant? No, and nothing in FileDeck will claim it does. It finds a specific set of machine-detectable failures. Compliance is a judgement about the whole document made by someone who can assess reading order, alt text quality and structure — none of which a script can see. ### What about Word, Excel and PowerPoint files? Only PDFs are screened. Office files have their own accessibility checkers built into the applications that make them, which see far more than an external scan could. Documents that aren't PDFs are skipped — and skipped is not the same as passed, so they aren't counted in the totals either. ### How long does a scan take? It runs in the background in small batches, so it never times out a page. A library of a few hundred PDFs finishes in minutes; several thousand takes longer. You can keep working while it runs. ### Does anything leave my server? No. The screening is structural parsing done locally — it doesn't call any AI provider, and no document content is sent anywhere. It's in the AI tier because of who needs it, not because it uses a model. ### Why is April 2027 the date everyone mentions? The US Department of Justice's ADA Title II rule sets WCAG 2.1 AA for state and local government web content, including PDFs — larger entities from April 2026 and smaller ones from April 2027. UK and EU public bodies have comparable duties already. If you're procuring now, this is the deadline the questions are about. --- # Custom document fields & advanced filtering *Collection: Managing Documents · Category: Custom fields · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/custom-fields/* FileDeck Pro lets you add your own fields to documents — **Department**, **Policy number**, **Publication date**, **Document owner**, **Jurisdiction**, **Status**, and anything else your library needs — then show them as columns and let visitors **filter** by them. Define fields once under **Documents → Fields**; every document editor then shows those fields, and any library can display and filter on them. > **FileDeck Pro** — this feature is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ## Define your fields Go to **Documents → Fields** and add a row per field. Each field has: - **Label** — what editors and visitors see (e.g. "Publication year"). - **Key** — the internal name used in columns and CSV headers (e.g. `publication_year`). Leave it blank to derive one from the label. - **Type** — one of: text, number, date, dropdown (single choice), multi-select, URL, user, or yes/no. - **Options** — the choices, one per line, for dropdown and multi-select fields. - **Categories** — restrict a field to documents in specific categories, so a "Policy number" field only appears on policies. - **Flags** — mark a field **Filterable** (it becomes a filter on the library) and/or **Searchable** (its value is matched by the library search box). Once saved, every document editor shows the applicable fields in the **Document File** panel, and you can fill them in as you add or edit documents. ## Show fields as columns Add a field to any library as a `cf:` column. Under **Documents → Settings → Display**, every defined field appears in the column builder; add it and it shows in the table (and as a grid attribute), sorted by value — dates and numbers sort correctly, not alphabetically. You can also list columns directly in the shortcode, e.g. `[filedeck columns="title,cf:department,cf:publication_year,link"]`. ## Filter by any field Fields marked **Filterable** become filters in the library's controls bar: - **Dropdown, multi-select, yes/no, user and text** fields get a **filter** in the library: a panel of tick boxes with a live count beside each value. Tick several values in one field and documents matching **any** of them show; separate fields still narrow each other. Each ticked value appears as a removable chip above the library, and the counts re-narrow as the other filters and the search box change. - **Sorting by a custom-field column** works like any other column, with one limit: only one of Size, Downloads, Type or a `cf:` column can be part of a multi-column sort at a time, because all four order by post meta. Pair one of them with Title, Date, Updated or ID freely. - **Number and date** fields show a **min / max range** — "revision between 3 and 5", "effective on or before 2026-03-01". Filters combine, and the current selection is saved in the page URL, so a filtered view can be bookmarked or shared. On large libraries the filtering and counts are computed on the server, so they stay fast no matter how many documents you have. ## Import and export fields in CSV Custom fields ride along with FileDeck's [CSV import](/docs/csv-import/) and [CSV export](/docs/csv-export/). Each field is a `cf:` column in the CSV — export writes it, and import reads it back. Multi-select values are separated with `|`, yes/no is `1` or blank, and a user field accepts an ID, username, or email address. This makes bulk-editing field values in a spreadsheet straightforward. ## Using Advanced Custom Fields (ACF) If your site already uses **Advanced Custom Fields**, FileDeck reads its values directly — an ACF field named `department` is available as a `cf:department` column and filter with no extra setup. To turn ACF field groups into FileDeck fields (so they get labels, types, and filters), open **Documents → Fields** and click **Import fields from ACF**. FileDeck mirrors the field groups shown on documents; it doesn't replace ACF or reimplement its editor. --- # Add a document *Collection: Managing Documents · Category: Documents · Availability: Free & Pro · Canonical URL: https://www.getfiledeck.com/docs/add-document/* To add a document, go to **Documents → Add New Document**, attach a file by drag-and-drop or from the Media Library, give the document a title, and publish. FileDeck captures the file's size, type, and filename automatically, so the document is ready to appear in your library as soon as it is published. ![The Documents screen in wp-admin listing documents with categories, type, size, and download counts](/docs/images/admin-documents-list.jpg) ## How to add a document 1. Go to **Documents → Add New Document** in wp-admin. 2. Enter a title. This is the name visitors see, search, and sort by in the library. 3. Attach the file. Drag and drop it onto the upload area, or pick an existing file from the **Media Library**. The editor pre-fills the title from your file, so you can attach first and then tidy the title. 4. Optionally add an excerpt (a short summary), a longer description in the editor, and a featured image. Each of these feeds its own library column — see the [document fields reference](/docs/document-fields/) for what maps where. 5. Assign document categories and tags in the sidebar. Categories power the folders layout and the category filter — see [Organize with categories and tags](/docs/categories-tags/). 6. Click **Publish**. The document now appears in any library that includes it, including the "Document Library" page FileDeck creates on activation. Adding many files at once? Use **Documents → Import & Export → Upload files** instead — drag in a whole batch and each file becomes a published document titled from its filename. See [bulk upload documents](/docs/upload-documents-bulk/). ## What FileDeck captures automatically When you attach a file, FileDeck records its size, type, and filename. You never enter these by hand, and they feed the `size`, `type`, and `filename` columns in your library. If you later swap the file, they update automatically. ## One file per document Each document holds exactly one file. When a new revision comes along, do not create a second document — replace the file on the existing document so its URL and download link stay the same. See [Replace or update a document's file](/docs/replace-update-file/). On Pro, every replacement is also recorded in [version history](/docs/version-history/), and a document can point at an externally hosted file instead of an upload — see [external files](/docs/external-files/). ## FAQ ### What file types can I upload? Any file type your WordPress site allows in the Media Library. PDFs, Office files, images, audio, video, and archives all work. ### Do I need to fill in the file size or type? No. FileDeck captures size, type, and filename automatically when you attach the file. ### Where does my document show up after publishing? On the auto-created "Document Library" page and in any [Document Library block](/docs/filedeck-block/) or shortcode whose category scope includes it. ## Duplicating a document Hover a row on **Documents** and choose **Duplicate**. You get a copy carrying the original's categories, tags, custom fields, access rules and delivery settings — the settings, not the file, are what take the time on a library with a house style. The copy is created as a **draft**, whatever the original was, and its title gets "(copy)" appended. A duplicate that published itself would put an unedited copy straight into the live library. Counters do not come across: the copy starts at zero downloads and zero views rather than inheriting a history it did not earn. Nor do the file checksum or any acknowledgment records, which belong to the original. --- # Document fields reference *Collection: Managing Documents · Category: Documents · Availability: Free & Pro · Canonical URL: https://www.getfiledeck.com/docs/document-fields/* This is a reference for every field on the FileDeck document edit screen and the library column each one feeds. Only a title and a file are needed for a working document; everything else is optional and can be added later. ## Fields you fill in | Field | What it is | Library columns it feeds | | --- | --- | --- | | **Title** | The document's name — what visitors see, search, and sort by. | `title` | | **Description** | The main editor content: full details, context, or instructions. | `description` | | **Excerpt** | A one- or two-line summary, useful in table layouts. | `excerpt` | | **Featured image** | A thumbnail for the document — cover art, a logo, or a preview image. | `image` | | **File** | The attached file, added by drag-and-drop upload or from the **Media Library**. One file per document. On Pro, a document can use an [external URL](/docs/external-files/) instead. | `size`, `type`, `filename`, `link` | | **Document categories** | Hierarchical grouping. Categories drive the [folders layout](/docs/folder-layout/), the category filter, and library scoping. | `categories` | | **Document tags** | Flat labels for cross-cutting traits such as language, year, or audience. Tags get their own filter. | `tags` | ## Fields captured automatically | Field | How it is set | Library columns it feeds | | --- | --- | --- | | **File size** | Read from the attached file. | `size` | | **File type** | Read from the attached file. | `type` | | **Filename** | Read from the attached file. | `filename` | | **Publish date** | Set when you publish; editable like any post date. | `date` | | **Last modified** | Updated whenever you save the document. | `modified` | | **ID** | The document's WordPress ID. | `id` | Size, type, and filename update automatically whenever you [replace the file](/docs/replace-update-file/) — there is nothing to edit by hand. ## Download count Every document has a lifetime download counter, shown in admin. It counts every download served through FileDeck's download endpoint and keeps counting across file replacements. See [download counts](/docs/download-counts/). Pro adds a full [download log with reports](/docs/download-log-reports/) showing who downloaded what and when. ## The full column list Libraries can display any of: `id, image, title, excerpt, content, categories, tags, date, modified, author, size, type, filename, downloads, views, preview, link` — plus a `cf:` column for any [custom field](/docs/custom-fields/) and a `tax:` column for any other taxonomy. Choose and order them with the drag-to-reorder column builder at **Documents → Settings → Display**, or with the `columns` attribute of the [shortcode](/docs/shortcode-reference/). The `link` column is the download link itself, available as a button, icon, or text link. The `views` column needs [activity logging](/docs/download-log-reports/) switched on — without it the column shows a dash rather than a confident zero, because "nobody looked at this" and "we are not recording" are different statements. ## FAQ ### Can a document have more than one file? No — one file per document. Replace the file to publish a new revision; on Pro each replacement is kept in [version history](/docs/version-history/). ### Can I edit the size, type, or filename fields? No. They are captured from the attached file itself; replace the file and they update automatically. ### What does the link column actually show? The document's download link, styled as a button, icon, or text link. It routes through FileDeck's download endpoint so every click is counted. --- # Link files hosted on Drive, Dropbox, or any URL *Collection: Managing Documents · Category: Documents · Availability: FileDeck Free · Canonical URL: https://www.getfiledeck.com/docs/external-files/* Any FileDeck document can point at an external URL instead of an uploaded file — Google Drive, Dropbox, OneDrive, SharePoint, Amazon S3, or any URL. The document looks and behaves like any other in your library, and clicking its download link sends the visitor to the external host. This is part of the free plugin; only the cloud-account connector further down is a Pro feature. ## How to link an external file 1. Go to **Documents → Add New Document** (or open an existing document under **All Documents**). 2. In the document's file settings, choose the external URL option instead of uploading, and paste the file's URL. 3. Fill in the title and any other fields as usual, then click **Publish** or **Update**. Adding many at once? The CSV import under **Documents → Import & Export → Bulk add & export** accepts external links in its `file_url` column, so a spreadsheet of Drive or SharePoint URLs becomes a library in one step. ## How external links behave - **Links, not sync.** FileDeck stores the URL and nothing else. If you update the file on Google Drive, visitors get whatever that URL serves — FileDeck never copies or mirrors the file. - **Downloads redirect.** Clicks still route through FileDeck's download endpoint, which counts the download and then redirects the visitor to the external host. [Download counting](/docs/download-counts/) works exactly as it does for uploaded files. - **File protection does not apply.** [Signed URLs and file protection](/docs/file-protection-signed-urls/) cover only files uploaded to your site. For an external link, the external host controls access. You can still use [access control](/docs/access-control-overview/) to restrict who sees the document in your library, but the underlying URL is only as private as the host makes it. - **Health scans watch them.** A [library health](/docs/library-health/) scan checks every published document, including external links that no longer resolve, and flags any that have gone stale. - **Google links preview and embed as live documents.** A pasted Google Docs, Sheets, Slides or Drive share link renders as a live embedded document in the [preview lightbox](/docs/document-preview/) and the [inline embed](/docs/inline-document-embed/) — FileDeck swaps the share link for Google's embeddable form automatically. (With Pro's extended previews, YouTube and Vimeo links render through each provider's privacy-friendly player the same way.) ## Connecting a cloud account to browse and sync Instead of pasting one URL at a time, Pro can connect an Amazon S3 account — or any S3-compatible service such as Cloudflare R2, Wasabi, DigitalOcean Spaces or MinIO — plus Dropbox, Google Drive, OneDrive, SharePoint and Box under **Documents → Cloud storage**, then browse it and attach files, or set a scheduled one-way pull that imports new files from a folder automatically. Attached files show their size in your library just like uploaded files. - **Administrators only.** Connecting an account, browsing it, and attaching files are all administrator-level actions, so the connected storage is never exposed to lower-level roles. - **Credentials stored encrypted.** The keys and tokens FileDeck holds for a connection are encrypted where they're stored. - **Downloads stay private.** For providers that support it, each download is served through a fresh, short-lived signed link generated per click, so a private bucket or account never has to be made public. ## Check sharing permissions first The most common problem with external files is the host's own sharing settings. On Google Drive, Dropbox, OneDrive, and SharePoint, the file must be shared publicly — or with every viewer who needs it — or visitors will hit a sign-in prompt or a permission error instead of the file. Before publishing, open the URL in a private browsing window to confirm it works while signed out. ## FAQ ### Does FileDeck sync or copy the external file? No. It stores a link only; the file lives on, and is served by, the external host. ### Do download counts work for external files? Yes. The click is counted by FileDeck's endpoint before the visitor is redirected to the host. ### Can I protect an external file with signed URLs? No. File protection applies only to files uploaded to your site; the external host controls access to its own files. ### Why do visitors get a permission error? The file is not shared widely enough on the host. Adjust the Drive, Dropbox, OneDrive, or SharePoint sharing settings so your viewers can open the URL. --- # Reference numbers: part numbers, document codes and form numbers *Collection: Managing Documents · Category: Documents · Availability: FileDeck Free · Canonical URL: https://www.getfiledeck.com/docs/reference-numbers/* A datasheet has a part number. A safety data sheet has a document code and a revision. A form has a form number. An exam paper has a paper code. Until now the only place to put it was the title — "DOC-0208 Terminator Pro brochure" — which made titles hard to read and the number impossible to sort by. Every document now has a **Reference number** field. It is free, optional, searchable, and available as a column. > **Free** — included in every FileDeck install. ## Set it On the document's edit screen, in the **File** box, under the file itself: **Reference number**. Any short text — `DOC-0208`, `SDS-2026-14`, `ISMD80D-075`, `Form 3971`. Save the document. Importing? The Pro [CSV import](/docs/csv-import/) takes a `reference` column, and the CSV export writes one. ## Show it Add the **Reference** column wherever you choose columns: the chips manager under **Documents → Settings → Display**, the shortcode's `columns` attribute, the block, or the Elementor widget's column picker. ``` [filedeck columns="reference,title,categories,date,link"] ``` The column is sortable — click the heading — in the table and folders layouts, including libraries large enough to run in server mode. (Grid and gallery cards show a fixed set of details, not columns.) Documents with no reference show a dash. ## Search it Visitors can type a reference into the library's search box and find the document — in the library search (inline and server mode) and in the Pro content search. Partial matches work: `0208` finds `DOC-0208`. (The site-wide ⌘K quick search matches titles, not the reference field.) ## FAQ ### Is the reference number shown to visitors who cannot open a restricted document? Yes — it is treated like the title, which a padlocked row also shows. It identifies the document; it is not its content. If the number itself is sensitive, leave the field empty and keep it in the description, which restricted visitors never see. ### Can I make it required, or give it a format? Not in the free field. Pro's [custom fields](/docs/custom-fields/) let you define a field with a type, a validation pattern and a filter of its own. The reference number is deliberately the simple case: one free-text field that most libraries need and none should have to configure. ### Does it have to be unique? No. FileDeck does not enforce uniqueness — two revisions of the same datasheet can share a reference, with the date column telling them apart. --- # Replace or update a document's file *Collection: Managing Documents · Category: Documents · Availability: Free & Pro · Canonical URL: https://www.getfiledeck.com/docs/replace-update-file/* To publish a new revision of a file, open the document and swap the attached file on the edit screen — the document's URL and download link stay exactly the same, so every link you have ever shared keeps working. On Pro, the old file is archived automatically in [version history](/docs/version-history/). ## How to replace the file 1. Go to **Documents → All Documents** and open the document. 2. In the **Document File** panel, remove the current file and attach the replacement — drag and drop the new file, or pick it from the **Media Library**. 3. Click **Update**. FileDeck re-captures the size, type, and filename from the new file automatically, so your library columns stay accurate without any manual edits. ## Why the download link never changes Downloads route through FileDeck's own endpoint (`/wp-json/filedeck/v1/download/{id}`) rather than the raw file URL. The endpoint always serves the document's current file, so bookmarks, emailed links, and buttons on other pages keep working after a replacement — visitors simply get the new file. The lifetime [download count](/docs/download-counts/) also continues on the same counter. ## Replace, don't duplicate Because each document holds exactly one file, the right way to ship a revision is to replace the file — not to create a second document. A duplicate would start with a fresh URL and a fresh counter, and it would leave the outdated copy sitting in your library. ## What Pro adds With FileDeck Pro, the document editor shows a **Version History** box: when you replace the attached file, the old file is archived there automatically, so earlier revisions are never lost. See [version history](/docs/version-history/). ## FAQ ### Will links I've already shared break? No. The download link points at the document, not the file, so it serves whatever file is currently attached. ### Do I lose the download count when I replace the file? No. The counter belongs to the document and keeps counting across replacements. ### Can I undo a replacement? On Pro, the old file is archived automatically in [version history](/docs/version-history/), so you can get the earlier revision back. On Free, re-attach the earlier file from the Media Library if it is still there. --- # Front-end document submission & editing *Collection: Managing Documents · Category: Front-end submission · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/front-end-submission/* FileDeck Pro lets people contribute and manage documents without ever seeing wp-admin. Add a submission form with `[filedeck_submit]`, list a user's own documents with `[filedeck_my_submissions]`, and let them fix their own submissions with `[filedeck_edit]`. Submissions feed your normal review queue — nothing goes live until you approve it. > **FileDeck Pro** — this feature is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ## Add a submission form Place `[filedeck_submit]` on any page (there's a **Submit Document** block too). Visitors enter a title, an optional description, an optional category, and upload **one or more files** — each file becomes its own document. Any [custom fields](/docs/custom-fields/) you've defined appear on the form too. Submissions are created as **Pending review** — they show up in **Documents** for you to approve, exactly like an editorial draft. Attributes: - `category="slug"` — fix every submission to one category (hides the picker). - `show_categories="0"` — hide the category dropdown. - `terms="1"` — require a consent checkbox. Set the wording with `terms_text="I confirm I have the right to share this document."`. - `require_login="0"` — allow logged-out submissions. This is opt-in and off by default; combine it with a spam check (see below). Uploads are restricted to a safe document allowlist (PDF, Office, images, text, zip). SVG is deliberately excluded because FileDeck treats SVG as a previewable type. Submissions are rate-limited per visitor, and reviewers are emailed when a document arrives (this uses your site's email — configure an SMTP plugin if your host can't send mail). ## Let people see their submissions `[filedeck_my_submissions]` lists the current user's own documents with their status — Draft, Awaiting review, Published — and, when you point it at an edit page, an **Edit** link: `[filedeck_my_submissions edit_url="https://example.com/edit-document/"]` ## Let people edit their own documents Put `[filedeck_edit]` on the page you referenced as `edit_url`. It loads the document from the link (`?filedeck_edit=`) and shows a pre-filled form — title, description, category, custom fields, and an optional **Replace file**. Saving updates the document; replacing the file **archives the previous version automatically** (restore it from the document's Version History), and re-runs FileDeck's file protection so a protected document stays protected. Editing is permission-aware: a contributor can edit **their own** documents while they're still Draft or Awaiting review, but not once you've published them; anyone with WordPress edit permissions can edit any document. This keeps published, approved documents stable while still letting submitters fix mistakes before review. ## Stopping spam on open submissions If you allow logged-out submissions, add a bot check. The submission form includes a hidden honeypot field and a per-visitor rate limit. For a stronger check, turn on a CAPTCHA under **Documents → Settings → Submissions**: pick **Cloudflare Turnstile** (free and cookieless) or **Google reCAPTCHA v2**, and paste that service's site and secret keys; the form then shows the widget and verifies it on submit. The same choice covers [bot protection for downloads](/docs/bot-protection-for-downloads/). There's also a `filedeck_submit_scan_file` hook for virus/malware scanning and a `filedeck_submit_spam_ok` hook if you'd rather wire in a different anti-spam plugin. Keeping `require_login="1"` (the default) is the simplest protection of all. --- # Import from a server folder (drop-folder workflow) *Collection: Managing Documents · Category: Import · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/import-server-folder/* Plenty of libraries start life as a folder of PDFs on the server — uploaded by SFTP, accumulated over years, organised by sub-folder. **Documents → Migrate → Import from a server folder** turns that folder into a library: every file becomes a document, sub-folders become nested categories, and file modification dates become document dates. > **FileDeck Pro** — on the Migrate screen, below the one-click importers. ## Setting it up 1. Enter the folder path — it must live inside `wp-content/uploads` (that's a deliberate safety rule, not a limitation: FileDeck will never sideload arbitrary server files into your Media Library, and it refuses anything that looks like a WordPress install root). 2. Save. The **Server folder** card above shows how many importable files it found — code files and anything outside WordPress's own allowed-upload list are never counted. 3. Import, as published documents or drafts. The job runs in resumable background chunks like every FileDeck import. ## The drop-folder workflow Tick **Re-scan daily for new files** and the folder becomes a drop folder: SFTP a file in, and within a day it appears in the library, filed by its sub-folder. Only *additions* are imported — a file changed in place is never re-imported (replacing a document's file is versioning's job, done deliberately in its editor), and deleting a file from the folder never deletes the document. One-way, additive, no surprises. Re-running the import by hand does the same thing immediately: files already imported are skipped, new ones come in. --- # Bulk convert Media Library files into documents *Collection: Managing Documents · Category: Import & Export · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/bulk-convert-media-library/* If your files already live in the WordPress Media Library, FileDeck Pro can turn them into documents in bulk — no re-uploading. Select the files, optionally pick a category, and FileDeck creates one document per file with the title taken from the filename. The original files are untouched. > **FileDeck Pro** — this feature is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ## How to convert files 1. Go to **Documents → Import & Export → Bulk add & export**. 2. In section **1. From the Media Library (drag & drop or select)**, select the existing Media Library files you want to turn into documents — any number. (The same section also accepts new files by drag and drop.) With [scanned-PDF OCR](/docs/scanned-pdf-ocr/) on, scans added here are not sent automatically; send them with **Send scanned PDF(s) for OCR** on the Search Index tab. 3. Optionally choose a category under **Assign to category** to apply to everything created in this batch. 4. Click **Create documents**. FileDeck creates one document per selected file. ## What each new document gets - A **title** taken from the filename. - The **file attached**, with size, type, and filename captured automatically. - The **category** you chose during conversion, if any. After converting, it is worth a quick pass through **Documents → All Documents** to tidy titles, add excerpts or featured images, and refine categories and tags — see the [document fields reference](/docs/document-fields/) for what each field feeds. ## Your originals stay untouched Conversion does not move, rename, copy, or delete anything in the Media Library. The new documents simply reference the existing files, which stay at their current URLs. One later exception: if you apply Pro [file protection](/docs/file-protection-signed-urls/) to a converted document, its file is moved into the protected uploads area — the same as for any protected document. ## FAQ ### Does converting delete or move my Media Library files? No. The files stay exactly where they are; the new documents reference them. ### What titles do the new documents get? The filename of each file. Edit any document afterward to give it a friendlier title. ### Can I assign categories during conversion? Yes — one category for the whole batch. Add more categories or tags per document afterward on the edit screen. ### What if a file already has a document? Conversion creates a new document for each file you select, so leave out files that already have documents to avoid duplicates. A file that FileDeck keeps protected for a restricted document is skipped, and the result screen tells you how many were, so a converted document can't hand that file to people the restricted document keeps out. --- # Bulk upload documents by drag and drop *Collection: Managing Documents · Category: Import & Export · Availability: FileDeck Free · Canonical URL: https://www.getfiledeck.com/docs/upload-documents-bulk/* The fastest way to fill a FileDeck library is **Documents → Upload Documents** (on Pro it sits under **Documents → Import & Export → Upload files**): drop one or many files onto the screen and each becomes a published document, titled from its filename. Before you drop, you can set an optional category and comma-separated tags that apply to the whole batch. There is no per-file form to fill in — the files go straight from your desktop to your library. ![The Upload Documents screen with batch category and tag fields](/docs/images/admin-upload-documents.jpg) ## How do I bulk upload files? 1. Go to **Documents → Upload Documents** — or, on Pro, **Documents → Import & Export → Upload files**. 2. Optionally choose a category for the batch. 3. Optionally enter tags, separated by commas — for example `2026, onboarding, hr`. 4. Drag your files onto the screen (or select them from your computer). Each file is uploaded to the Media Library and published as its own document. The document title comes from the filename, and the category and tags you set are applied to every document in the batch. Because the batch fields apply to each file in the batch, upload in themed groups: set the category to **Policies**, drop your policy PDFs, then change it to **Forms** and drop the next group. Titles are built from filenames — the extension dropped, hyphens and underscores turned into spaces, each word capitalised — so renaming files to clean, human-readable names before uploading saves editing afterwards. ## When should I use a different method? Upload Documents is built for speed, not detail. FileDeck has three other ways in, each suited to a different job: - **One document with a full description** — use [Add New Document](/docs/add-document/). The Upload Documents screen says it directly: "Prefer to write a document with a description? Use Add New Document instead." - **A spreadsheet of documents** — use [CSV import](/docs/csv-import/) under **Documents → Import & Export → Bulk add & export**, which supports per-row titles, excerpts, categories, tags, and external file URLs. - **Files already in your Media Library** — use [Bulk convert from the Media Library](/docs/bulk-convert-media-library/) rather than re-uploading them. ## FAQ ### Are uploaded documents published immediately? Yes. Each file becomes a published document as soon as the upload finishes. If you want to review them first, switch them back to draft from the Documents list afterwards. ### Can I set a different category per file? Not on this screen — the category and tags apply to the whole batch. Upload in groups per category, or use [CSV import](/docs/csv-import/) for per-row categories. ### Where do the uploaded files live? In the WordPress Media Library, like any other upload. FileDeck creates a document for each file and attaches it. --- # Connect cloud storage (S3, Dropbox, Drive, OneDrive, SharePoint, Box) *Collection: Managing Documents · Category: Import & Export · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/connect-cloud-storage/* Sometimes the files already live somewhere else — a bucket the engineering team writes to, a Dropbox folder the marketing team keeps current, a SharePoint library that is already the company's system of record. FileDeck Pro can list those files as documents without you copying anything into WordPress: the library, the search, the access rules and the download links are FileDeck's, and the bytes stay where they are. > **FileDeck Pro** — cloud storage is included in all Pro plans. > **Documents → Cloud storage**. [See pricing](https://www.getfiledeck.com/pricing/) ## The providers | Provider | How you connect | How downloads are served | |---|---|---| | **Amazon S3** (and S3-compatible: Cloudflare R2, Wasabi, DigitalOcean Spaces, MinIO) | Access key ID + secret, region, bucket, optional endpoint | Redirect to a short-lived signed URL, generated per download | | **Dropbox** | OAuth — your own Dropbox app | Redirect to a short-lived link | | **Google Drive** | OAuth — your own Google Cloud OAuth client | Streamed through your site (Drive has no redirectable link); Docs, Sheets and Slides are exported to PDF on the way out | | **OneDrive** | OAuth — your own Microsoft Entra (Azure) app | Redirect to a short-lived link | | **SharePoint** | OAuth — the same kind of Entra app, with site-level permission | Redirect to a short-lived link | | **Box** | OAuth — your own Box custom app | Redirect to a short-lived link | Browsing, attaching and scheduled pull are read-only: FileDeck lists and fetches, and never writes to your cloud account. (The one feature that does write is the optional [vault offload](/docs/vault-offload/), covered below.) Connecting a provider is an administrator-level action, because the browser can see the whole account. ## Connecting Amazon S3 1. Go to **Documents → Cloud storage** and pick the **Amazon S3** tab. 2. Fill in **Access key ID**, **Secret access key**, **Region** and **Bucket name**. Leave **Endpoint** blank for Amazon S3; for S3-compatible storage put the service host there (no `https://`, no bucket) — for Cloudflare R2 use region `auto`. 3. Click **Connect and test**. FileDeck lists the bucket immediately, so a wrong key, region or bucket name fails here rather than silently later. The bucket does **not** need to be public. Private objects are served through a short-lived signed link generated at download time, so your access rules stay in charge of who gets one. ### The minimum IAM policy For browsing, attaching and scheduled pull, the key only needs to list the bucket and read objects from it. A policy scoped to one bucket: ```json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::YOUR-BUCKET" }, { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::YOUR-BUCKET/*" } ] } ``` Replace `YOUR-BUCKET` with your bucket name. That is everything the features on this page need. [Vault offload](/docs/vault-offload/) is the exception: it mirrors protected files *into* your bucket, so it additionally needs `s3:PutObject` and `s3:DeleteObject` on `arn:aws:s3:::YOUR-BUCKET/*`. Add those two actions only if you turn offload on. ## Connecting an OAuth provider (Dropbox, Drive, OneDrive, SharePoint, Box) The OAuth providers all follow the same three-step shape, because FileDeck uses **your** app rather than a shared FileDeck one — the connection is between your site and your cloud account, with no third party in the middle. 1. **Copy the redirect URI.** Open **Documents → Cloud storage**, pick the provider's tab, and copy the redirect URI shown there. It is specific to your site, and it must be entered in the provider's console *exactly*. 2. **Create the app in the provider's console** and give it read access: | Provider | Console | What to create | |---|---|---| | Dropbox | [dropbox.com/developers/apps](https://www.dropbox.com/developers/apps) | An app with the `files.metadata.read` and `files.content.read` scopes | | Google Drive | [console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials) | An OAuth client of type **Web application**, with the Drive API enabled and the `drive.readonly` scope | | OneDrive | [Azure portal → App registrations](https://portal.azure.com/) | A **Web** app registration with the `Files.Read` and `offline_access` delegated permissions | | SharePoint | [Azure portal → App registrations](https://portal.azure.com/) | A **Web** app registration with the `Sites.Read.All` and `offline_access` delegated permissions | | Box | [app.box.com/developers/console](https://app.box.com/developers/console) | A **Custom App (OAuth 2.0)** with the "Read all files and folders" application scope | 3. **Paste the app credentials and connect.** Enter the **Client ID** and **Client secret** into the provider's tab, save them, then click **Connect** — you are sent to the provider to approve access and returned to the same screen, which then says *Connected*. A dot next to the tab name marks every connected provider. Credentials and tokens are stored encrypted in your site's database, and **Disconnect** on the same tab removes them. SharePoint works with SharePoint Online (Microsoft 365) only; on-premise SharePoint has no Graph endpoint and is not supported. Its browser goes one level deeper than the others — sites first, then each site's document libraries, then folders. ## Attaching files by hand Once a provider is connected, **Browse & attach** appears under it. Click through the folder tree, tick the files you want, optionally choose a category to file them under, and click **Add selected to library**. Each file becomes an ordinary FileDeck document — title, category, access rules, download counting, all as usual — that points at the cloud object instead of an uploaded file. There is no duplicate check here — attaching the same file twice gives you two documents pointing at the same cloud file. The scheduled pull below does check. ## Pulling a folder on a schedule Hand-picking gets old when a folder keeps gaining files. **Scheduled pull** maps a folder to a category and lets FileDeck do the picking: 1. Browse to the folder you want in **Browse & attach**. 2. Under **Scheduled pull → Add a rule**, the **Folder reference** is pre-filled with the folder you are looking at (leave it blank for the whole account). 3. Choose the **Category** new documents should go into, and click **Add rule**. From then on, roughly hourly, any new file under that folder is added to your library automatically. **Run pull now** does it immediately if you don't want to wait, and each rule shows when it last ran and how many documents it created. Two things worth knowing about the pull: - **It is one-way and additive.** Documents FileDeck already created are never changed, re-titled or removed — including when the file disappears from the cloud folder. Deleting is always your decision. It also never re-imports a file it has already created a document for: each document records the provider and the file's reference, and the pull skips references it already holds. - **It never runs twice over the same file.** Overlapping runs (the schedule firing while you click **Run pull now**) are detected, and the second one is skipped with a notice rather than importing everything a second time. ## How downloads work A cloud-backed document downloads through FileDeck's normal download route, so access rules, download counting and the activity log all apply exactly as they do for uploaded files. What happens after that depends on the provider: most redirect the visitor to a freshly generated, short-lived link, while Google Drive is streamed through your site because Drive gives no redirectable URL. Cloud files can also be included in [zip downloads](/docs/zip-downloads/) — FileDeck fetches them at build time, subject to the archive's size budget. ## Limits worth knowing before you commit - **File contents are not searched.** [Search inside documents](/docs/content-search/) indexes files stored on your own site; a cloud-backed document is found by its title, description, category and tags, not by the text inside the file. - **The connection is a dependency.** If a provider is disconnected, or its app credentials are revoked, those documents stay in the library but cannot be downloaded until it is reconnected. - **Very large files** are refused for operations that need the whole file on disk (building a zip), where a size budget applies. If a cloud download fails, the provider tab is the first place to look — a disconnected provider is by far the most common cause. See [downloads not working](/docs/troubleshooting-downloads/) for the rest. ## FAQ ### Does FileDeck copy my files into WordPress? No. Attaching a cloud file creates a document that references it. The bytes stay in your bucket or account, and your WordPress uploads folder does not grow. ### Can FileDeck upload to, or delete from, my cloud storage? Not for the features on this page — the permissions in the tables above grant listing and reading, nothing else. The optional [vault offload](/docs/vault-offload/) is the one feature that writes: it mirrors copies of your protected files into an S3-compatible bucket, and removes a copy when its document goes. Nothing else writes. ### Do I need to make my S3 bucket public? No, and you should not. Private objects are served through a short-lived signed link created per download, after FileDeck has checked the visitor is allowed the file. ### Can I connect more than one provider? Yes. Each provider has its own tab, its own connection and its own pull rules, and documents from all of them sit in the same library. --- # Export documents to CSV *Collection: Managing Documents · Category: Import & Export · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/csv-export/* FileDeck Pro exports your document library to a CSV file from **Documents → Import & Export → Bulk add & export**, in section **3. Export your library to CSV** — one row per document with its title, file, categories, tags, size, type, and download count. Use it as a backup, as the first half of a bulk-edit round trip, or to move documents to another site. > **FileDeck Pro** — this feature is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ## How to export 1. Go to **Documents → Import & Export → Bulk add & export**. 2. Scroll to **3. Export your library to CSV**. 3. Click **Export all documents as CSV**. A CSV file downloads to your computer. ## What the export contains Each row is one document with nine columns: `title`, `file_url`, `excerpt`, `category`, `tags`, `size`, `type`, `downloads` and `reference` — plus one `cf:` column for every [custom field](/docs/custom-fields/) you have defined. The title, file_url, excerpt, category, tag, reference and `cf:` columns re-import into FileDeck as-is via the [CSV importer](/docs/csv-import/); size, type, and downloads are informational. The CSV contains document data, not the files themselves — uploaded files stay in your Media Library, and external links stay on their hosts. ## Who gets which rows - **Administrators** export the whole library. - **Editors** (and anyone who can edit other people's documents) export every document they can edit, published or not. - **Authors and other roles that can publish** export the published documents they can edit, plus the published ones the library would open for them — so a restricted document they can't open, or a password-protected one they haven't unlocked, isn't in their export, and neither are unpublished documents. - A restricted or view-only document's `file_url` is filled in only for people who can edit that document. - **For everyone**, a file kept in FileDeck's [protected storage](/docs/file-protection-signed-urls/) leaves `file_url` empty. Its address isn't one you can share or re-import: the importer doesn't attach a protected file to a new document. ## Three ways to use it ### Backup Export on a schedule that suits you and keep the CSV with your site backups. If document data is ever lost or mangled, a [re-import](/docs/csv-import/) restores it. ### Bulk edit and re-import Export, open the CSV in a spreadsheet, and change whatever needs changing — retitle documents, recategorize in bulk, rewrite tags. Then import the edited file from the same **Bulk add / export** screen; the title, file, category, and tag columns round-trip as-is. ### Moving between sites Export from the old site and import on the new one (FileDeck Pro is needed on both). The file column references files by URL, so make sure the files themselves are reachable from the new site — still available at their URLs, or uploaded to the new site's Media Library before you import. ## FAQ ### Does the export include the actual files? No. It contains document data and file references; the files stay in the Media Library or on their external hosts. ### Can I edit the export and import it back? Yes. The title, file, category, and tag columns re-import as-is — that round trip is the intended workflow for backups and spreadsheet bulk edits. A row whose `file_url` is empty (a protected file) re-imports as a document without a file; attach one from its edit screen. ### Why is my export shorter than the library? If you aren't an administrator, the export holds the documents you can edit or open, not every document on the site. Ask an administrator for a full export. ### Can I use an export as an import template? Yes. Together with the sample CSV on the import screen, it is the quickest way to see exactly which columns the importer expects. --- # Import documents from CSV *Collection: Managing Documents · Category: Import & Export · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/csv-import/* FileDeck Pro imports documents in bulk from a CSV file under **Documents → Import & Export → Bulk add & export**, in section **2. From a CSV file**. Each row becomes a document, and the `file_url` column can point at a file in your Media Library or an external link. A sample CSV is available to download right on the screen. > **FileDeck Pro** — this feature is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ![The Bulk add / export screen used for CSV import and export](/docs/images/admin-bulk-add-export.jpg) ## Prepare your CSV A header row is required. Use one row per document with these columns: | Column | Contents | | --- | --- | | `title` | The document title. | | `file_url` | The file to attach: a Media Library URL, or an external link (Google Drive, Dropbox, SharePoint, and so on). | | `excerpt` | A short summary. | | `category` | The document category. | | `tags` | Tags for the document. | Not sure about the exact format? Download the sample CSV from the import screen and start from that. Save your file as UTF-8 — spreadsheet apps sometimes default to other encodings, which garbles accented characters. ## Run the import 1. Go to **Documents → Import & Export → Bulk add & export**. 2. Scroll to **2. From a CSV file**. 3. Choose your CSV file and run the import. 4. When it finishes, go to **Documents → All Documents** and spot-check a few results — titles, categories, and attached files. ## Linking files that aren't uploaded yet The `file_url` column does not have to point at your Media Library. Rows can reference [external files](/docs/external-files/) — Google Drive, Dropbox, SharePoint, or any other URL — so you can build a library around files that stay on their current hosts. A row whose `file_url` names a file FileDeck keeps protected for another document is created without that file: a protected file isn't shared with a new document. The result screen says how many rows that happened to, and administrators find them listed in [Library Health](/docs/library-health/). Attach a file from the document's edit screen. ## Migrating from another plugin? If what you have is a CSV export from another document library plugin, do not use this screen. Go to **Documents → Import & Export → Migrate** instead, which lets you map that export's columns to FileDeck's fields — see [migrate from another plugin](/docs/migrate-from-another-plugin/). ## Practical tips - **Test with 5 rows first.** Confirm columns, categories, and files come through the way you expect before importing hundreds. - **Start from the sample CSV or an export.** The sample CSV shows the exact header row; a [CSV export](/docs/csv-export/) of your own library gives you rows that re-import as-is. - **Keep it to one file per row.** Each document holds a single file; use one row per document. ## FAQ ### Do I need a header row? Yes. The first row must name the columns — `title, file_url, excerpt, category, tags`. The sample CSV on the import screen shows the exact format. ### Can the CSV attach files that aren't uploaded yet? Yes. `file_url` accepts an external link as well as a Media Library URL, so reference files wherever they live. ### I'm moving from another document library plugin — is this the right screen? No — use **Documents → Import & Export → Migrate**, which imports another plugin's CSV export and maps its columns to FileDeck. See [migrate from another plugin](/docs/migrate-from-another-plugin/). ### Can I re-import a FileDeck export? Yes. The title, file, category, and tag columns of a [CSV export](/docs/csv-export/) re-import as-is — a practical round trip for backups or spreadsheet bulk edits. --- # Migrate from Advanced File Manager *Collection: Managing Documents · Category: Import & Export · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/migrate-from-advanced-file-manager/* FileDeck Pro can turn a folder managed by Advanced File Manager into a proper document library. Go to **Documents → Import & Export → Migrate**; if your file manager points at a usable folder, it appears as an import source. Every file becomes a document and every sub-folder becomes a category. ## Read this first: it may not appear as a source Advanced File Manager is a file **manager**, not a document library. It stores no records of its own — no titles, no descriptions, no categories, no access rules. Its only setting that matters here is the directory it browses, and by default that directory is your **entire WordPress installation**. Importing that would turn every core, theme and plugin file on your site into a document, so FileDeck refuses. The source only appears when the managed folder is a genuine content folder: - it must be **inside `wp-content/uploads`**, and - it must not itself be a WordPress install root. If Advanced File Manager isn't offered on the Migrate screen, that's why. Point it at a real documents folder under your uploads directory first — for example `wp-content/uploads/documents` — then reload the Migrate screen. This is deliberate. An import that could reach anywhere on your server, driven by a setting stored in the database, is not a trade worth making for the small number of sites that would benefit. ## What gets imported | Advanced File Manager | FileDeck | |---|---| | The filename, tidied up | Document title | | The sub-folder the file is in | Category, with nesting preserved | | The file's modification time | Document date | | The file itself | A real Media Library attachment | There is **no description, date-added, owner or access data** to carry across. The source records none, so a document arrives with a title, a category and a file — you add the rest. Files are **copied into your Media Library**. Your originals stay exactly where they are, so the file manager keeps working and you can re-run safely. ## What is skipped Not everything in a folder is a document, so the import leaves out: - Anything WordPress would refuse as an upload — `.php`, `.htaccess`, `.ini`, `.sh`, `.sql` and the like. A stray code file can never become a document. - Web assets WordPress *does* allow but which are almost never documents: `.js`, `.css`, `.html`, `.htm`, `.xml`. A folder containing a built theme would otherwise import hundreds of them. - Hidden files and folders, and the file manager's own `.trash` and `.tmb` caches. A single import indexes up to **5,000 files**. Larger folders import the first 5,000; split the folder if you need more. ## Is this the right import for you? If you have been using Advanced File Manager purely to manage files on your server — an FTP client inside wp-admin — there may be nothing here worth importing, and that is a perfectly reasonable answer. This import is for people who have a folder of real documents and want visitors to be able to browse, search and download them. If your documents live in another plugin instead, see [migrating from another plugin](/docs/migrate-from-another-plugin/) — sources that store real records carry far more across. ## FAQ ### Why isn't Advanced File Manager listed on the Migrate screen? Almost always because its managed folder is the WordPress root (the default) or sits outside your uploads directory. Change it to a folder under `wp-content/uploads` and reload. ### Will it import my whole WordPress installation? No. It refuses to run against a WordPress install root, and against anything outside your uploads directory. ### Can I re-run it after adding files? Yes. Documents record which file they came from, so a re-run imports only what is new. The folder scan is cached briefly, so a very recent addition may take a few minutes to appear. --- # Migrate from BSK PDF Manager *Collection: Managing Documents · Category: Import & Export · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/migrate-from-bsk-pdf-manager/* FileDeck Pro imports a [BSK PDF Manager](https://wordpress.org/plugins/bsk-pdf-manager/) library directly — no CSV export, no column mapping. Go to **Documents → Import & Export → Migrate**, and if its data is present on your site FileDeck shows how many PDFs it found and an **Import** button. One click copies them across as FileDeck documents. Everything runs on your own server; nothing is sent anywhere. > **FileDeck Pro** — this feature is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ![The Migrate screen with a one-click import card for a detected plugin](/docs/images/admin-migrate.jpg) BSK PDF Manager keeps its library in its own database tables rather than in WordPress posts. That makes no difference to you here — FileDeck reads those tables directly, and the import works whether or not the plugin is still active. ## What comes across | From BSK PDF Manager | Becomes in FileDeck | | --- | --- | | PDF title (or its filename, if untitled) | Document title | | Description | Document description | | Categories, including sub-categories | Document categories, with the same nesting | | The file — whether uploaded through the Media Library or placed on the server | The document's file | | Download count | The document's [download count](/docs/track-file-downloads/) | | Publish date | The document's date | | Expiry date | The document's [expiry date](/docs/document-expiry/) | | Items marked restricted | Documents set to **logged-in users only** | | Items in a password-protected category | Documents set to **logged-in users only** | ## How to import 1. **Keep BSK PDF Manager active** for now, so FileDeck can read its files and categories. 2. Go to **Documents → Import & Export → Migrate**. 3. On the **BSK PDF Manager** card, choose whether to **Publish** the imported documents or bring them in as **drafts** to review first, then click **Import**. 4. The import runs in the background — you can leave the page. 5. When it finishes, open **Documents → All Documents** and spot-check a few: titles, categories, files, and counts. 6. Rebuild the search index at **Documents → Settings → Search Index** so [full-text search](/docs/content-search/) picks up the new documents. 7. Once you're happy, deactivate BSK PDF Manager. ## Is it safe to run more than once? Yes. FileDeck records which BSK PDF Manager item each imported document came from, so re-running the import **skips anything already imported** and never creates duplicates. If an import is interrupted, just start it again — it picks up where it left off. Your original content is never modified. ## FAQ ### What happens to items I deleted, or left as drafts? Anything in BSK PDF Manager's trash is **not imported at all** — it isn't counted, listed, or brought across. Anything you left as a **draft or pending** arrives as a FileDeck draft, *even if you chose "Publish" for the import*. Publishing something you had deliberately left unpublished isn't a decision the importer should make for you. Publish those documents yourself when you're ready. ### What about password-protected categories? BSK PDF Manager can put a password on a category. FileDeck's own password rules are per-category and stored hashed, so the password itself isn't copied across — instead, every document in a protected category arrives **restricted to logged-in users**, so it doesn't become public the moment you migrate. Once the import is done you can set up exactly the access you want with FileDeck's [category access rules](/docs/access-control-overview/), including [category passwords](/docs/password-protection/). ### My files aren't in the Media Library — does that matter? No. BSK PDF Manager stores some files as Media Library attachments and others directly on the server, and FileDeck handles both. Files are linked, not duplicated, and your originals stay where they are. The exception is a restricted PDF, or one in a password-protected category: FileDeck protects its own copy of that file, so the one BSK PDF Manager links to isn't moved. Once you've switched, delete the originals that no page or other document still uses. [Library Health](/docs/library-health/) lists the originals that are still public, with a button to delete or protect each one. Access you add in FileDeck *after* the import is different: it moves that document's file into protected storage, so the old plugin's link to that file stops working from then on. If any file can't be located, that document is still imported and flagged so you can re-attach it — you won't end up with a document silently pointing at nothing. The same goes for a Media Library file that FileDeck already keeps protected for another of your documents: it isn't shared with the imported one, which comes in without a file for you to attach, and [Library Health](/docs/library-health/) lists it. ### Do I have to keep BSK PDF Manager installed afterwards? No. Keep it active during the import so FileDeck can read its data, then deactivate (or delete) it once you've confirmed everything came across. ### Is anything not imported? Per-item thumbnails and the display-ordering number aren't carried across. FileDeck generates [PDF thumbnails](/docs/pdf-thumbnails/) from the files themselves, and library ordering is a per-library setting you choose when you display it. --- *BSK PDF Manager is a trademark of its respective owner. FileDeck is an independent product, not affiliated with or endorsed by it; the name is used only to identify the plugin whose data is being imported.* --- # Migrate from Document Library Pro / Lite *Collection: Managing Documents · Category: Import & Export · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/migrate-from-document-library/* FileDeck Pro imports a Document Library Lite or Document Library Pro library directly — no export file, no column mapping. Go to **Documents → Import & Export → Migrate**, and if Document Library's data is present on your site FileDeck shows how many documents it found and an **Import** button. One click copies them across as FileDeck documents, and everything runs on your own server; nothing is sent anywhere. > **FileDeck Pro** — this feature is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ![The Migrate screen with a one-click import card for a detected plugin](/docs/images/admin-migrate.jpg) ## What comes across | From Document Library | Becomes in FileDeck | | --- | --- | | Document title & description | Document title & description | | Document categories (including sub-categories) | Document categories, with the same nesting | | Document tags | Document tags | | A document's attached file | The document's file, kept as the same Media Library attachment | | A document's external link (Pro) | The document's file, linked by URL | | A document's WordPress password (**Visibility → Password protected**) | The same password on the FileDeck document ([password-protected visibility](/docs/password-protection/)) | Each document becomes one FileDeck document. Download counts and access rules aren't part of the import — Lite keeps neither, and if you used Pro's download tracking its history stays in that plugin — so you add [download tracking](/docs/track-file-downloads/) and [access control](/docs/access-control-overview/) in FileDeck afterwards. The one exception is a document you locked with WordPress's own **Password protected** visibility: it keeps that password. ## How to import 1. **Keep Document Library active** for now, so FileDeck can read its files and categories. 2. Go to **Documents → Import & Export → Migrate**. 3. On the **Document Library** card, choose whether to **Publish** the imported documents or bring them in as **drafts** to review first, then click **Import**. 4. The import runs in the background — you can leave the page. Progress shows how many documents have been processed. 5. When it finishes, open **Documents → All Documents** and spot-check a few: titles, categories, and files. 6. Rebuild the search index at **Documents → Settings → Search Index** so [full-text search](/docs/content-search/) picks up the new documents. 7. Once you're happy, deactivate Document Library. ## Is it safe to run more than once? Yes. FileDeck records which Document Library document each import came from, so re-running **skips anything already imported** and never creates duplicates. If an import is interrupted, just start it again — it picks up where it left off. Your original content is never modified. ## FAQ ### Does this work with both the free Lite and paid Pro versions? Yes. Document Library Lite and Document Library Pro store their documents the same way, so the importer reads both. Pro documents that link to an external file (rather than an uploaded one) come across as external links. ### Do my files get copied or moved? Usually neither. A document's uploaded file is already a Media Library attachment, and FileDeck links to that same attachment; external links are linked by URL. The exception is a password-protected document. FileDeck protects its own copy of its file, and leaves the one Document Library links to where it is, so Document Library keeps working while you check the new library. Once you've switched, delete the originals that no page or other document still uses; [Library Health](/docs/library-health/) lists the ones that are still public, with a button to delete or protect each one. If a file is one FileDeck already keeps protected for another of your documents, it isn't shared with the imported one: that document comes in without a file, and [Library Health](/docs/library-health/) lists it so you can attach one from its edit screen. ### What about download counts or access rules? Document Library Lite keeps no download counts or access rules of its own, so neither comes across — apart from a WordPress password set on a document, which it keeps (see above); if you used the paid version's download tracking, that history stays in Document Library rather than moving over. After importing you can turn on FileDeck's own [download tracking](/docs/track-file-downloads/) and apply [category-level access control](/docs/access-control-overview/). ### Do I have to keep Document Library installed afterwards? No. Keep it active during the import so FileDeck can read its data, then deactivate (or delete) it once you've confirmed everything came across. --- *Document Library Pro and Document Library Lite are trademarks of their respective owner. FileDeck is an independent product, not affiliated with or endorsed by it; the names are used only to identify the plugin whose data is being imported.* --- # Migrate from Download Attachments *Collection: Managing Documents · Category: Import & Export · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/migrate-from-download-attachments/* FileDeck Pro imports a [Download Attachments](https://wordpress.org/plugins/download-attachments/) library directly — no CSV export, no column mapping. Go to **Documents → Import & Export → Migrate**, and if its data is present on your site FileDeck shows how many files it found and an **Import** button. One click copies them across as FileDeck documents. Everything runs on your own server; nothing is sent anywhere. > **FileDeck Pro** — this feature is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ![The Migrate screen with a one-click import card for a detected plugin](/docs/images/admin-migrate.jpg) Download Attachments works differently from most document plugins: it doesn't create documents of its own. It takes charge of files already in your **Media Library** and attaches them to posts and pages. The import respects that — read the next section, because it explains what does and doesn't get picked up. ## What comes across | From Download Attachments | Becomes in FileDeck | | --- | --- | | Each file it manages | One FileDeck document | | The file's title | Document title | | The file's caption (or its description) | Document description | | Download count | The document's [download count](/docs/track-file-downloads/) | | The published posts and pages the file was attached to | A category named after each of those posts | **Only the files Download Attachments actually manages are imported** — not your whole Media Library. The plugin marks a file the moment you first attach it, and FileDeck looks for exactly that mark. Photos, logos and every other media item it never touched are left alone. That includes files nobody has downloaded yet: a brand-new attachment with a count of zero is still one of your downloads, and it comes across. ## Where your documents end up The only way Download Attachments organises files is by which post or page they're attached to, so that's what FileDeck turns into categories. A file attached to your *Annual Reports* page lands in an **Annual Reports** category; a file attached to three pages joins all three. These categories are created as a flat list rather than mirroring your page hierarchy. A page's nesting describes your site's navigation, not how its downloads relate to one another, so copying it would invent structure your library never had. If you want nesting, set it up in **Documents → Categories** after the import — you can drag categories under one another there. Only public posts become categories: category names are listed publicly, so a private, draft or password-protected post's title isn't turned into one. Files that weren't attached to any public post arrive uncategorised, and as drafts (see below). ## How to import 1. **Keep Download Attachments active** for now, so FileDeck can read its data. 2. Go to **Documents → Import & Export → Migrate**. 3. On the **Download Attachments** card, choose whether to **Publish** the imported documents or bring them in as **drafts** to review first, then click **Import**. 4. The import runs in the background — you can leave the page. 5. When it finishes, open **Documents → All Documents** and spot-check a few: titles, categories, files, and counts. 6. Rebuild the search index at **Documents → Settings → Search Index** so [full-text search](/docs/content-search/) picks up the new documents. 7. Once you're happy, deactivate Download Attachments. ## Is it safe to run more than once? Yes. FileDeck records which file each imported document came from, so re-running the import **skips anything already imported** and never creates duplicates. If an import is interrupted, just start it again — it picks up where it left off. ## FAQ ### Are my files copied or moved? Usually neither. Each document points at the same Media Library file Download Attachments used, so the file isn't duplicated on disk, and deactivating Download Attachments afterwards doesn't touch your files. If a file is one FileDeck already keeps protected for another of your documents, it isn't shared with the imported one: that document comes in as a draft without a file, and [Library Health](/docs/library-health/) lists it so you can attach one from its edit screen. ### Will my download counts be preserved? Yes — each file's count is carried over, so your numbers don't reset to zero. ### What about files I'd excluded from a post's list? Download Attachments lets you hide a file from an individual post's list without detaching it. That's a display setting for that post, not a permission, so it isn't carried across — the file is still imported as a document. Once in FileDeck you control what appears where by choosing which categories each library shows. ### Will every imported document be published? Only the ones Download Attachments showed publicly. A file listed only on private, draft or password-protected posts, or on no post at all, arrives as a **draft** even if you chose **Publish**, so a file that appeared only on private or unpublished posts doesn't turn up in your library. A file you hid from a published post's list still arrives published (see below). Review those drafts and publish the ones you want. ### Does anything become restricted? Usually not. Download Attachments has no access control of its own, so documents arrive with your default visibility. The exception is a WordPress password set on a file itself — rare, since the Media Library screens don't offer one: a file that has one keeps it, the document asks for the same password, and FileDeck protects its own copy of the file. If some of these files should be private, set that up afterwards with FileDeck's [access rules](/docs/access-control-overview/) — [restricting downloads to logged-in users](/docs/restrict-downloads-logged-in-users/) is usually the quickest place to start. ### Do I have to keep Download Attachments installed afterwards? No. Keep it active during the import so FileDeck can read its data, then deactivate (or delete) it once you've confirmed everything came across. --- *Download Attachments is a trademark of its respective owner. FileDeck is an independent product, not affiliated with or endorsed by it; the name is used only to identify the plugin whose data is being imported.* --- # Migrate from Download Monitor *Collection: Managing Documents · Category: Import & Export · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/migrate-from-download-monitor/* FileDeck Pro imports a [Download Monitor](https://wordpress.org/plugins/download-monitor/) library directly — no CSV export, no column mapping. Go to **Documents → Import & Export → Migrate**, and if Download Monitor's data is present on your site FileDeck shows how many downloads it found and an **Import** button. One click copies your downloads across as FileDeck documents. Everything runs on your own server; nothing is sent anywhere. > **FileDeck Pro** — this feature is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ![The Migrate screen with a one-click import card for a detected plugin](/docs/images/admin-migrate.jpg) ## What comes across | From Download Monitor | Becomes in FileDeck | | --- | --- | | Download title & description | Document title & description | | Download categories (including sub-categories) | Document categories, with the same nesting | | Download tags | Document tags | | The download's current version file | The document's file — kept as a Media Library attachment where possible, otherwise linked by URL | | Each older version's file, when it's stored on this site | An entry in the document's [version history](/docs/version-history/), with its date and version number | | Total download count | The document's [download count](/docs/track-file-downloads/) | | "Members only" downloads | Documents set to **logged-in users only** visibility | | Password-protected downloads | Documents that ask for the same password ([password-protected visibility](/docs/password-protection/)) | Each download becomes one FileDeck document, using its current version's file. Its older versions go into the document's [version history](/docs/version-history/), oldest first, each with its date and version number, where editors can download or restore them. Each one is a copy FileDeck keeps, so Download Monitor's own files stay where they are. A version that only links to a file on another site has no file here to keep, so it's left out, and the history keeps the newest 20. Imported a download before this? Run the import again to fill in its history. ## How to import 1. **Keep Download Monitor active** for now, so FileDeck can read its files and categories. 2. Go to **Documents → Import & Export → Migrate**. 3. On the **Download Monitor** card, choose whether to **Publish** the imported documents or bring them in as **drafts** to review first, then click **Import**. 4. The import runs in the background — you can leave the page. Progress shows how many downloads have been processed. 5. When it finishes, open **Documents → All Documents** and spot-check a few: titles, categories, files, and counts. 6. Rebuild the search index at **Documents → Settings → Search Index** so [full-text search](/docs/content-search/) picks up the new documents. 7. Once you're happy, deactivate Download Monitor. Its download links and shortcodes keep working once it's off: see [what happens to your old links](/docs/old-links-after-migration/). ## Is it safe to run more than once? Yes. FileDeck records which Download Monitor download each imported document came from, so re-running the import **skips anything already imported** and never creates duplicates. If an import is interrupted, just start it again — it picks up where it left off. Your original Download Monitor content is never modified. ## FAQ ### Do my files get copied or moved? Sometimes. Files already in your Media Library are linked as attachments, and a file Download Monitor stored elsewhere on this site is registered in the Media Library where it already is. Files in Download Monitor's protected `dlm_uploads` folder, where it puts the files you upload through it, are copied in instead, leaving the original in place, since that folder is closed to the web. A file on another site stays linked by its URL. Members-only and password-protected downloads are the other case where FileDeck makes a copy. Such a download whose file is on this site becomes a restricted document, and FileDeck protects its own copy of the file instead of moving Download Monitor's. The original stays where it was, so Download Monitor's links keep working and you can run both plugins side by side while you check the new library. Once you've switched, delete the originals that no page or other document still uses: until you do, they're only as private as Download Monitor kept them. [Library Health](/docs/library-health/) lists the originals that are still public, with a button to delete or protect each one. Access you add in FileDeck *after* the import is different: it moves that document's file into protected storage, so the old plugin's link to that file stops working from then on. ### Will my download counts be preserved? Yes — each download's total count is carried over to the FileDeck document, so your numbers don't reset to zero. ### What about members-only downloads? A Download Monitor download marked "members only" becomes a FileDeck document restricted to logged-in users, so it stays gated after the move. You can refine access further with FileDeck's [category-level access rules](/docs/access-control-overview/) afterwards. ### What about password-protected downloads? A download you locked with WordPress's own **Password protected** visibility keeps that password. FileDeck carries it across, so the imported document asks for the same password before its file can be downloaded and shows as locked in your library until then. Visitors who already had the password keep using it. To change or remove it later, edit the document and use its **Visibility** setting — see [password protection](/docs/password-protection/). If you imported before FileDeck brought passwords across, those documents came in without one, and importing again leaves them as they are. The **Migrate** screen lists them, with a button to add the same passwords. ### Do I have to keep Download Monitor installed afterwards? No. Keep it active during the import so FileDeck can read its data, then deactivate (or delete) it once you've confirmed everything came across. ### Can I import only some downloads? The one-click import brings the whole library across. Import as **drafts** if you'd rather review everything before it goes live, then publish or trash documents individually. --- *Download Monitor is a trademark of its respective owner. FileDeck is an independent product, not affiliated with or endorsed by it; the name is used only to identify the plugin whose data is being imported.* --- # Migrate from FileBird *Collection: Managing Documents · Category: Import & Export · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/migrate-from-filebird/* FileDeck Pro reads your [FileBird](https://wordpress.org/plugins/filebird/) folders directly and turns the documents in them into a document library — no CSV export, no column mapping. Go to **Documents → Import & Export → Migrate**, and if FileBird's folders are present FileDeck shows how many documents it found and an **Import** button. > **FileDeck Pro** — this feature is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ![The Migrate screen with a one-click import card for a detected plugin](/docs/images/admin-migrate.jpg) > **Using FileBird Document Library too?** This is the import you want. FileBird Document Library displays FileBird's folders rather than storing anything itself, so its documents *are* your FileBird documents — one import covers both. ## What comes across | From FileBird | Becomes in FileDeck | | --- | --- | | Each document filed in a folder | One FileDeck document | | The file's title | Document title | | The file's caption (or its description) | Document description | | Your folder tree, including sub-folders | Document categories, with the same nesting | Files are **linked, not copied** — each document points at the same Media Library file it always did, so nothing is duplicated on disk and FileBird keeps working exactly as before. FileBird can file any item in your Media Library, including files your FileDeck documents already use. If a file is one FileDeck already keeps protected for another of your documents, it isn't shared with the imported one: that document comes in as a draft without a file, and [Library Health](/docs/library-health/) lists it so you can attach one from its edit screen. ## Your photos are not imported This is the important part. FileBird organises your **entire Media Library**, so its folders hold your images just as readily as your PDFs. Importing everything in them would turn a few thousand photos into a few thousand "documents" and bury the files you actually wanted. So by default FileDeck imports **documents only**: PDFs, Word, Excel, PowerPoint, OpenDocument, text, CSV, archives — anything that isn't an image, a video or an audio file. The number on the Migrate card already reflects that, so what you're told you'll get is what you get. If you genuinely do want images imported as documents — a library of print-ready artwork, say — a developer can change it with one filter: ```php // Import everything FileBird has filed, images included. add_filter( 'filedeck_import_filebird_skip_mime', '__return_empty_array' ); ``` ## How your folders map Your folder tree is recreated as FileDeck categories with the same nesting, so *Policies → HR* becomes an **HR** category inside **Policies**. Two details worth knowing: - **Collections aren't folders.** FileBird collections are a saved grouping laid over your folders, so importing them as well would file the same document under two names. Only folders become categories. A document that lives *only* in a collection isn't imported. - **A document in more than one folder keeps all of them.** FileDeck is happy for a document to be in several categories, so nothing is dropped. Files not in any FileBird folder aren't part of the library and aren't imported. ## How to import 1. **Keep FileBird active** for now, so FileDeck can read its folders. 2. Go to **Documents → Import & Export → Migrate**. 3. On the **FileBird** card, choose **Publish** or import as **drafts**, then click **Import**. 4. The import runs in the background — you can leave the page. 5. When it finishes, check **Documents → All Documents** and **Documents → Categories**. 6. Rebuild the search index at **Documents → Settings → Search Index** so [full-text search](/docs/content-search/) picks up the new documents. ## Do I have to uninstall FileBird? No — and you may well want to keep it. FileBird organises your Media Library in wp-admin; FileDeck publishes a document library on your site. They don't conflict, and because files are linked rather than copied, both keep working on the same files. ## Is it safe to run more than once? Yes. FileDeck records which file each document came from, so re-running **skips anything already imported** and never creates duplicates. If you add more documents to FileBird later, run it again to bring across just the new ones. ## FAQ ### Will my documents keep their download counts? FileBird doesn't record downloads, so there are none to bring across. From the import onwards FileDeck [counts downloads](/docs/track-file-downloads/) for every document. ### Does any access control come across? FileBird has no access control — folders organise the admin Media Library, they don't restrict anyone. So imported documents get your normal visibility. If some should be private, set that up afterwards with FileDeck's [access rules](/docs/access-control-overview/). The one exception is a WordPress password set on a file itself. The Media Library screens don't offer one, so it's rare, but a file that has one keeps it: the document asks for the same password, and FileDeck protects its own copy of the file. ### What about FileBird Pro's colours, icons and custom sort order? Those are display settings for the Media Library rather than facts about your documents, so they aren't imported. Your folder names and structure are. --- *FileBird and FileBird Document Library are trademarks of their respective owner. FileDeck is an independent product, not affiliated with or endorsed by them; the names are used only to identify the plugin whose data is being imported.* --- # Migrate from Shared Files *Collection: Managing Documents · Category: Import & Export · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/migrate-from-shared-files/* FileDeck Pro imports a [Shared Files](https://wordpress.org/plugins/shared-files/) library directly — no export file, no column mapping. Go to **Documents → Import & Export → Migrate**, and if Shared Files' data is present on your site FileDeck shows how many files it found and an **Import** button. One click copies them across as FileDeck documents, and everything runs on your own server; nothing is sent anywhere. > **FileDeck Pro** — this feature is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ![The Migrate screen with a one-click import card for a detected plugin](/docs/images/admin-migrate.jpg) ## What comes across | From Shared Files | Becomes in FileDeck | | --- | --- | | File title & description | Document title & description | | File categories (including sub-categories) | Document categories, with the same nesting | | File tags | Document tags | | The file itself | The document's file — the same Media Library attachment where the file came from the library; a file Shared Files managed itself is registered as a new attachment where it already sits on disk | | Download counter | The document's [download count](/docs/track-file-downloads/) | | Password-protected files | Documents set to **logged-in users only** visibility | | A WordPress password on the file's own post (**Visibility → Password protected**) | The same password on the document ([password-protected visibility](/docs/password-protection/)) | Each file becomes one FileDeck document. ## How to import 1. **Keep Shared Files active** for now, so FileDeck can read its files, categories and tags. 2. Go to **Documents → Import & Export → Migrate**. 3. On the **Shared Files** card, choose whether to **Publish** the imported documents or bring them in as **drafts** to review first, then click **Import**. 4. The import runs in the background — you can leave the page. Progress shows how many files have been processed. 5. When it finishes, open **Documents → All Documents** and spot-check a few: titles, categories, files and counts. 6. Rebuild the search index at **Documents → Settings → Search Index** so [full-text search](/docs/content-search/) picks up the new documents. 7. Once you're happy, deactivate Shared Files. Its download links and shortcodes keep working once it's off: see [what happens to your old links](/docs/old-links-after-migration/). ## Is it safe to run more than once? Yes. FileDeck records which Shared Files file each imported document came from, so re-running **skips anything already imported** and never creates duplicates. If an import is interrupted, just start it again — it picks up where it left off. Your original content is never modified. ## FAQ ### Do my files get copied or moved? Usually neither. Files that came from your Media Library are linked as the same attachment. (If that file is one FileDeck already keeps protected for another of your documents, it isn't shared with the imported one: that document comes in without a file, and [Library Health](/docs/library-health/) lists it so you can attach one from its edit screen.) Files Shared Files managed itself (in its own `uploads/shared-files` folder) are registered in the Media Library where they already are — a new attachment record pointing at the existing file, so the file is not duplicated or moved. That is what gives those documents the zip checkbox, the preview lightbox, thumbnails and vault protection, exactly like an uploaded file. The exception is a password-protected file kept on this site. It becomes a logged-in-only document, and FileDeck protects its own copy of the file rather than moving the one Shared Files uses, whether you publish or import as drafts. Shared Files' links keep working while you run both plugins. Once you've switched, delete the originals that no page or other document still uses: until you do, they're only as private as Shared Files kept them. [Library Health](/docs/library-health/) lists the originals that are still public, with a button to delete or protect each one. Access you add in FileDeck *after* the import is different: it moves that document's file into protected storage, so the old plugin's link to that file stops working from then on. ### I migrated earlier and my documents have no checkboxes or preview Earlier versions linked plugin-managed files by URL instead of registering them, and a URL-linked document misses the attachment-only features. Go to **Documents → Settings → Health**: it counts those documents and offers **Attach them now**, which registers each file in place. Large libraries are processed in batches of 100 per click, or all at once with `wp filedeck attach-local-files`. ### Will my download counters be preserved? Yes — each file's counter is carried over to the FileDeck document, so your numbers don't reset to zero. ### What happens to password-protected files? They become FileDeck documents restricted to logged-in users, so they stay gated after the move. If you want to keep a password prompt, put those documents in a category and [set a category password](/docs/password-protection/), or give a single document its own password. A password set with WordPress's own **Visibility → Password protected** on a file's post is a different setting from Shared Files' file password, and it comes across as it is: the document asks for the same password before its file can be downloaded. ### My tags didn't come across — why? Shared Files lets you choose which tag taxonomy it uses (by default WordPress' own tags). FileDeck reads whichever one your site is set to, but only while Shared Files is active — so run the import before you deactivate it. ### Do I have to keep Shared Files installed afterwards? No. Keep it active during the import so FileDeck can read its data, then deactivate and delete it once you've confirmed your documents came across. Delete the plugin from **Plugins → Installed Plugins**, not the files from inside Shared Files' own screen: while Shared Files is active, permanently deleting one of its entries also removes the file from the server, and for an unrestricted document that is the file FileDeck now serves. Removing the plugin itself leaves the files alone. ### Can I delete the `shared-files` folder? No, keep it. FileDeck doesn't copy or move unrestricted files during the import: each is registered where it already sits, in `wp-content/uploads/shared-files/`, and those downloads, previews and thumbnails are served from there. Deleting that folder would break those documents. Password-protected files are the exception: FileDeck has its own protected copy of each, so their originals can go once you've switched. --- *Shared Files is a trademark of its respective owner. FileDeck is an independent product, not affiliated with or endorsed by it; the name is used only to identify the plugin whose data is being imported.* --- # Migrate from Simple Download Monitor *Collection: Managing Documents · Category: Import & Export · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/migrate-from-simple-download-monitor/* FileDeck Pro imports a [Simple Download Monitor](https://wordpress.org/plugins/simple-download-monitor/) library directly — no CSV export, no column mapping. Go to **Documents → Import & Export → Migrate**, and if Simple Download Monitor's data is present on your site FileDeck shows how many downloads it found and an **Import** button. One click copies your downloads across as FileDeck documents. Everything runs on your own server; nothing is sent anywhere. > **FileDeck Pro** — this feature is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ![The Migrate screen with a one-click import card for a detected plugin](/docs/images/admin-migrate.jpg) > **Not the same plugin as Download Monitor.** Simple Download Monitor (by Tips and Tricks HQ) and [Download Monitor](/docs/migrate-from-download-monitor/) are two different plugins that store their data differently. FileDeck detects each one separately — if you have both, you'll see two cards and can import each. ## What comes across | From Simple Download Monitor | Becomes in FileDeck | | --- | --- | | Download title | Document title | | The download's description field | Document description | | Download categories (including sub-categories) | Document categories, with the same nesting | | Download tags | Document tags | | The download's file URL | The document's file — kept as a Media Library attachment where possible, otherwise linked by URL | | Total downloads (logged downloads plus your count offset) | The document's [download count](/docs/track-file-downloads/) | | Downloads gated by "Only Allow Logged-in Users to Download" | Documents set to **logged-in users only** visibility | | Password-protected downloads | Documents that ask for the same password ([password-protected visibility](/docs/password-protection/)) | Each download becomes one FileDeck document. ## How to import 1. **Keep Simple Download Monitor active** for now, so FileDeck can read its files, categories and download log. 2. Go to **Documents → Import & Export → Migrate**. 3. On the **Simple Download Monitor** card, choose whether to **Publish** the imported documents or bring them in as **drafts** to review first, then click **Import**. 4. The import runs in the background — you can leave the page. Progress shows how many downloads have been processed. 5. When it finishes, open **Documents → All Documents** and spot-check a few: titles, categories, files, and counts. 6. Rebuild the search index at **Documents → Settings → Search Index** so [full-text search](/docs/content-search/) picks up the new documents. 7. Once you're happy, deactivate Simple Download Monitor. Its download links and shortcodes keep working once it's off: see [what happens to your old links](/docs/old-links-after-migration/). ## Is it safe to run more than once? Yes. FileDeck records which Simple Download Monitor download each imported document came from, so re-running the import **skips anything already imported** and never creates duplicates. If an import is interrupted, just start it again — it picks up where it left off. Your original Simple Download Monitor content is never modified. ## FAQ ### Will my download counts be preserved? Yes. Simple Download Monitor works out a download's total by counting the rows it logged for that download and adding the **count offset** you can set on each item. FileDeck adds up the same two numbers, so the figure you see after importing matches the figure you saw before. Two things are worth knowing. If a download had logging switched off (**Do not log downloads for this item**), there are no rows to count — its total comes from the offset alone, exactly as it did in Simple Download Monitor. And if the plugin's log table has already been removed from your database, only the offset survives; FileDeck uses it rather than importing a zero. ### What about downloads that only logged-in users could get? Simple Download Monitor gates downloads with a single site-wide setting, **Only Allow Logged-in Users to Download**, plus a per-item checkbox that lets an individual download ignore it. FileDeck reads both. If the site-wide setting was on, imported documents become **logged-in users only**, and FileDeck protects its own copy of each file kept on this site. Simple Download Monitor's originals stay where they were, so its links keep working while you run both plugins; once you've switched, delete the ones that no page or other document still uses, because until then they're only as private as Simple Download Monitor kept them. [Library Health](/docs/library-health/) lists the originals that are still public, with a button to delete or protect each one. Access you add in FileDeck *after* the import is different: it moves that document's file into protected storage, so the old plugin's link to that file stops working from then on. Any download that opted out of the global setting stays public. You can refine access further with FileDeck's [category-level access rules](/docs/access-control-overview/) afterwards. ### What about password-protected downloads? Simple Download Monitor's password protection is WordPress's own post password, set on the download. FileDeck carries that password across, so each imported document asks for the same password before its file can be downloaded, and shows as locked in your library until it is entered. Visitors who already had the password keep using it. A password counts as a restriction, so FileDeck protects its own copy of the file, as for a logged-in-only download (above). To change or remove the password later, edit the document and use its **Visibility** setting — see [password protection](/docs/password-protection/). If you imported before FileDeck brought passwords across, those documents came in without one, and importing again leaves them as they are. The **Migrate** screen lists them, with a button to add the same passwords. ### Do my files get copied or moved? Copied in two cases; otherwise linked where they are. Files already in your Media Library are linked as attachments; a file elsewhere on this site is registered in the Media Library where it already is, and a file on another site is linked by its URL. The first exception is Simple Download Monitor's own protected folder (`uploads/sdm-uploads`), which is closed to direct web access — a file there would be unreachable if FileDeck merely linked to it, so it's copied into your Media Library where FileDeck can serve and protect it. The second is a logged-in-only or password-protected download, which gets its own protected copy as described above. Your originals are left in place either way. ### What happens to the file size I typed in? Simple Download Monitor lets you type a file size for display, like "2.15 MB". FileDeck ignores that text and measures the real file instead, so the size shown is always accurate. ### Is anything not imported? Two fields have no FileDeck equivalent and are skipped: the per-item **version** string, and the **thumbnail image** URL. FileDeck generates [PDF thumbnails](/docs/pdf-thumbnails/) from the file itself, so most libraries end up with thumbnails anyway. ### Do I have to keep Simple Download Monitor installed afterwards? No. Keep it active during the import so FileDeck can read its data, then deactivate (or delete) it once you've confirmed everything came across. ### Can I import only some downloads? The one-click import brings the whole library across. Import as **drafts** if you'd rather review everything before it goes live, then publish or trash documents individually. --- *Simple Download Monitor is a trademark of its respective owner. FileDeck is an independent product, not affiliated with or endorsed by it; the name is used only to identify the plugin whose data is being imported.* --- # Migrate from Simple File List *Collection: Managing Documents · Category: Import & Export · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/migrate-from-simple-file-list/* FileDeck Pro imports a Simple File List library in one click. Go to **Documents → Import & Export → Migrate**, and if the plugin's data is on your site FileDeck offers it as a source. Files, folders, descriptions, dates and access restrictions come across. > **Simple File List was closed on 23 July 2026** and removed from the > WordPress.org plugin directory, which gives the reason as a security issue. > If you are running it, you can > no longer install or update it — and you may be reading this because of that. > The import below works whether or not the plugin is still active, because it > reads the data already on your own site. ## What gets imported | Simple File List | FileDeck | |---|---| | The display name (or the filename, if none) | Document title | | The file description | Document description | | Sub-folder the file sits in | Category, with nesting preserved | | Date added | Document date | | The file itself | A real Media Library attachment | | Role- or user-restricted files | Members-only documents | | Submitter name and comments | Kept in the document body | **Every list is imported**, not just the first — Simple File List's Advanced add-on can create several, and all of them are found. ## The files move into your Media Library This is the important difference from other imports. Simple File List keeps its files in a plugin-managed folder (normally `wp-content/uploads/simple-file-list/`) rather than the Media Library, so FileDeck **copies each file in** as a proper attachment. Your originals are left exactly where they are. Nothing is moved or deleted, so the old plugin keeps working during and after the import, and you can retry safely. Bringing files in is what lets FileDeck actually own them — [PDF thumbnails](/docs/pdf-thumbnails/), [content search](/docs/content-search/), checksums, and above all the protected vault. That last one is why FileDeck does not simply link to the old folder: that folder has no deny-all rule, so a linked file would stay readable by anyone with the URL, and could never be locked down. ## Folders become categories Simple File List has no categories — folders on disk are its only grouping. So a file at `policies/hr/leave.pdf` lands in an **HR** category nested under **Policies**, and files at the top level get no category at all. Folder names are tidied for display (`hr-policies` becomes "Hr Policies"), so rename any that read awkwardly afterwards. ## Restricted files If the Advanced add-on restricted a file to a role or a list of users, FileDeck imports it as **members-only** and puts FileDeck's copy of the file in the protected vault immediately. FileDeck's per-document gate is logged-in or not, so the specific role or user list is not carried across — check anything sensitive after importing and apply a [category password or role restriction](/docs/access-control-overview/) if you need finer control. Nothing is ever imported as public that was restricted at the source. ## Safe to re-run The import is idempotent: every document records which source record it came from, so running it again picks up only what is new. If it is interrupted it resumes rather than duplicating. ## After the import 1. Check a few documents — title, description, category, and that the file downloads. 2. Check anything that was restricted is still marked members-only. 3. Pages that still hold an `[eeSFL]` shortcode don't need editing: with Simple File List off, FileDeck shows its library there, narrowed to the folder a `showfolder` names (see [what happens to your old links](/docs/old-links-after-migration/)). For a new page, use a `[filedeck]` shortcode or the Document Library block. 4. Only then deactivate Simple File List. Nothing is deleted by the import, so there is no rush. ## FAQ ### Do I need the plugin active to import? No. The import reads the data already in your site's database and files on disk, so it works with the plugin deactivated — useful given it can no longer be reinstalled from the directory. ### What if a file is missing from disk? The document is still created with its title, description and category, and is flagged as having an unverified file so you can spot it on the Migrate screen. The import does not stop. ### Are my original files changed? No. Files are copied into the Media Library; the originals stay in the Simple File List folder untouched. --- # Migrate from WP Customer Area *Collection: Managing Documents · Category: Import & Export · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/migrate-from-wp-customer-area/* FileDeck Pro imports a [WP Customer Area](https://wordpress.org/plugins/customer-area/) library directly — no CSV export, no column mapping. Go to **Documents → Import & Export → Migrate**, and if its data is present on your site FileDeck shows how many private files it found and an **Import** button. > **FileDeck Pro** — this feature is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ![The Migrate screen with a one-click import card for a detected plugin](/docs/images/admin-migrate.jpg) This is the one import where **who can see a file matters as much as the file itself**. WP Customer Area doesn't just restrict files, it gives each one to particular customers. FileDeck's equivalent is a [client area](/docs/client-areas/) — a category with people assigned to it — and that's what your ownership becomes. ## What comes across | From WP Customer Area | Becomes in FileDeck | | --- | --- | | Private file title | Document title | | Its excerpt or content | Document description | | Its categories, including sub-categories | Document categories, with the same nesting | | The attached file | A file in your Media Library, linked to the document | | The file's owners | A [client area](/docs/client-areas/) those people are assigned to | | A WordPress password on the private file (**Visibility → Password protected**) | The same password on the document, on top of its client area | ## How your customers' access is preserved **A file owned by one customer** becomes a client area for that person. Only they — and administrators — can see it. **A file owned by several people together** goes into a *single* client area with all of them assigned, rather than one area each. That distinction matters: in FileDeck, a document is hidden from anyone who isn't in **every** client area it belongs to. Giving two owners an area each would have hidden their shared file from both of them. One shared area is what actually reproduces "these people can see this." Client areas are named after their members — *Alice*, or *Bob + Carol*, or *Alice and 4 others* for larger groups. Rename them to whatever your customers would recognise; the assignments stay as they are. ## How to import 1. **Keep WP Customer Area active** for now, so FileDeck can read its files and owners. 2. Go to **Documents → Import & Export → Migrate**. 3. On the **WP Customer Area** card, choose **Publish** or import as **drafts**, then click **Import**. 4. The import runs in the background — you can leave the page. 5. When it finishes, check a few documents under **Documents → All Documents**, and open **Documents → Categories** to see the client areas that were created. 6. Rebuild the search index at **Documents → Settings → Search Index** so [full-text search](/docs/content-search/) picks up the new documents. 7. Once you're happy, deactivate WP Customer Area. Your customers reach their documents through the `[filedeck_my_documents]` shortcode — put it on a page and each person sees only the areas they're assigned to. See [Client areas](/docs/client-areas/). ## Is it safe to run more than once? Yes. FileDeck records which private file each document came from, so re-running **skips anything already imported**. Your original content is never modified. Re-running also finishes a document an interrupted run left without its file (the document stays a draft for you to publish), and leaves the client areas an earlier run made, and the people you've added to them, as they are: new documents go into an area made for their owners. ## FAQ ### Are my files copied? Yes, and deliberately. WP Customer Area keeps its files in a private folder outside your uploads directory, where they can't be served by the web server at all. Linking to them would produce a dead link, so FileDeck copies each file into your Media Library, where it can serve it and protect it behind [signed links](/docs/file-protection-signed-urls/). **The original files are left exactly where they are** — nothing is moved or deleted. ### What if a file's owner no longer exists? It is imported as a **draft restricted to logged-in users**, not as a published document. The same applies to files owned by a *group* rather than named users: group membership lives in WP Customer Area add-ons whose data FileDeck doesn't read, so rather than guess who was in the group, the file arrives as a restricted draft. Logged-in-only on its own would let every other client see it, which is why it waits as a draft. You'll find these under **Documents → Drafts**; assign each to the right client area, then publish it. The rule throughout is that a file which was private stays private. FileDeck does not resolve an unknown owner by making the file public. ### What about files with no owner at all? WP Customer Area shows a file only to its owners, so a file with no owner was visible to nobody. It imports the same way: a draft restricted to logged-in users, waiting for you to decide who should see it. ### What about files that weren't published? A file that was private, pending or a draft in WP Customer Area arrives as a FileDeck draft, even if you chose **Publish** for the import. ### Can a document have more than one file? FileDeck is one file per document, and WP Customer Area is too by default. If your site raised that limit, the first file becomes the document's file and the remaining count is recorded on the document so you can spot them — search for documents with extra files and add them as their own documents. ### Do I have to keep WP Customer Area installed afterwards? No. Keep it active during the import, then deactivate it once you've confirmed the documents and client areas are right. Its private files folder stays on disk; you can remove it once you're confident, since FileDeck now has its own copies. ### Are payments, invoices or customer pages imported? No. FileDeck is a document library, not a customer portal with billing — only private files and their access come across. Anything you were using WP Customer Area's payment or private-page features for needs a different home. --- *WP Customer Area is a trademark of its respective owner. FileDeck is an independent product, not affiliated with or endorsed by it; the name is used only to identify the plugin whose data is being imported.* --- # Migrate from WordPress Download Manager *Collection: Managing Documents · Category: Import & Export · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/migrate-from-wp-download-manager/* FileDeck Pro imports a [WordPress Download Manager](https://wordpress.org/plugins/download-manager/) library directly — no export file, no column mapping. Go to **Documents → Import & Export → Migrate**, and if WordPress Download Manager's data is present on your site FileDeck shows how many packages it found and an **Import** button. One click copies your packages across as FileDeck documents, and everything runs on your own server; nothing is sent anywhere. > **FileDeck Pro** — this feature is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ![The Migrate screen with a one-click import card for a detected plugin](/docs/images/admin-migrate.jpg) ## What comes across | From WordPress Download Manager | Becomes in FileDeck | | --- | --- | | Package title & description | Document title & description | | Package categories (including sub-categories) | Document categories, with the same nesting | | Package tags | Document tags | | The package's first file | The document's file — kept as a Media Library attachment where possible, otherwise linked by URL | | Each further file in the package | A document of its own, titled "Package title — file name", with the package's categories, tags, access and password | | Download count | The document's [download count](/docs/track-file-downloads/) | | Restricted packages (locked to roles or a password) | Documents set to **logged-in users only** visibility | | A WordPress password on the package itself (**Visibility → Password protected**) | The same password on the document ([password-protected visibility](/docs/password-protection/)) | FileDeck keeps one file per document, so a package that bundles several files comes across as several documents: the package's own document holds its first file and its download count, and each further file gets a document named after the package and the file, sorted next to it. A file listed twice in a package comes across once. Imported a multi-file package before this? Run the import again: it adds the files that were left behind and leaves everything already imported as it is. ## How to import 1. **Keep WordPress Download Manager active** for now, so FileDeck can read its files and categories. 2. Go to **Documents → Import & Export → Migrate**. 3. On the **WordPress Download Manager** card, choose whether to **Publish** the imported documents or bring them in as **drafts** to review first, then click **Import**. 4. The import runs in the background — you can leave the page. Progress shows how many packages have been processed. 5. When it finishes, open **Documents → All Documents** and spot-check a few: titles, categories, files, and counts. 6. Rebuild the search index at **Documents → Settings → Search Index** so [full-text search](/docs/content-search/) picks up the new documents. 7. Once you're happy, deactivate WordPress Download Manager. Its download links and shortcodes keep working once it's off: see [what happens to your old links](/docs/old-links-after-migration/). ## Is it safe to run more than once? Yes. FileDeck records which package each imported document came from, so re-running the import **skips anything already imported** and never creates duplicates. If an import is interrupted, just start it again — it picks up where it left off. Your original WordPress Download Manager content is never modified. ## FAQ ### Do my files get copied or moved? It depends where the file lives. Files already in your Media Library are linked as attachments, and a file on a remote URL stays linked by that URL. Files in WordPress Download Manager's own protected upload folder are copied into the Media Library, leaving the originals where they are. A password- or role-restricted package becomes a logged-in-only document and, when its file is on this site, gets its own copy of the file in FileDeck's protected storage, whether you publish or import as drafts. WordPress Download Manager's original stays where it was, so its links keep working while you run both plugins. Once you've switched, delete the originals that no page or other document still uses: until you do, they're only as private as WordPress Download Manager kept them. [Library Health](/docs/library-health/) lists the originals that are still public, with a button to delete or protect each one. Access you add in FileDeck *after* the import is different: it moves that document's file into protected storage, so the old plugin's link to that file stops working from then on. ### Will my download counts be preserved? Yes — each package's download count is carried over to the FileDeck document, so your numbers don't reset to zero. ### What happens to password-protected or role-restricted packages? They become FileDeck documents restricted to logged-in users, so they stay gated after the move. To keep a finer rule, re-apply it in FileDeck: roles with [category-level access control](/docs/access-control-overview/), and a password as a [category password](/docs/password-protection/) or as the document's own **Visibility → Password protected**. A password set with WordPress's own **Visibility → Password protected** on the package itself is separate from WordPress Download Manager's package password, and it comes across as it is: the document asks for the same password before its file can be downloaded. See [password protection](/docs/password-protection/). ### My packages have several files each — what happens? The other files come across too. FileDeck documents hold one file each, so the package's own document keeps its first file and each further file becomes a document named "Package title — file name", with the same categories, tags, access and password. If you imported before this, run the import again to add the files it left behind. ### Do I have to keep WordPress Download Manager installed afterwards? No. Keep it active during the import so FileDeck can read its data, then deactivate (or delete) it once you've confirmed everything came across. --- *WordPress Download Manager is a trademark of its respective owner. FileDeck is an independent product, not affiliated with or endorsed by it; the name is used only to identify the plugin whose data is being imported.* --- # Migrate from another document library plugin *Collection: Managing Documents · Category: Import & Export · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/migrate-from-another-plugin/* You can move an existing library into FileDeck two ways: a **one-click import** that reads a supported plugin's data directly, or a **CSV import** for everything else. Both run entirely on your own server; nothing is sent anywhere. You'll find them together at **Documents → Import & Export → Migrate**. > **FileDeck Pro** — this feature is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ![The Migrate screen: one-click import for detected plugins, plus CSV import and column mapping](/docs/images/admin-migrate.jpg) ## One-click import from a detected plugin FileDeck detects supported document and download plugins already installed on your site and copies your documents, categories (with nesting) and files across in one click — no CSV export step. Where the source plugin records them, download counts and access restrictions come across too. Right now this covers: - **[Download Monitor](/docs/migrate-from-download-monitor/)** — imports your downloads, categories, tags, files, download counts, and members-only visibility. - **[Simple Download Monitor](/docs/migrate-from-simple-download-monitor/)** — imports your downloads, categories, tags, descriptions, files, download counts, and logged-in-only downloads. (A different plugin from Download Monitor above; if you have both, you'll see both.) - **[WordPress Download Manager](/docs/migrate-from-wp-download-manager/)** — imports your packages, categories, tags, files, download counts, and restricted-package visibility. - **[Document Library Pro / Lite](/docs/migrate-from-document-library/)** — imports your documents, categories, tags and files (attached or external-link). - **[Shared Files](/docs/migrate-from-shared-files/)** — imports your files, categories, tags, download counters, and password-protected items. - **[Simple File List](/docs/migrate-from-simple-file-list/)** — imports your files, folders as nested categories, descriptions, dates and access restrictions. - **[Advanced File Manager](/docs/migrate-from-advanced-file-manager/)** — turns a managed folder into a library, with sub-folders as nested categories and the files copied into your Media Library. - **[BSK PDF Manager](/docs/migrate-from-bsk-pdf-manager/)** — imports your PDFs, nested categories, descriptions, download counts, expiry dates and restricted items, read from its own database tables. - **[Download Attachments](/docs/migrate-from-download-attachments/)** — imports the Media Library files it manages, with their download counts, grouped into categories named after the posts they were attached to. - **[WP Customer Area](/docs/migrate-from-wp-customer-area/)** — imports your private files and their categories, and turns each file's owners into a FileDeck [client area](/docs/client-areas/) so the same customers keep access. - **[FileBird](/docs/migrate-from-filebird/)** — turns the documents in your FileBird folders into a library, with the folder tree as nested categories and your photos left alone. Also covers FileBird Document Library, which uses the same folders. On the **Documents → Import & Export → Migrate** screen, each detected plugin shows how many documents it found and an **Import** button. Keep the old plugin active while you import so FileDeck can read its files and categories, then deactivate it once you've spot-checked the results. The import runs in the background, so you can leave the page; re-running it is safe — documents already imported are skipped, never duplicated. If any item can't be imported, the finished-import notice names it and offers **Import again** ([what to check](/docs/troubleshooting-imports/)). Where a plugin keeps its items as WordPress posts, an item that wasn't published arrives as a draft, and an item locked with WordPress's own **Password protected** visibility keeps its password, so the document asks for it before its file can be downloaded ([password protection](/docs/password-protection/)). And a file that FileDeck already keeps protected for another of your documents isn't shared with an imported one: that document comes in without a file, the finished-import notice counts it, and [Library Health](/docs/library-health/) lists it so you can attach one. ## What happens to my old links? Once you've imported and deactivated the old plugin, FileDeck answers the links it left behind: download links go to the file, item and category pages move to their FileDeck pages, and shortcodes in your posts show FileDeck's download buttons and libraries. That covers Download Monitor, WordPress Download Manager, Simple Download Monitor, Shared Files and Simple File List. [Old links keep working after you migrate](/docs/old-links-after-migration/) lists each link and where it goes. That part is in the free plugin, so it keeps working if your Pro licence lapses. Imported from one of those plugins before FileDeck brought passwords across? Importing again leaves documents that are already in your library as they are, so the **Migrate** screen lists any imported document that doesn't ask for its item's password yet, with a button to add the same passwords, and one to leave them as they are if you opened them on purpose. ## How do I migrate my library by CSV? 1. In your previous document library plugin, export the library to CSV. Check that plugin's documentation for where its export lives. 2. Go to **Documents → Import & Export → Migrate** — the **Import / migrate documents** screen. 3. Use **Upload & map columns** to upload the CSV export. 4. Map the CSV's columns to FileDeck fields. Every plugin names its columns differently, which is why you match them up yourself. 5. Run the import. Each row becomes a FileDeck document. After the import, rebuild the search index at **Documents → Settings → Search Index** so [full-text search](/docs/content-search/) picks up the new documents — FileDeck recommends a rebuild after any bulk import. ## When should I use Bulk add / export instead? **Migrate** is for CSV exports from other plugins, whose columns don't match FileDeck's format. If your CSV is already in FileDeck's own format — a header row with `title, file_url, excerpt, category, tags` — use **Documents → Import & Export → Bulk add & export** instead, which imports it directly without any column mapping. See [Import documents from CSV](/docs/csv-import/). The same screen also exports your FileDeck library to CSV, which is useful for backups once you have finished migrating. See [Export your library to CSV](/docs/csv-export/). ## Does any of my data leave my site? No. Both paths run entirely on your own server: a one-click import reads the other plugin's data straight out of your WordPress database, and a CSV import reads the file you upload to your own admin. FileDeck creates the documents locally either way. Nothing is sent anywhere. ## FAQ ### Which plugins can I migrate from? Two ways. Supported plugins — currently [Download Monitor](/docs/migrate-from-download-monitor/), [Simple Download Monitor](/docs/migrate-from-simple-download-monitor/), [WordPress Download Manager](/docs/migrate-from-wp-download-manager/), [Document Library Pro / Lite](/docs/migrate-from-document-library/), [Shared Files](/docs/migrate-from-shared-files/), [Simple File List](/docs/migrate-from-simple-file-list/), [Advanced File Manager](/docs/migrate-from-advanced-file-manager/), [BSK PDF Manager](/docs/migrate-from-bsk-pdf-manager/), [Download Attachments](/docs/migrate-from-download-attachments/), [WP Customer Area](/docs/migrate-from-wp-customer-area/) and [FileBird](/docs/migrate-from-filebird/) — import in one click with no CSV step. Any other document library plugin that can export to CSV can be brought across via the CSV importer; because you map the columns yourself, the exact column names don't matter. ### What happens to the rows after import? Each row becomes a FileDeck document, and they appear under **Documents → All Documents** like any other document, ready to organize with categories and tags. ### Do I need to keep the old plugin installed? For a **CSV import**, no — FileDeck imports from the CSV file, so once you've exported it the import doesn't depend on the old plugin. For a **one-click import**, keep the old plugin active while you import so FileDeck can read its files and categories; you can deactivate it afterwards, and for the plugins [old links](/docs/old-links-after-migration/) lists, its links and shortcodes keep working. ### Why aren't my migrated documents showing in search? Rebuild the index at **Documents → Settings → Search Index**. FileDeck recommends rebuilding after any bulk import. --- # Old links keep working after you migrate *Collection: Managing Documents · Category: Import & Export · Availability: FileDeck Free · Canonical URL: https://www.getfiledeck.com/docs/old-links-after-migration/* A library that has been online for a while has links pointing at it everywhere: download links in emails and menus, item pages in search results, shortcodes in posts. Once you've moved it into FileDeck with a [one-click import](/docs/migrate-from-another-plugin/) and switched the old plugin off, FileDeck answers those links, so the posts, menus and emails that use them keep working. > **Free** — this part is in the free plugin, so your old links keep working if your Pro licence lapses. The one-click import that brings a library across is part of FileDeck Pro. ## Which links | Old plugin | Download links | Item and category pages | Shortcodes | |---|---|---|---| | Download Monitor | `/download/…/`, or the endpoint you renamed it to | — | `[download]`, `[downloads]` | | WordPress Download Manager | `?wpdmdl=…` | `/download/…/`, `/download-category/…/` | `[wpdm_package]`, `[wpdm_direct_link]`, `[wpdm_category]`, `[wpdm_all_packages]` | | Simple Download Monitor | `?sdm_process_download=…` | `/sdm_downloads/…/`, `/sdm_categories/…/` | `[sdm_download]`, `[sdm_download_link]`, `[sdm_show_all_dl]`, `[sdm_show_dl_from_category]` | | Shared Files | `/shared-files/…/` | — | `[shared_files]` | | Simple File List | — | — | `[eeSFL]`, including `showfolder` | ## Where each one goes - **An old download link** goes straight to the file when the visitor can download it right away. If they first need to log in, enter a password or fill in a download form, it opens the document's page, which asks for that. A visitor who isn't logged in and can't open a members-only document is sent to log in. - **An old item or category page** moves permanently (a 301 redirect) to the document's or category's page in FileDeck, so search engines carry it across. - **An old shortcode** shows FileDeck's download button for that document, or a FileDeck library for shortcodes that listed several (narrowed to the same category or folder when the shortcode named one). One that points at something you didn't import shows nothing. A link still meets the document's access rules: it reaches the file only for a visitor who could open the document anyway. ## While the old plugin is still active It answers its own links, and FileDeck leaves them alone, so you can run both side by side while you check the new library. Deactivating the old plugin is enough to hand its links over. If you delete it instead, its uninstaller may remove the records that item pages are matched by. ## FAQ ### Do links work for documents I brought across by CSV? No. FileDeck matches an old link to the document a one-click import made from that item, and a CSV import doesn't record which item a row came from. Point those links at the new documents by hand. ### What about items that came across as drafts? Their links start working when you publish the document. Until then FileDeck answers them like a link it doesn't recognise. ### I duplicated an imported document. Which one do old links open? The imported original. A duplicate doesn't inherit the record of which item it came from. ### Will search engines keep my old pages' ranking? Old item and category pages move with a permanent (301) redirect, which is how a page tells search engines it now lives somewhere else. --- # Check out a document (editing locks) *Collection: Managing Documents · Category: Lifecycle · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/check-out-documents/* Two people preparing "Rev C" of the same drawing over the same week is how a revision ends up meaning two different files. **Check-out** claims a document: while you hold it, nobody else can replace its attached file — and since a new [version](/docs/version-history/) is recorded exactly when the file changes, nobody else can mint a version either. Check in when your revision is up. > **FileDeck Pro** — the **Check-out** control sits in the document's > editor, in the Document Controls box. ## How it works - **Check out** locks the *file*, not the page: colleagues can still fix a typo in the title or description. Saving a replacement file while someone else holds the lock is refused with a clear notice naming the holder — everything else in that save still goes through. - **Check in** releases the lock. An administrator can always release a lock someone left behind, and every lock forgotten for more than 7 days (filterable via `filedeck_checkout_days`) expires on its own — a holiday can't strand a document. - Check-outs and check-ins are written to the [activity log](/docs/download-log-reports/). ## Where WordPress's own lock ends and this begins WordPress already warns when two people have the same *editor screen* open — a lock measured in minutes. Check-out guards the slower, more damaging race: two people preparing replacement files over hours or days, each unaware of the other. Use both; they don't overlap. --- # Retention schedules (auto-archive or remove after N years) *Collection: Managing Documents · Category: Lifecycle · Availability: FileDeck AI · Canonical URL: https://www.getfiledeck.com/docs/retention-schedules/* Councils, clinics and schools carry legal retention periods — "minutes: keep 6 years", "incident reports: keep 25". GDPR's storage-limitation principle puts a softer version of the same duty on everyone. FileDeck's AI tier can enforce those periods: set a period on a category, and documents are archived or removed automatically when their time runs out, with an audit trail that proves what happened and under which rule. > **FileDeck AI tier** — retention schedules are part of the AI tier (from > $119/year), which sits above Free and Pro; they are **not** included in Pro. > Periods go on categories; the switch and preview live under > **Documents → Compliance → Retention**. [See pricing](https://www.getfiledeck.com/pricing/) ## Setting a schedule 1. Edit a category under **Documents → Document Categories** and set **Retention period**: a number of years, then *archive (move to draft)* or *move to trash*. 2. Check **Documents → Compliance → Retention** — it lists everything due in the next 30 days, as a preview, before anything is enforced. 3. When the list looks right, turn on enforcement under **Documents → Settings → Privacy & integrity → Retention schedules**. A single document can override its category: the **Retention** control in its editor offers its own period, or **Exempt — keep forever**, which always wins. ## How enforcement behaves (the safety posture) - **Two locks.** Nothing happens until a rule exists *and* the global switch is on — a half-configured rule can never fire. - **Trash, never hard-delete.** "Remove" means the WordPress trash, with its normal recovery window. "Archive" means draft: gone from every library, history intact. - **Capped per day** (50 by default, filterable). A new rule over a ten-year backlog becomes a visible daily drip you can stop, not a mass deletion. - **The longest rule wins** when a document sits in several ruled categories — retention duties say "keep *at least* N years", so the safe merge is the maximum. - The clock runs from **publication date** (filterable via `filedeck_retention_basis`). - Every action lands in the [activity log](/docs/download-log-reports/) as a `retention` event naming the rule, and fires `filedeck_retention_applied` for anything downstream. ## Retention vs expiry vs review cycles [Expiry](/docs/document-expiry/) hides a document on a chosen date — a per-document editorial decision. [Review cycles](/docs/review-cycles/) nag a human to re-read it. Retention is the records-management duty: a *class* of document, a period in years, and an automatic, audited end state. --- # Organize with categories and tags *Collection: Managing Documents · Category: Organization · Availability: Free & Pro · Canonical URL: https://www.getfiledeck.com/docs/categories-tags/* FileDeck documents can be organized with hierarchical categories and flat tags. Categories are the backbone of your library — they drive the folders layout, the category filter, and library scoping — while tags are lightweight labels for cross-cutting traits with their own filter. ![The Document Categories screen in wp-admin](/docs/images/admin-categories.jpg) ## Categories vs tags: which should you use? **Categories** are hierarchical: a category can have child categories, so you can model structures like *Policies → HR → Leave*. Use them for your primary structure. They power three things: - The **folders layout**, which renders each category as a collapsible folder — see [folder layout](/docs/folder-layout/). - The category **filter** in the library — where visitors can tick more than one at a time. - **Scoping** — a block or shortcode can show a single category. **Tags** are flat, with no hierarchy. Use them for traits that cut across your structure, such as language, year, or audience. Tags feed the `tags` column and get their own filter. ## How to create categories and tags 1. Go to **Documents → Document Categories** (or **Documents → Document Tags**). 2. Enter a name. For a category, optionally choose a parent to nest it. 3. Click the add button. You can also create both on the fly from the sidebar of the document edit screen while [adding a document](/docs/add-document/). ## How to assign them to a document 1. Go to **Documents → All Documents** and open the document (or start a new one under **Add New**). 2. In the sidebar, check the categories that apply and type tags into the tags box. 3. Click **Update**. ## Category-level settings The category edit screen carries FileDeck fields alongside the standard name, slug, parent, and description: - **Folder order** — a number that sets where the category's folder appears in the folder layout; numbered folders come first, the rest stay alphabetical. See [folder layout](/docs/folder-layout/). - **Folder icon** — picks the icon shown on the category's folder. See [file-type and folder icons](/docs/file-type-folder-icons/). - **Restrict to roles (FileDeck)** — checkboxes that limit the category's documents to chosen WordPress roles; leave all unchecked for public access. See [restrict documents by role](/docs/role-user-restrictions/). - **Password protect (FileDeck)** — sets a password that covers every document in the category. See [password protection](/docs/password-protection/). - **Default review cycle** — applies a review schedule to everything in the category. See [review cycles](/docs/review-cycles/). ## Scope a library to one category To show only part of your library on a page: - **Block:** add the **Document Library** block, click **Open the library builder** in its settings and tick the categories under **Which documents** — the preview updates as you go. See [the FileDeck block](/docs/filedeck-block/). - **Shortcode:** pass the category slug in the `category` attribute: `[filedeck layout="folders" category="policies"]` Block attributes map 1:1 to the shortcode, so anything you can set in one works in the other — see the [shortcode reference](/docs/shortcode-reference/). ## FAQ ### Should I use categories or tags? Use categories for your main structure — they become folders and can scope libraries — and tags for cross-cutting labels like language or year. ### Can categories be nested? Yes. Categories are hierarchical, and the folders layout renders them as collapsible folders. ### How do visitors filter by category or tag? Libraries include multi-select filters for both, alongside instant search and sortable columns — see [search, sort, and filter](/docs/search-sort-filter/). --- # Search synonyms — teach the library your vocabulary *Collection: Managing Documents · Category: Search · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/search-synonyms/* Every organisation has its own shorthand. Someone searches "PO" and finds no results, because every document says "purchase order". Set it under **Documents → Settings → Search → Search synonyms**. One group per line, members separated by commas: ``` PO, purchase order T&C, terms and conditions CV, resume, résumé ``` Searching for any member now finds documents containing any other. Groups are symmetric — you do not need to list it both ways round. ## It widens a term, it does not loosen the search Each word you type is still **required**. A synonym only widens what counts as satisfying it. So with the groups above, searching `PO template` still means "a document matching (PO **or** purchase order) **and** matching template". It will not start returning every document that merely contains "order". ## Multi-word synonyms An entry with a space in it is matched as a phrase, so `PO` finds the exact phrase "purchase order" rather than any document containing "purchase" somewhere and "order" somewhere else. ## Where it applies Synonyms apply to the FileDeck search index — document titles and, on plans with [content search](https://www.getfiledeck.com/docs/content-search/), the text inside your files. They do not change WordPress's own site search. --- # Spelling tolerance in search *Collection: Managing Documents · Category: Search · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/spelling-tolerance/* Someone types `safeguardng` and gets no results. The document is right there. Switch on **Documents → Settings → Search → Spelling tolerance** and a search returning no results is retried against the closest spelling. ## It is only ever a fallback A search that found something is **never** second-guessed. Correction runs only when the exact search returned no results at all, so turning this on cannot change any result you already get today. When a correction is used, the library says which spelling it searched for. It does not silently substitute — a search that quietly answers a different question is worse than one that returns no results. ## Where corrections come from Your **document titles, categories and tags**. Deliberately not the text inside your files. A vocabulary drawn from the full text of a library is enormous and mostly noise, and correcting a misspelling towards a word that appears once inside a PDF produces a confident wrong answer. Titles and category names are what people actually type. ## How conservative it is - Words shorter than four characters are never corrected . "cat" must not quietly become "car". - The first letter has to match. - One edit for a short word, two for a longer one. If no candidate is close enough by those rules, the search returns no results, as before. ## What still gets logged The **original** query is what appears in your search log and [download log](https://www.getfiledeck.com/docs/download-log-reports/), even when a correction rescued it. Recording the correction instead would erase the evidence that people are misspelling something — which is often worth knowing. --- # Approval workflow: review before publishing *Collection: Managing Documents · Category: Versions & Lifecycle · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/approval-gate/* The approval gate adds a "submit for review → approve & publish" step to the FileDeck document editor. With it enabled, authors submit their documents for review instead of publishing directly, and a user with publishing rights checks the document and publishes it. Nothing goes live in your library until someone with the right permissions has signed off. > **FileDeck Pro** — this feature is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ## How do I turn on the approval gate? 1. Go to **Documents → Settings → Lifecycle**. 2. Enable **Approval gate**. 3. Save your changes. From then on, the document editor offers the submit-for-review flow to authors who cannot publish, and the approve-and-publish action to those who can. ## How does the workflow run day to day? 1. An author creates a document as usual — title, file, description, categories — and submits it for review. 2. The document waits as a submission rather than appearing in your libraries. 3. A user with publishing rights opens the document, checks it, and approves and publishes it. Who counts as an approver follows WordPress's own permissions: anyone whose role can publish (Editors and Administrators on a default setup) can approve. Authors and Contributors submit; they cannot push a document live on their own. ## What is this workflow for? The approval gate is deliberately lightweight — one gate, not a workflow designer. There are no multi-stage sign-off chains, routing rules, or per-category approvers. If your requirement is "nobody publishes a document without a second pair of eyes," this covers it with a single checkbox. Teams that pair it with [review cycles](/docs/review-cycles/) get both ends of the lifecycle: a check before a document goes live, and scheduled re-checks after. ## FAQ ### Does the approval gate affect documents that are already published? No. Existing published documents stay published. The gate applies when documents are created or resubmitted through the editor. ### Can I have different approvers for different categories? No. The gate is intentionally simple: one gate for the whole library, with approval rights following WordPress publishing permissions. ### Can approvers edit a submission before publishing it? Yes. An approver can open the submitted document, fix the title, description, or file, and then approve and publish it in one sitting. --- # How to track employee policy sign-off (not just click-through) *Collection: Managing Documents · Category: Versions & Lifecycle · Availability: FileDeck AI · Canonical URL: https://www.getfiledeck.com/docs/policy-acknowledgment-process/* Getting a policy *published* is easy. Getting people to genuinely read it — and being able to prove they did, a year later, to an auditor or a tribunal — is the hard part. A blanket "reply to confirm you've read this" email produces a folder of replies that proves almost nothing: no one knows who was actually asked, who ignored it, or which version they saw. This is a workflow problem before it's a software problem. Below is a process that holds up, and where a document library like FileDeck removes the manual steps. The process matters whether or not you use FileDeck; the tool just stops you doing it by hand. > **FileDeck AI tier** — the FileDeck feature this process uses, > [acknowledgment tracking](/docs/acknowledgment-tracking/), is part of the AI > tier (from $119/year), which sits above Free and Pro; it is **not** included > in Pro. No AI provider key is needed for it — it runs entirely on your own > site. [See pricing](https://www.getfiledeck.com/pricing/) ## Why checkbox-only acknowledgment fails A single "I agree" checkbox at the bottom of a wiki page fails for predictable reasons: - **Habituation.** People learn that clicking makes the box go away, so they click without reading. The checkbox measures compliance-with-the-checkbox, not comprehension. - **No accountability.** If confirmation lives in someone's inbox or a spreadsheet, there is no single answer to "who still hasn't done it?" — so no one chases, and it quietly decays. - **No version pinning.** When the policy changes, last year's confirmations silently become meaningless. Nobody re-confirms because nobody is told to. - **No audit trail.** "We emailed everyone" is not evidence. Evidence is a dated record of *who was asked, who confirmed, when, and against which version* — including the people who never responded. You can't fully defeat habituation with software. What you *can* do is make the record trustworthy and the follow-up automatic, so the acknowledgment means something and the gaps are visible. ## Step 1 — Segment who needs to read what Don't blast every policy at every employee. Over-asking is the fastest way to train people to rubber-stamp. Map each document to the group that actually needs it: safeguarding to staff who work with children, a clinical protocol to clinicians, the finance manual to finance. In practice that means assigning by **role** rather than emailing named individuals — roles survive staff turnover, so a new hire is covered automatically instead of being forgotten. If you need a small named group, create a role for it. In FileDeck this is a per-document setting: edit the document, tick the roles that must read it under **Read & confirm (FileDeck AI)**, and optionally set a **Confirm by** date. Everyone in those roles — including accounts created later — is now on the hook. See [acknowledgment tracking](/docs/acknowledgment-tracking/) for the full walkthrough. ## Step 2 — Make the confirmation mean something This is where teams over-reach and buy comprehension quizzes nobody finishes. Be realistic about what actually moves the needle: - **Put the confirmation on the document itself**, not in a separate survey tool, so reading and confirming are one flow rather than two disconnected tasks. - **Pin every confirmation to a version**, so "I read it" always means "I read *this* revision" — the single most important property, because it's what makes re-reading enforceable later. - **Keep the action honest.** A one-click "I confirm I have read and understood this document" that is dated and version-stamped is worth far more than an elaborate quiz that people share answers to. FileDeck records exactly that: a one-click confirmation on the document's own page, stamped with the document's version at the moment of confirming. It deliberately does **not** fake rigour with a scroll-lock or a quiz — the accountability comes from the dated, version-pinned record and the re-acknowledgment cycle in Step 4, not from trapping someone on the page. If your compliance regime genuinely requires a comprehension test, run that in dedicated training software and use the document library for the attestation record. ## Step 3 — Chase non-responders automatically, not manually Manual chasing is where policy attestation dies. Someone has to notice who's outstanding, email them, remember to follow up, and do it again next week — and they don't. The fix is to make the chase automatic and the outstanding list a live view, not a spreadsheet you rebuild by hand. FileDeck emails each person their own outstanding list once a week — one email per person, everything they owe, with links and confirm-by dates — and stops emailing them the moment they're done. You can also click **Send reminders** to nudge a single document's stragglers on demand. Nobody gets double-chased, and people who are up to date are left alone (which keeps the reminders from becoming noise people filter). ## Step 4 — Keep an audit-ready record, and re-ask when the policy changes The output an auditor actually wants is a table: every assigned person, their status, the timestamp, and which version they confirmed — with the non-responders included, not filtered out. A pile of "confirmed!" emails isn't that. Two things make the record durable: - **Export dated evidence.** FileDeck exports a CSV per document or across everything: document, user, email, status (`confirmed` / `outstanding` / `superseded`), the confirmation timestamp, and the version they read. Outstanding people appear as rows too, so it answers "who was asked and who didn't respond," not just "who succeeded." - **Re-ask on meaningful updates.** When a policy materially changes, old confirmations shouldn't silently carry over. Click **Require re-acknowledgment**: everyone shows as outstanding again, but the previous confirmations are kept and marked `superseded` — so you can still prove staff confirmed the earlier version too. Pair this with [document expiry](/docs/document-expiry/) or [review cycles](/docs/review-cycles/) so policies get revisited on a schedule instead of drifting. ## Common mistakes to avoid - **One blanket email to all-staff.** It trains people to ignore acknowledgments and gives you no per-person status. - **No owner for follow-up.** If chasing depends on a person remembering, it won't happen — automate it. - **No version control on the policy.** If you can't say which version someone confirmed, the confirmation is worthless the moment you edit the document. - **Deleting old confirmations when you update.** Keep them, marked superseded — you may need to prove what people confirmed last year. - **Treating "we sent it" as evidence.** Evidence is the dated, per-person record including the people who didn't respond. ## How FileDeck handles each step FileDeck's [acknowledgment tracking](/docs/acknowledgment-tracking/) is part of the **AI plan** (from $119/year — [see pricing](https://www.getfiledeck.com/pricing/)), and it runs entirely on your own site with no AI provider key needed. It covers Steps 1, 3 and 4 directly: role-based assignment, weekly automatic reminders, a live per-person status view under **Documents → Compliance → Acknowledgments**, version-pinned confirmations, one-click re-acknowledgment, and CSV evidence export. Step 2's "make it meaningful" is a one-click, version-stamped confirmation on the document page — honest accountability rather than a scroll-lock. The Free and Pro plans do not include acknowledgment tracking; if you only need to publish and access-control documents, [see what's in each tier](/docs/free-vs-pro/). --- # How to track policy acknowledgments and prove who has read a document *Collection: Managing Documents · Category: Versions & Lifecycle · Availability: FileDeck AI · Canonical URL: https://www.getfiledeck.com/docs/acknowledgment-tracking/* Some documents aren't just published — people are required to read them, and you are required to prove it. Safeguarding policies, health & safety procedures, HR handbooks, clinical protocols: if you've ever chased signatures on a paper circulation slip, acknowledgment tracking replaces it. You assign a document to user roles, each person confirms with one click, FileDeck chases whoever hasn't, and the whole history exports as CSV evidence for an auditor. > **FileDeck AI** — acknowledgment tracking is part of the AI plan (from $119/year). [See pricing](https://www.getfiledeck.com/pricing/). No AI provider key is needed for this feature — it runs entirely on your own site. ## How do I ask people to confirm a document? Edit the document and find **Read & confirm (FileDeck AI)** in the document settings. Tick the roles that must read it — for example Subscriber for all staff accounts, or a custom role your site uses — and optionally set a **Confirm by** date. Save the document. That's the whole assignment. Everyone who has an account in those roles is now expected to confirm, including people whose accounts are created later. ## What does the reader see? A logged-in user in an assigned role sees a prompt on the document's page: **"Please confirm you have read this document"**, the confirm-by date if you set one, and a single button — *I confirm I have read and understood this document*. One click records the confirmation, and the page then shows the date they confirmed instead of the button. The confirmation is a plain form submission, so it works with JavaScript disabled and with any theme. Two things are always enforced: only users in an assigned role can confirm, and a user must actually be able to view the document (its [access rules](/docs/role-user-restrictions/) apply) — you can't collect a confirmation for something the person couldn't read. ## How do people find what they still need to confirm? Add the `[filedeck_acks]` shortcode to any page — an intranet homepage works well. Each logged-in user sees their own list of documents still waiting for their confirmation, with confirm-by dates, each linking straight to the document. When they're done it says so: *"Nothing to confirm — you're up to date."* ## Where do I see who has and hasn't confirmed? Go to **Documents → Compliance → Acknowledgments**. Every document with an assignment is listed with its roles, confirm-by date, and a confirmed count (for example **7 / 12** — a ✓ appears when everyone's done). Click a document for the per-person view: each assigned user, their status (**Confirmed** with the timestamp, or **Outstanding**), and their email address. ## How do reminders work? Two ways: - **Automatically** — once a week, FileDeck emails each person who still has outstanding confirmations. One email per person, listing everything they owe, with links and confirm-by dates. Nobody is emailed twice for the same list, and people who are up to date get nothing. - **On demand** — click **Send reminders** next to a document on the Acknowledgments screen to nudge just that document's outstanding readers right away. Emails send via `wp_mail`, like FileDeck's other notifications — if your host can't send mail, install an SMTP plugin. ## What happens when the document changes? Every confirmation records *which version* of the document the person read (the document's last-modified timestamp at the moment they confirmed). When you publish a meaningful update and need everyone to read it again, click **Require re-acknowledgment** on the Acknowledgments screen. Everyone immediately shows as outstanding again — but nothing is deleted. The earlier confirmations are kept and marked **superseded** in the evidence export, so you can always show an auditor that staff confirmed the previous version too. ## What does the CSV evidence contain? Export per document (the **CSV** link on its row) or everything at once (**Export all evidence**). Each row is one person's relationship to one document: - **document**, **user**, **email** - **status** — `confirmed`, `outstanding`, or `superseded` (a confirmation of an earlier version, retained after a re-acknowledgment) - **confirmed_at** — when they confirmed - **document_version_of** — the document's last-modified date at the time, i.e. which revision they read - **confirm_by** and **assignment_started** Outstanding people appear as rows too — the export is a complete answer to "who was asked, who confirmed, who hasn't", not just a list of successes. ## Is this personal data? Yes, and FileDeck treats it that way. A user's confirmations are included in WordPress's built-in personal-data export (**Tools → Export Personal Data**). They are deliberately *not* erasable through the privacy eraser: acknowledgment records are compliance evidence, retained the same way an HR system retains training records. Visitors without accounts are never involved — confirmations only exist for logged-in users you've assigned. ## Common questions **Do readers need anything special?** Just a WordPress account in an assigned role. There's no extra plugin, app, or email verification step. **Can I assign an individual person rather than a role?** Assignments are by role. For a small named group, create a role for it (any role editor plugin can do this) and assign that. **What if someone joins after I set the assignment?** They're covered automatically — assignments follow the role, so new accounts in that role show as outstanding and get reminders like everyone else. **Does confirming download the file?** No — confirming and downloading are separate. The prompt sits on the document page alongside the download button, so the natural flow is read, then confirm. --- # Library health scans *Collection: Managing Documents · Category: Versions & Lifecycle · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/library-health/* A health scan checks every published document in your library for four kinds of rot: a file that has gone missing, an external link that no longer resolves, a file on your own site that is only linked by URL, and documents with no downloads after 90+ days. It also flags a document that uses the same file as a restricted document, and checks all your documents, drafts included, for three loose ends a restricted file or an import can leave behind. FileDeck runs the scan automatically once a week and emails you if it finds anything, so a quiet library stays quiet and problems surface on their own. > **FileDeck Pro** — this feature is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ![The Library Health screen after a clean scan](/docs/images/admin-health.jpg) ## What does a health scan check? Published documents are tested against four checks, and results are grouped by check: - **Missing or broken file** — the document points at a file that is no longer there. This usually means someone deleted the file from the Media Library after attaching it. - **External link that no longer resolves** — for documents whose file is an external URL (a shared drive or another site), FileDeck confirms the link still answers. - **File on this site linked by URL, not attached** — the document's "external" URL points at a file inside this site's own uploads folder. It downloads fine, but a URL-linked document gets no zip checkbox, no preview, no thumbnails and cannot be vaulted. Older migrations and CSV imports can both leave these behind. The Health screen offers **Attach them now**, which attaches each document to its file where the file already sits, with nothing copied or moved; a restricted document gets its own protected copy instead. A file kept in another plugin's private folder is left as a link. - **Never downloaded in 90+ days** — the document has been published for at least 90 days and nobody has ever downloaded it. Not an error, but a signal: the document may be mistitled, buried, or simply not needed. One more check looks for a restricted document's file that another document still hands out: - **Shares its file with a restricted document, but not its restrictions** — two documents can use the very same file: a duplicate keeps the original's file, and a file picked from the Media Library or brought in by an import may already belong to another document. When one of them is restricted (or [view-only](/docs/view-only-documents/)), FileDeck keeps the file in [protected storage](/docs/file-protection-signed-urls/) for that one, but each of the others still serves it to its own audience. So this check lists: - a published document that isn't restricted: anyone who can open it can download the file; - a published view-only document that isn't restricted, beside a restricted one: anyone can view the file through it; - a document whose author can get the file through it but isn't allowed to edit that file or the restricted document, whatever the listed document's own restrictions. This covers a shared earlier version too, on drafts as well, because anyone who can edit a document can download its earlier versions from its [version history](/docs/version-history/). Each row names both documents, with a link to edit each, and the author where the author is the reason. FileDeck changes nothing here by itself. Three more checks cover drafts as well as published documents: - **Restricted, but the imported original is still public** — when a [one-click import](/docs/migrate-from-another-plugin/) brought in a restricted document, FileDeck gave it its own protected copy and left the original where the old plugin keeps it, so the old plugin kept working. Anyone with a direct link to that original can still open it. Each row names the original file and offers **Delete original**, or **Move into protected storage** if you'd rather keep it. - **Restricted, but the file could not be moved into protected storage** — the document is restricted, but moving its file into [protected storage](/docs/file-protection-signed-urls/) failed, so the file is still at its public uploads address. This usually means the uploads folder isn't writable by the web server. - **Imported without its file** — an import (one-click or CSV) created the document but could not bring its file across: the file was missing or refused, FileDeck keeps it protected for another document and so did not share it with a new one, it could not be copied out of a folder the old plugin keeps closed to the web, it could not be moved into protected storage, or a WP Customer Area import was interrupted while copying it. ## How do I run a scan? You usually do not need to — FileDeck scans automatically once a week and emails you only when something turns up. To check immediately, for example after a bulk import or a Media Library cleanup: 1. Go to **Documents → Settings → Health**. 2. On the **Library Health** screen, click **Run scan now**. 3. Review the results, grouped by the checks above. Restricted documents whose original is still public are listed at the top of the screen, with their actions. So are any items your last one-click import could not bring across, with a link back to the Migrate screen to import again ([what to check](/docs/troubleshooting-imports/)). After an update that adds a check, the Health screen shows that check as **not checked yet** until the next scan runs. ## What should I do with the results? Missing files are the urgent ones — reattach or replace the file from the document editor before a visitor hits a dead download. Broken external links need the URL fixed at the source or the document repointed. URL-linked local files are a one-click fix: **Attach them now** processes 100 per click (or run `wp filedeck attach-local-files` to do the whole library at once). Zero-download documents are a judgment call: improve the title and [categories or tags](/docs/categories-tags/) so people can find them, or retire them with [document expiry](/docs/document-expiry/). Public originals are yours to settle once you've switched from the old plugin. **Delete original** is offered only when no other document uses the file and no post, page or menu links to it: in its content, a custom menu link, Elementor's page data or as its featured image. It isn't offered for your site icon or logo either. Anything that does is named in the row. Links kept anywhere else, such as another page builder's data or a widget, aren't checked, so look before you delete. **Move into protected storage** keeps the file but takes it off its public address; it isn't offered while another document or Media Library item uses the file. Either way, the old plugin's link to that file stops working. For a file that could not be moved into protected storage, make the uploads folder writable by the web server, then save the document, or, for an imported one, run its import again: that gives it its own protected copy and leaves the old plugin's file where it is, whereas saving an imported document moves the file itself, so the old plugin's link to it stops working. Run the scan again to confirm. An import that came in without its file needs the file attached from the document editor; running a WP Customer Area import again finishes a document an interrupted run left without its file. A document that shares a restricted document's file needs one decision: should that file be private? If it should, restrict the listed document the same way as the one it shares with, or, if nobody meant to make it, delete it permanently. A document in the Trash still has its version history, so empty it from there too. Replacing the listed document's file in the editor isn't enough on its own, because the shared file then becomes one of its earlier versions. A document listed because of its author stays listed, restricted or not, until it's deleted permanently or its author is someone allowed to edit the restricted document. If the file doesn't need protecting after all, remove the other document's restriction instead. Run the scan again to confirm. ## FAQ ### Where do the alert emails go? FileDeck emails you when a weekly scan finds problems, using WordPress's `wp_mail` function. If alerts are not arriving, your host may not send mail reliably — install an SMTP plugin. ### Does a scan slow down my site? No. Scans run in the background in the admin; visitors browsing your library are unaffected. ### Does the scan check draft or expired documents? The four library checks cover published documents, the ones visitors can reach. So does the check for documents that share a restricted document's file, except for earlier versions: when the author is the reason, those are listed on drafts too, because anyone who can edit a draft can download its earlier versions. The three checks for restricted files and imports cover drafts too, because an import often brings documents in as drafts. ### Will FileDeck delete an old plugin's files by itself? No. An original listed here is deleted, or moved into protected storage, only when you click its button on the Health screen, one file at a time. The one case where an import moves an original itself is when it can't give a restricted document its own protected copy, and the import summary says so. --- # Review cycles: keep documents current *Collection: Managing Documents · Category: Versions & Lifecycle · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/review-cycles/* A review cycle tells FileDeck how often a document should be re-checked by a human. Once a document is on a cycle, FileDeck tracks its next review date, shows its status at a glance, and sends reminder emails when a review comes due. It is built for content that quietly goes out of date — policies, safeguarding documents, clinical protocols — where "reviewed every N months" is a requirement, not a nice-to-have. > **FileDeck Pro** — this feature is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ![The Document Reviews screen with review status and next-review dates](/docs/images/admin-review-cycles.jpg) ## How do I put a document on a review cycle? There are two ways: on the document itself, or on its category. 1. To set a cycle on a single document, edit the document and choose a review cycle in the editor. 2. To cover a whole group at once, go to **Documents → Document Categories**, edit the category, and pick a **Default review cycle** (the dropdown shows **No review cycle** until you choose one). Every document filed directly in that category inherits the cycle; a cycle on a parent category does not reach documents filed only in its sub-categories, so set it on those too. The category route is usually the right one for compliance content: file all your policies under one category, set the default cycle once, and anything added later is covered automatically. ## Where do I see what is due? Go to **Documents → Review cycles** — inside the **Compliance** section, on sites that have one. The **Document Reviews** screen lists every document on a cycle, soonest first, with three columns: - **Document** — the title, linked to the editor. - **Status** — for example **Current** for documents that are up to date. The same badge appears in the **Review** column of the main Documents list. - **Next review** — the date the next review is due. When you have checked a document, click **Mark reviewed**. That resets the clock: the status returns to current and the next review date moves forward by one full cycle. ## How do reminders work? FileDeck emails you when reviews come due, using WordPress's built-in `wp_mail` function. If your host cannot send mail reliably, install an SMTP plugin so reminders actually arrive. ## FAQ ### What happens if I ignore a due review? The document stays published — nothing is hidden or unpublished. The status on the Document Reviews screen simply shows it is due, and reminders continue until you mark it reviewed. ### Does a document-level cycle override the category default? Yes. A cycle set on the document itself takes precedence; the category's **Default review cycle** applies to documents that do not have their own. ### Is this the same as document expiry? No. [Expiry](/docs/document-expiry/) removes a document from libraries on a date; a review cycle keeps it published and asks a human to re-check it on a schedule. --- # Set an expiry date on a document *Collection: Managing Documents · Category: Versions & Lifecycle · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/document-expiry/* FileDeck Pro can automatically expire a document on a date you choose. After that date the document is no longer available: it stops appearing in your libraries and its download link stops serving the file. Nothing is deleted — clear or extend the date and the document comes straight back. > **FileDeck Pro** — this feature is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ## How to set an expiry date 1. Go to **Documents → All Documents** and open the document (or set the date while creating one under **Add New**). 2. In the document's settings panel, set the expiry date. 3. Click **Update**. ## What happens when a document expires - The document no longer appears in any library — table, grid, gallery, or folders, block or shortcode. - The download endpoint stops serving it, so previously shared download links stop working too. - The document and its file are **not** deleted. The document stays under **Documents → All Documents** and its file stays in place, so you can bring it back at any time. By default, that is all that happens — the expired document stays published and is simply hidden from your libraries. If you would rather have it change status too, enable **Move expired documents to draft automatically** under **Documents → Settings → Features**, and expired documents are moved to draft instead. ## When expiry is useful - **Time-limited forms:** enrollment or application forms that are only valid until a deadline. - **Seasonal notices:** schedules, programs, and announcements that should disappear after the event. - **Dated pricing or offers:** price lists and promotions valid through a fixed date. Expiry removes a document for everyone on a date. To limit *who* can access a document rather than *until when*, use [access control](/docs/access-control-overview/) instead — the two work independently. ## How to un-expire a document 1. Open the document under **Documents → All Documents**. 2. Clear the expiry date, or set a new date in the future. 3. Click **Update**. The document reappears in your libraries and its download link works again — the same URL as before. (If you use the move-to-draft option and the document was drafted, publish it again too.) ## FAQ ### Is the file deleted when the document expires? No. The document and its file are untouched; the document is simply no longer available to visitors. ### What do visitors see after expiry? The document disappears from the library, and its download link no longer serves the file. ### Does expiry reset the download count? No. The lifetime counter is kept, and counting resumes if you un-expire the document. ### Can I expire a whole category at once? Expiry is set per document. To retire a category on a date, set the same expiry date on each document in it. --- # Version history and rollback *Collection: Managing Documents · Category: Versions & Lifecycle · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/version-history/* FileDeck Pro keeps a version history for every document: when you replace the attached file, the old file is archived automatically — no extra steps. You can review the history in the **Version History** box on the document's edit screen and restore any previous version — and because the document's URL and download link never change, visitors always get the current version at the same link. > **FileDeck Pro** — this feature is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ## How versions are created Versions are recorded automatically. As the **Version History** box on the edit screen puts it: "When you replace the attached file, the old file is archived here automatically." Every time you [replace the document's file](/docs/replace-update-file/), the outgoing file joins the history — there is nothing to fill in or remember. A document [imported from Download Monitor](/docs/migrate-from-download-monitor/) arrives with that download's older versions already in its history, each showing its original date and version number. ## How to view a document's history 1. Go to **Documents → All Documents** and open the document. 2. Find the **Version History** box on the edit screen — every file the document has previously had is archived there. ## How to restore a previous version 1. Open the document's edit screen. 2. In the **Version History** box, pick the version you want and restore it. 3. Click **Update** if prompted. The restored file immediately becomes the one visitors download, and the size, type, and filename columns update to match. ## Why the link never changes between versions Downloads go through FileDeck's endpoint (`/wp-json/filedeck/v1/download/{id}`), not the raw file URL, so the download link is identical across every version. Links shared by email, bookmarks, and buttons on other pages all keep working, and the [download count](/docs/download-counts/) continues on the same counter. ## FAQ ### Can visitors download old versions? No. Visitors always receive the current version; history and restore are available only in wp-admin. ### Does restoring an old version change the download link? No. The link points at the document, so it serves whichever version is current. ### Do I have to do anything to record a version? No. Replacing the attached file archives the old file automatically — versions are never created by hand. ### Does the Free version keep version history? No. Free lets you [replace the file](/docs/replace-update-file/) with the link unchanged, but replacements are not recorded and cannot be rolled back — see [Free vs Pro](/docs/free-vs-pro/). --- # Build a downloads page with a table per category *Collection: Displaying Libraries · Category: Configuration · Availability: FileDeck Free · Canonical URL: https://www.getfiledeck.com/docs/downloads-page-per-category/* The classic downloads page — a manufacturer's resource center, a school's document hub, a firm's client page — is one page with a heading per section and the right documents under each heading: - **Drawings** — one table per product line - **Standards** — one table - **Test reports** — one table Each section is an ordinary FileDeck library **scoped to a category**. All documents live in one place under **Documents**; each table just shows its slice. ## Step 1: model the sections as categories Create one category per section under **Documents → Document Categories** — `drawings-porcelain`, `standards`, `test-reports`, and so on — and assign every document to its category. See [categories and tags](/docs/categories-tags/). Two modeling tips from real libraries: - **Use categories for the section split and tags for the document type.** A parts library that sections by product line (categories: `mx-40-servo`, `mx-60-actuator`) and tags by kind (`datasheet`, `user-manual`, `cad-models`) gets working section tables *and* a working type filter inside each. - **A document that belongs in several sections gets several categories.** Assign the document to each category — do **not** create a combined category named "MX-40, MX-60, MX-90" to mean "all three". A combined name becomes one real (and confusing) entry in every category dropdown. ## Step 2: one scoped library per section ### In Elementor For each section, add a **Heading** widget, then a **FileDeck Library** widget under it. In the widget's **Categories** picker, choose that section's category — the picker lists your real categories, no slugs to remember. Repeat per section. Layout, columns, page size and sort are per-widget, so a drawings section can be a thumbnail grid while standards stay a compact table. More on the widgets: [Use FileDeck with Elementor](/docs/elementor-integration/). ### In the block editor Same pattern: a Heading block, then a [Document Library block](/docs/filedeck-block/) limited to that section's categories: click **Open the library builder** in the block's settings and tick them under **Which documents**. ### With shortcodes ```

Standards

[filedeck layout="table" category="standards" columns="title,date,size,link"]

Test reports

[filedeck layout="table" category="test-reports" columns="title,date,size,link"] ``` The full attribute list is in the [shortcode reference](/docs/shortcode-reference/). ## The one-widget alternative: folders layout If you'd rather not maintain the sections by hand, a single library in the [folders layout](/docs/folder-layout/) renders every category as its own expandable section automatically — new categories appear on the page as soon as a document is filed in them: ``` [filedeck layout="folders"] ``` Hand-built sections give you full control of order, headings and per-section layout; folders give you zero upkeep. Both read the same categories, so you can switch between them at any time. ## FAQ ### Every section is showing all my documents. The library widgets have no category scope set, so each renders the whole library. Open each widget and pick that section's category in the **Categories** control (in shortcodes: the `category` attribute). ### Can each section use a different layout? Yes — layout, columns, sorting and page size are all per-library. See [multiple libraries on one site](/docs/multiple-libraries/). ### Does each section get its own search box? Yes, and each searches only its own slice. If you want one search across everything instead, put a single library on the page — or add the standalone [search box](/docs/search-block/) above your sections and let it land on a full library page. --- # Choose and reorder columns *Collection: Displaying Libraries · Category: Configuration · Availability: Free & Pro · Canonical URL: https://www.getfiledeck.com/docs/columns/* FileDeck offers 18 columns, and you decide which ones display and in what order using the chips manager under **Documents → Settings → Display** — or per library with the shortcode's `columns` attribute. The same column set works across the table, grid, gallery and folder layouts. ![The column manager in FileDeck settings: add or remove columns and drag to reorder](/docs/images/admin-fdk-settings.jpg) ## The 18 available columns | Column | What it shows | |---|---| | ID | The document's numeric ID. | | Image | The document's featured image thumbnail. Clicking a featured image opens it full-size in a lightbox (turn off with `image_lightbox="0"`). | | Title | The document title. | | Reference | The document's [reference number](/docs/reference-numbers/) — a part number, document code or form number. Sortable. | | Summary | The document's short summary (its excerpt). | | Description | The document's full description. | | Categories | The document categories assigned to the document. | | Tags | The document tags assigned to the document. | | Date | The date the document was added. | | Updated | The date the document was last modified. | | Author | The document's author. | | Size | The file size, captured automatically when the file is attached. | | Type | The file type, captured automatically. | | Filename | The original filename, captured automatically. | | Views | How many times the document's page has been viewed. Shows a dash unless the Pro activity log is recording views. | | Downloads | The document's download count. | | Preview | The preview button, which opens the lightbox. | | Download | The download link. | The Size, Type, and Filename values are filled in for you when you attach a file — see [document fields](/docs/document-fields/) for where each value comes from. ## Using the chips manager 1. Go to **Documents → Settings → Display**. 2. Each active column appears as a chip. Use the **↑** and **↓** arrows to move a chip, or simply drag chips into the order you want; the chip order is exactly the order visitors see. 3. Click **×** on a chip to remove that column. 4. Use **Add a column…** to bring in any column that is not currently shown. 5. Prefer typing? **Edit as text** switches the manager to a plain text list you can edit directly — handy for copying a column set between sites or into a shortcode. ## Overriding columns per library The settings screen sets the default for every library. To give one page its own column set, pass the `columns` attribute a comma-separated list in the [shortcode](/docs/shortcode-reference/) — the list order is the display order: ``` [filedeck columns="image,title,categories,date,size,link"] ``` The [library builder](/docs/library-builder/) sets these options with a live preview, at **Documents → Library builder** or from the [Document Library block](/docs/filedeck-block/). ## Download link styles The Download column can render as a **Button**, **Button with icon and text**, **Button with icon only**, **Icon only**, **Icon and text link**, or **Text link** — set on the same Display tab, with colors following your accent color (see [styling](/docs/styling/)). The button's text is also yours to change: set **Download link text** on the Display tab, or per library with `dl_text="Get file"` in the [shortcode](/docs/shortcode-reference/). If you prefer downloads not to navigate away from the library page, enable **Open downloads in a new tab** under **Documents → Settings → Features**. ## FAQ ### How do I change the column order? In the chips manager, drag chips or use the ↑ ↓ arrows. In the shortcode, reorder the comma-separated list — the list order is the display order. ### Which columns should I use? For tables, five to seven columns is a good range; Title, Categories, Date, Size, and Download covers most libraries. For grids, lead with Image and keep the rest short. ### Can the download link open in a new tab? Yes. Turn on **Open downloads in a new tab** under **Documents → Settings → Features**, and visitors keep the library page open while the file downloads or opens. ### Are all 16 columns free? Yes. Every column and all four download link styles are included in the free plugin. --- # Embed a document inline on a page *Collection: Displaying Libraries · Category: Configuration · Availability: FileDeck Free · Canonical URL: https://www.getfiledeck.com/docs/inline-document-embed/* The [preview lightbox](/docs/document-preview/) opens a document in an overlay when a visitor clicks a button. Sometimes you want the document to be **always visible** in the page instead — a datasheet on a product page, a menu, a report embedded directly in your content. FileDeck's inline embed does exactly that, and it is a free feature. ## The shortcode Embed a single document by its ID: ``` [filedeck_embed id="123" height="600"] ``` | Attribute | Default | What it does | | --- | --- | --- | | `id` | — | The document's ID (shown in the Documents list). Required. | | `height` | `600` | Viewer height in pixels (120–4000). | | `width` | full width | Viewer width — `640px` or `80%` (a bare number means pixels). | | `engine` | site default | Viewer engine for PDF/Office files: `native`, `office`, `google`, or Pro's `pdfjs` — see below. | | `download` | off | Set `download="1"` to show a download link under the viewer. | | `fullscreen` | on | Set `fullscreen="0"` to remove the full-screen button. | | `mode` | inline | Set `mode="popup"` (Pro) for a View button that opens the document in an overlay, loading it only when opened — see [the FileDeck viewer](/docs/pdf-viewer/). | | `title` | off | Set `title="1"` to show the document title as a caption below the viewer. | ## The block and the Elementor widget In the block editor, add the **FileDeck: Document Embed** block. Search for the document in the block sidebar, then set the height, width, viewer engine, download link, full-screen button and title caption. The editor preview matches the front end. Using Elementor? The same viewer is the **FileDeck Document Embed** widget, with the same controls — see [Elementor integration](/docs/elementor-integration/). ## Which file types embed **Free:** - **PDFs** — rendered by the browser's built-in PDF viewer. - **Images** — shown directly. - **Google Docs, Sheets, Slides and Drive links** — add the pasted share link as an [external document](/docs/external-files/) and it embeds as a live document. FileDeck swaps the share link for Google's embeddable form automatically, so you don't need to publish-to-web first (the file's own sharing settings still apply — visitors can only see what the link lets them see). **Pro** widens the set (the same types the [preview lightbox](/docs/document-preview/) gains): - **Office documents** (Word, Excel, PowerPoint) — displayed with the Microsoft Office or Google viewer. - **Audio and video** — played with an inline player. A file type that cannot be shown (an archive, for example) falls back to a normal download button, so a visitor is never shown a broken viewer. ## Viewer engines PDF and Office files can render through different engines. Each embed can choose one (`engine="…"`), and **Settings → Features → Document viewer** sets the site-wide default: | Engine | What renders it | Notes | | --- | --- | --- | | `native` | The browser's built-in viewer | PDFs only. No external services are contacted — the privacy mode. An Office file under `native` falls back to a download button, because browsers cannot render Office formats themselves. | | `office` | Microsoft Office web viewer | Office files. The file must be publicly reachable, because Microsoft's servers fetch it. | | `google` | Google Docs viewer | PDFs and Office files. Same public-fetch requirement. | | `pdfjs` | The [FileDeck viewer](/docs/pdf-viewer/) (Pro) | PDFs. Self-hosted — zoom, find, print, and it renders protected, signed and watermarked files no external viewer can. | **Protected files never use an external viewer.** The Microsoft and Google viewers download the file from their own servers, which would hand a protected document to a third party. A protected PDF or image previews through its signed URL instead; a protected Office file falls back to a download button. (Developers can restore the old behaviour with the `filedeck_external_viewer_for_protected` filter if that disclosure is acceptable.) ## Access rules The embed honours the same access rules as every other FileDeck surface. A visitor who is not allowed to view a document sees a padlock instead of the viewer, and protected files load through a signed link that expires after 15 minutes, made only for a visitor who passed the permission check. Download gates such as lead capture and terms apply to the embed's download link, not to the viewer. Because an inline viewer loads as soon as the page opens, embedding is best suited to documents you are happy to show any visitor who can reach the page. For anything gated, the [preview lightbox](/docs/document-preview/) or a normal [library layout](/docs/shortcode-reference/) with access control is usually the better fit. ## FAQ ### How do I find a document's ID? Open **Documents** in wp-admin and hover a document — the ID appears in the row, and in the URL when you edit it. The block's search picker sets the ID for you. ### Can I embed several documents on one page? Yes — add as many `[filedeck_embed]` shortcodes or Document Embed blocks as you like. For a browsable set of documents, use a [library layout](/docs/shortcode-reference/) instead. ### My Google Doc shows "You need access". The embed can only show what the link itself grants. Open the document's Share settings in Google and set it to "Anyone with the link can view" (or publish it to the web) — FileDeck embeds the link, it cannot change its permissions. --- # Multiple libraries on one site *Collection: Displaying Libraries · Category: Configuration · Availability: Free & Pro · Canonical URL: https://www.getfiledeck.com/docs/multiple-libraries/* You can run as many document libraries as you want on one site: every Document Library block or `[filedeck]` shortcode is its own independent library with its own layout, columns, category scope, page size, and sort order. All documents live in one place under **Documents**, and each library simply shows the slice you point it at. ## How to set up separate libraries 1. Go to **Documents → Document Categories** and organize your documents into categories that match the libraries you want — for example `policies` and `newsletters`. See [categories and tags](/docs/categories-tags/). 2. Create a page for the first library and add a [Document Library block](/docs/filedeck-block/) (or shortcode) scoped to its category. 3. Create a page for the second library, scoped to the other category — with a completely different layout and column set if you like. 4. Repeat for as many libraries as you need, including two libraries on the same page. ## Example: a policies table and a newsletters grid A "Company Policies" page built for scanning metadata: ``` [filedeck layout="table" columns="title,categories,modified,size,link" category="policies" sort_by="title"] ``` A "Newsletter Archive" page built around cover images: ``` [filedeck layout="grid" columns="image,title,excerpt,date,link" category="newsletters" per_page="12" sort_by="date"] ``` Both pull from the same document pool, so a document assigned to both categories appears in both libraries, and every document remains manageable from the single **Documents → All Documents** screen. The full attribute list is in the [shortcode reference](/docs/shortcode-reference/). ## Which settings are per-library and which are global? **Per-library** — set independently in each block or shortcode: - `layout` (table, grid, gallery, or folders) - `columns` and their order - `category` scope - `per_page`, `sort_by` and `sort_order` **Global** — set once under **Documents → Settings** and shared by all libraries: - The accent color, download link style, and other display defaults (see [styling and colors](/docs/styling/)) This split is deliberate: libraries can differ in structure while the whole site keeps one consistent visual style. ## FAQ ### Can two libraries appear on the same page? Yes. Add two blocks or two shortcodes to the page; each renders and behaves independently, including its own search box, filters, and **Copy link** button — a copied link records each library's own view, and opening it restores each library independently. For the classic sectioned downloads page — a heading per category with a scoped table under each — follow the [table-per-category recipe](/docs/downloads-page-per-category/). ### Can the same document appear in more than one library? Yes. Assign it to multiple categories and it shows up in every library scoped to any of those categories. ### Can each library have its own colors? Yes. `accent_color` is a per-library shortcode attribute, so `[filedeck accent_color="#b91c1c"]` colours just that library; anything you leave out falls back to the site-wide default under **Documents → Settings**. `grid_columns`, `link_style`, `dl_text` and `empty_message` work the same way. ### Is there a limit to how many libraries I can create? No. Libraries are just blocks or shortcodes, so you can place as many as your site needs. --- # Page builders: Bricks, Divi, WPBakery, Avada and Beaver Builder *Collection: Displaying Libraries · Category: Configuration · Availability: FileDeck Free · Canonical URL: https://www.getfiledeck.com/docs/page-builders/* FileDeck registers a **Document Library** and a **Document Embed** element in the builder's own palette, so you drag one onto the page rather than remembering a shortcode. All of it is in the free plugin. | Builder | Where to look | |---|---| | Elementor | Widget panel → search "FileDeck" — see [Elementor integration](/docs/elementor-integration/) | | Bricks | Elements panel → "Document Library (FileDeck)" | | Divi | Module list → "Document Library (FileDeck)" | | WPBakery (Visual Composer) | Add Element → Content → "Document Library (FileDeck)" | | Avada (Fusion Builder) | Add Element → "Document Library (FileDeck)" | | Beaver Builder | Modules → FileDeck group | ## The controls Each element offers the options people reach for most: **layout** (table, grid, folders, gallery), an optional **category slug** to narrow the library, and a **colour scheme**. The Document Embed element takes a document ID plus height and width. Anything beyond that is a shortcode attribute away — every element renders through the same pipeline as `[filedeck]`, so a shortcode dropped into a text module behaves identically to a native element. The full list is in the [shortcode reference](/docs/shortcode-reference/). ## If your builder is not listed Every one of these builders can render a shortcode, and so can any other. Drop ``` [filedeck layout="table"] ``` into a text or code module and you get the same library. The native elements are a convenience, not a requirement. ## If a builder update breaks its element Registration is guarded: when a builder is missing, or has changed the API the element registers through, FileDeck skips the element instead of raising an error. The shortcode keeps working in that case, so a page that used the element can be rebuilt with one line while we catch up. ## Oxygen Oxygen has no native element yet. Use Oxygen's own **Shortcode** element with `[filedeck]` — it renders exactly the same library. We would rather ship that answer than an element written against an API we cannot test. --- # Pagination, load more, and infinite scroll *Collection: Displaying Libraries · Category: Configuration · Availability: Free & Pro · Canonical URL: https://www.getfiledeck.com/docs/pagination/* FileDeck splits long libraries into pages, and can present the split as page numbers, a load-more button, or infinite scroll — choose under **Documents → Settings → Display**. All three work in every layout and re-paginate automatically when visitors search or filter. ## Setting how many documents show per page Set the site-wide default with **Documents per page** under **Documents → Settings → Display**, and override it per library with the `per_page` attribute in the shortcode or the equivalent per-page control in the [Document Library block](/docs/filedeck-block/): ``` [filedeck per_page="20"] ``` With 87 documents and `per_page="20"`, visitors get five pages. The right number depends on the layout: tables handle 20–50 rows comfortably, while grids usually look best with a per-page count that fills complete rows of cards, such as 12. ## Page numbers, load more, or infinite scroll? FileDeck offers three pagination styles, chosen with the **Pagination** setting under **Documents → Settings → Display**, or per library with `pagination_mode` on the shortcode: - **Page numbers** — numbered page links. Visitors can jump straight to any page, which suits reference libraries where someone may want "the older stuff." - **Load more button** — a button that appends the next page below the current documents. This keeps everything on one continuously growing list and feels natural in [grid layouts](/docs/grid-layout/) and on mobile. - **Infinite scroll** — the next documents load on their own as the visitor reaches the end of the list. Infinite scroll does not remove the Load more button; it keeps it on the page, because a list that only grows when you scroll is unreachable for someone navigating by keyboard or with a screen reader. It also stops loading automatically after five pages and waits for a click, so scrolling cannot pull a whole large library into one page. All three use the same per-page value; they only differ in how the next page is presented. You can also let visitors pick their own page size: turn on the **"documents per page" dropdown** under **Documents → Settings → Features** and a dropdown appears above each library. ## Giving the library a fixed height By default a library grows as long as its documents need. Set **Library height** under **Documents → Settings → Display** — or `height="600px"` on the shortcode — to fix it at a CSS length (`px`, `rem`, `em`, `vh` or `%`) and scroll the documents inside it instead. The search box, filters and pagination stay put; only the documents scroll. ``` [filedeck height="600px" pagination_mode="infinite"] ``` That pairing is the common one: a library that occupies a predictable slot on the page and fills itself as the visitor scrolls within it. ## How paging interacts with search and filters When a visitor types in the search box or picks a category or tag filter, the library re-paginates the matching results using the same per-page size. So a search that narrows 300 documents down to 34 matches shows those matches paged from page one, and clearing the search restores the original paging. Nothing is hidden by pagination — matches on "page 12" are found just the same. See [instant search, sorting, and filters](/docs/search-sort-filter/). ## Large libraries page themselves sensibly Up to about 500 documents, the library ships an inlined index and paging, searching and filtering all run in the browser with zero extra requests. Past that threshold FileDeck switches the library to **server mode** automatically: page one still renders server-side, and searching, filtering, sorting and paging fetch just the rows they need from the server instead. Search-as-you-type keeps working either way — it simply queries the server rather than an in-page index. Your `per_page` setting works the same way regardless of library size. See [large libraries and performance](/docs/large-libraries-performance/). ## FAQ ### What is a good per_page value? For tables, 20–50 rows. For grids, pick a multiple of your cards-per-row so pages end on complete rows — 12 is a common choice. ### Does searching reset the page the visitor is on? Results re-paginate from the first page of matches, which is what visitors expect — the most relevant view of the narrowed list starts at the top. ### Do pagination and load more work in the folder layout? Paging applies to FileDeck libraries in all layouts, though in the [folder layout](/docs/folder-layout/) visitors mostly navigate by opening folders, so page size matters less there. --- # Style your library: colors and display settings *Collection: Displaying Libraries · Category: Configuration · Availability: Free & Pro · Canonical URL: https://www.getfiledeck.com/docs/styling/* How FileDeck libraries look is controlled on the **Display** tab under **Documents → Settings**: default layout, accent color, grid columns, download link styles, empty-state messages, and what titles link to. Set it once and it applies to every library on the site; if you need to go further, all front-end markup uses a stable `fdk-` class prefix for custom CSS. ![FileDeck display settings: default layout, column manager, pagination, accent color, and link style](/docs/images/admin-fdk-settings.jpg) ## Default layout Pick **Table**, **Grid**, **Gallery** or **Folders** as the layout every library uses unless told otherwise. Individual pages can override it with the `layout` attribute in the [block](/docs/filedeck-block/) or [shortcode](/docs/shortcode-reference/). ## Accent color The accent color (default `#1e40af`) drives the library's interactive elements — most visibly the download buttons and links. Setting it to your theme's primary brand color is usually all it takes for FileDeck to look native to your site. FileDeck works with any theme and renders server-side, so the color applies consistently regardless of which theme you run. ## Style presets The **Style preset** setting re-skins the whole library in one choice: - **Match my theme** — inherits your theme's background, text and accent colours so the library looks native with no CSS. It reads block themes' global styles, and the palettes published by Astra, Kadence, GeneratePress, OceanWP, Blocksy, Neve, Lightning, Sydney and Elementor; on a theme it doesn't recognise it falls back to the FileDeck defaults. If an inherited accent would be too faint to read against your page, FileDeck uses your theme's own text colour instead — and an accent you set yourself takes precedence. - **Minimal** — drops the card border and shadow so the rows sit on the bare page. - **Bordered** — stronger hairlines and a defined header band. - **Compact** — tighter rows and radii for dense libraries. Presets only re-point colours and spacing, so they combine with the accent, scheme and custom colours. Set one per library with `preset="minimal"` in the [shortcode](/docs/shortcode-reference/). ## Colour scheme (light and dark) **Colour scheme** offers **Light** (default), **Dark**, and **Auto** (follow the visitor's device). Dark flips every surface, row and hairline to a dark palette while your accent stays your brand colour. Apply it per library with `scheme="dark"` or `scheme="auto"`. ## Surface and text colours Beyond the accent, you can set the library's **Surface colour** (card and control background) and **Text colour**. Leave them blank to use the theme/scheme default. Tints, hairlines and secondary text derive from these automatically, so a single colour re-skins the whole library consistently. Per library: `surface_color="#111827" text_color="#e5e7eb"`. ## Grid columns For the grid layout, choose **Automatic** (FileDeck fits cards to the available width) or a fixed count from 1 to 6. ## Download link styles The download link can render as a **Button**, **Button with icon and text**, **Button with icon only**, **Icon only**, **Icon and text link**, or **Text link**. Pick whichever matches your design; the accent color applies to all six, and the icon-only styles keep the download text as their accessible name for screen readers. Column choices themselves are covered in [choose and reorder columns](/docs/columns/). ## Empty-state messages Two messages are editable: what visitors see when a library has no documents (**"No documents"**), and what they see when a search matches nothing (**"No search results"**). A friendly, specific message — "No policies here yet, check back in March" — beats the default. ## What titles and filenames link to Choose whether a document's title links to its **document page**, triggers a **direct download**, or is **plain text**. The filename column has its own setting: plain text or direct download. ## What document pages show Every document has its own page, which lists details such as its reference, dates, categories and tags above the Download button. **Document pages** on the Display tab chooses which: see [document pages](/docs/document-pages/). ## Going further with custom CSS If the built-in options do not cover a detail you care about, add your own CSS — for example under **Appearance → Customize → Additional CSS**. Every element FileDeck outputs uses class names with the `fdk-` prefix, and that prefix is stable across plugin updates, so custom CSS written against `fdk-` classes will not break when you update. Use your browser's inspector to find the class for the element you want to change. ### CSS variables (design tokens) Every colour, surface, border, radius and row density in a FileDeck library reads from a `--fdk-*` custom property scoped to the `.filedeck` container. Overriding one variable restyles everything that uses it — including the download buttons — with no specificity battles. The main tokens: ```css .filedeck { --fdk-accent: #1e40af; /* buttons, links, active states */ --fdk-ink: #0f172a; /* primary text */ --fdk-muted: #64748b; /* secondary text, meta */ --fdk-surface: #fff; /* cards, controls */ --fdk-surface-2: #f8fafc;/* header row, tints */ --fdk-border: #e2e8f0; /* hairlines */ --fdk-radius: 8px; /* cards, folders */ --fdk-radius-sm: 6px; /* controls, buttons */ --fdk-radius-lg: 12px; /* the table card */ --fdk-row-y: 0.6em; /* row density */ } ``` For example, square corners and a slate surface everywhere: `.filedeck { --fdk-radius: 0; --fdk-radius-sm: 0; --fdk-radius-lg: 0; --fdk-surface: #f1f5f9; }` If styles are not applying at all, or the library looks broken in your theme, see [troubleshooting styling](/docs/troubleshooting-styling/). ## FAQ ### Can different libraries on one site use different styles? Display settings are global defaults, but the block and shortcode override them per library — layout, columns, scope, and the styling attributes `preset`, `scheme`, `accent_color`, `surface_color` and `text_color`. So one page can run a compact dark table while another shows a card grid in your brand colours. See [multiple libraries on one site](/docs/multiple-libraries/). ### Will my custom CSS survive plugin updates? Yes, as long as you target the `fdk-` prefixed classes, which FileDeck keeps stable across updates. Put the CSS in your theme or the Customizer, not in the plugin's files. ### Are the display settings a Pro feature? No. The Display tab, including the accent color and all four download link styles, is included in the free plugin. --- # The FileDeck viewer: self-hosted PDF viewing *Collection: Displaying Libraries · Category: Configuration · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/pdf-viewer/* The [inline embed](/docs/inline-document-embed/) normally shows a PDF with the browser's built-in viewer, or an external viewer service. FileDeck Pro adds a third option: the **FileDeck viewer** — a PDF viewer served entirely from your own site (built on Mozilla's pdf.js, which FileDeck ships), with a toolbar the browser viewer doesn't give you and none of the external-service constraints. > **FileDeck Pro** — the FileDeck viewer is included in all Pro plans. [See pricing](https://www.getfiledeck.com/pricing/) ## Why a self-hosted viewer - **Nothing leaves your server.** The Microsoft and Google viewers fetch the document from their own servers, so they only work for publicly reachable files — and FileDeck [never sends protected files to them](/docs/inline-document-embed/). The FileDeck viewer renders in the visitor's browser from your own URLs, so **protected files, signed links, [view-only documents](/docs/view-only-documents/) and [watermarked](/docs/pdf-watermarking/) streams all display** — the cases external viewers structurally cannot serve. - **A consistent viewer everywhere.** Browsers differ in what their PDF chrome offers (and some mobile browsers just download the file). The FileDeck viewer looks and behaves the same for every visitor. - **A real text layer.** Pages render with selectable, screen-reader-readable text, not flat images. ## Using it Per embed: ``` [filedeck_embed id="123" engine="pdfjs"] ``` Or pick **FileDeck viewer** as the engine in the Document Embed block / Elementor widget, or site-wide under **Settings → Features → Document viewer**. It applies to PDFs in inline embeds; other file types and the preview lightbox keep their normal engines. ## The toolbar - **Pages** — previous/next and a live "page 2 / 14" position as you scroll. - **Zoom** — 50%–400%, re-rendered crisply at each step. - **Find** — search the document's text, jump between matches, with matches highlighted on the page. - **Print** — prints just the document, not the page around it. - **Full screen** — the embed frame's full-screen button works here as with every engine, and the optional download link below the viewer follows the embed's `download` setting. ## Popup mode Any embed can also open in a popup instead of sitting in the page: ``` [filedeck_embed id="123" mode="popup"] ``` Renders a **View** button; the document opens in an overlay and — unlike an inline embed — **loads only when opened**, so a page with several popup embeds stays fast. Works with every engine, and the overlay closes with the × button, the backdrop, or Esc. Popup mode is part of Pro. ## FAQ ### Does this send my PDFs to any third party? No. The viewer is served from your own site and reads the file from your own URLs. No external viewer service is involved — that's the point. ### Why does a protected Office file still show a download button? The FileDeck viewer renders PDFs. Office formats can only be rendered by the external viewer services, which FileDeck refuses to hand protected files — so those fall back to a download button. Details: [inline embed](/docs/inline-document-embed/). ### The viewer shows a plain PDF frame instead of the toolbar. If the viewer cannot load the document — an unreadable file, or JavaScript is unavailable — it falls back to the browser's own PDF display, so the visitor still sees the document. --- # Use FileDeck with Elementor *Collection: Displaying Libraries · Category: Configuration · Availability: FileDeck Free · Canonical URL: https://www.getfiledeck.com/docs/elementor-integration/* FileDeck registers native Elementor widgets, so you can build document libraries, inline viewers and search boxes with Elementor's drag-and-drop editor instead of pasting shortcodes. Elementor (free or Pro) must be installed and active, and every FileDeck widget works with free Elementor. ## Finding the widgets With FileDeck and Elementor both active, edit any page with Elementor and open the widget panel. Search for **FileDeck** — or for what you're doing: "pdf viewer", "document library", "search". All the widgets are free. ### FileDeck Library Drops a full [document library](/docs/shortcode-reference/) into your layout. Controls: **layout** (table, grid, gallery, folders), a **Categories** picker that lists your real document categories (pick one or several to scope the library — no slugs to remember), a **Columns** picker listing the available columns, including your site's custom fields and extra taxonomies (picked columns render in FileDeck's standard order; for a custom order use the [`columns` shortcode attribute](/docs/columns/)), **documents per page** and **sort order**. It renders the same library as the `[filedeck]` shortcode and the [Document Library block](/docs/filedeck-block/), so search, sorting, filtering and access control all work identically. Building a sectioned downloads page with one scoped library per heading? There's a [recipe for exactly that](/docs/downloads-page-per-category/). Widgets saved before the pickers existed keep working — old comma-separated text values render the same library; the controls just become pickers the next time you edit the widget. ### FileDeck Document Embed Embeds a single document as an always-visible inline viewer — the Elementor equivalent of the [`[filedeck_embed]` shortcode](/docs/inline-document-embed/). Search your library by title to pick the **document**, then set: - **Height** and **width** (px or %). - **Viewer engine** — site default, browser built-in (no external services), the Microsoft Office viewer, the Google Docs viewer, or Pro's self-hosted [FileDeck viewer](/docs/pdf-viewer/). - **Open in a popup** (Pro) — a View button opens the document in an overlay that loads only when clicked. - **Download link**, **full-screen button**, **title caption**. The embeddable types are the free set — PDFs, images, and pasted Google Docs/Sheets/Slides/Drive links; **FileDeck Pro** extends the widget to Office documents, audio and video, exactly as it does the [inline embed](/docs/inline-document-embed/) everywhere else. ### FileDeck PDF Viewer The same Document Embed widget under the name people actually search the panel for. If you found this one first: pick your PDF and you're done — every control above is there. ### FileDeck Search A standalone [search box](/docs/search-block/) that lands on your library page with the query applied. Controls: **placeholder text** and the **library page URL** (empty = your Document Library page). ## The Style tab (Pro) With FileDeck Pro active, the Document Embed widget gains an Elementor **Style** tab: frame **border** and **radius**, **frame background**, and an **accent colour** for the controls inside the embed (the FileDeck viewer's toolbar, the download link, the full-screen button). ## Access and protected files All widgets use FileDeck's normal rendering path, so document access rules apply exactly as they do elsewhere: restricted documents show a padlock to visitors who cannot view them (except documents [assigned to specific people](/docs/assign-documents-to-people/), which are hidden entirely), protected files are served through signed, short-lived URLs, and protected files never render through external viewer services. ## FAQ ### Do I need Elementor Pro? No. The FileDeck widgets work with the free version of Elementor. ### The FileDeck widgets don't appear in Elementor. Check that both FileDeck and Elementor are active, then reload the Elementor editor. If a widget is still missing after updating FileDeck, open a new editor session so Elementor re-scans its widgets. ### What about Bricks and Divi? FileDeck registers native **Document Library** and **Document Embed** elements for Bricks, Divi, WPBakery, Avada (Fusion Builder) and Beaver Builder too, with the most-used options as controls; anything further is one `[filedeck_embed]` shortcode away. See [page builders](/docs/page-builders/). --- # Developer reference: REST API, webhooks & WP-CLI *Collection: Displaying Libraries · Category: Developers · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/developer-api-reference/* Everything a script, integration or agency build can hold onto. These surfaces are stable: route shapes, webhook payloads and command names change only with a major-version note in the changelog. ## JavaScript: starting a library added after page load **Free, not Pro** — unlike the rest of this page. FileDeck wires up every library once, when the page finishes loading. Anything inserted afterwards — a page builder's tab or popup, an accordion, your own script — misses that moment and would otherwise render perfectly and do nothing. ```js window.filedeckInit(); // start every library that isn't running yet window.filedeckInit( element ); // …or just the ones inside this element ``` Safe to call as often as you like: a library already running is left alone (each one is stamped `data-fdk-ready`), so you cannot double-bind a control. Each library fires a bubbling `fdk:ready` event as it starts, so you can hook rather than poll: ```js document.addEventListener( 'fdk:ready', function ( e ) { // e.target is the .filedeck element that just started } ); ``` The element has to be **in the document** when you call it. Append first, then initialise. ## REST API All under `/wp-json/`. Public routes respect the same access rules as the library UI — a restricted document behaves identically everywhere. | Route | Method | What it does | |---|---|---| | `wp/v2/filedeck_document` | GET | WordPress-native document listing (restricted documents excluded per visitor). Standard core parameters. | | `filedeck/v1/library` | GET | One page of a library: server-rendered rows + JSON (see [headless front ends](/docs/headless-front-ends/) for the `ctx` token). | | `filedeck/v1/download/` | GET | The download route — counts, gates (terms/form/bot/lead/quotas) and access all enforced here. Signed variant carries `fdk_exp`/`fdk_sig`. | | `filedeck/v1/zip` | POST | `{ ids: [..] }` → a zip of the permitted subset, gates applied per document. | | `filedeck/v1/search` | GET | Content search (`?q=`), page-jump hits included. | | `filedeck/v1/semantic` | GET | Semantic search (AI tier, when configured). | ## Webhooks Three POST streams, all JSON, all opt-in under **Documents → Settings**: - **Library events** — `document.published`, `.updated`, `.unpublished`, `.deleted`, `.downloaded`. Signed: verify `X-FileDeck-Signature` = `sha256=` + HMAC-SHA256 of `timestamp.body` with your signing secret. See [document events](/docs/document-events/) for payloads and a verifier. - **Download notifications** — per-download payload (document, user, context). - **Leads** — each captured lead (name, email, document). ## WP-CLI ``` wp filedeck status # counts, tier, available capabilities wp filedeck list [--format=json] [--category=] [--per-page=] wp filedeck import # any one-click importer, headless (Pro) wp filedeck reindex # rebuild the content-search index (Pro) wp filedeck event test --event=document.published --id= # webhook test (Pro) ``` ## The filters that matter A curated set — every one is documented at its definition: - `filedeck_download_allowed` — final allow/deny for any download; return `true` or a `WP_Error`. Every Pro gate uses this same filter. - `filedeck_doc_row` — the assembled row before render/serialisation. - `filedeck_library_data` — data attributes handed to the front-end script. - `filedeck_formgate_hooks` — open the form gate from any form plugin's completion action. - `filedeck_event` (action) — every library event, for PHP integrations. - `filedeck_lead_captured` (action) — every captured lead. - `filedeck_retention_applied` (action) — every retention action (AI tier). - `filedeck_server_mode_threshold`, `filedeck_semantic_threshold`, `filedeck_zip_max_bytes`, `filedeck_max_upload_bytes` — the tuning knobs. If you need a surface that isn't here, say so on the [support page](https://www.getfiledeck.com/support/) — formalising another route costs little once there's a real consumer for it. --- # Override library markup from your theme *Collection: Displaying Libraries · Category: Developers · Availability: FileDeck Free · Canonical URL: https://www.getfiledeck.com/docs/template-overrides/* When CSS is not enough and you need different **markup**, copy a FileDeck template into your theme instead of forking the plugin. ## How it works Create a `filedeck/` directory in your theme and copy a template into it: ``` wp-content/themes/your-child-theme/filedeck/document-row.php ``` FileDeck looks in the child theme first, then the parent theme, then falls back to its own copy. There is no registration step and no setting to switch on. The plugin's copies live in `wp-content/plugins/filedeck/templates/`. Start from one of those — they are the files FileDeck itself renders, not reference copies kept beside a separate implementation, so what you copy is exactly what you are replacing. ## Available templates | Template | Renders | |---|---| | `document-row.php` | One row of the table layout | | `empty-state.php` | The "No documents found" message | | `document-details.php` | The details list on a document's own page | More will be added. If the fragment you need is not here yet, say so and it can be — the loader is generic. ## What a template receives `document-row.php` gets: | Variable | What it is | |---|---| | `$d` | Row data: `id`, `title`, `permalink`, `dl_url`, `type`, `size`, `date_iso`, `cats`, `cat_slugs`, `tags`, `tag_slugs`, `can_view` and more | | `$cols` | The column keys to render, in order | | `$args` | The library's display arguments | | `$features` | Feature flags for this library | | `$row_class` | Classes contributed by FileDeck modules (favourited, seen, and so on) | Three helpers are available so you can replace some columns and keep the rest: ```php FileDeck_Render::cell( $d, $col, $args, $features ); // render a built-in cell FileDeck_Render::label( $col ); // that column's heading FileDeck_Render::sort_value( $d, $col ); // its sort key ``` `document-details.php` gets: | Variable | What it is | |---|---| | `$rows` | The details to show, in order. Each has a `key` (`reference`, `date`, `modified`, `categories`, `tags`, `author`, `downloads`), a `label` (plain text, so escape it) and `html` (already escaped) | | `$post_id` | The document | Which details arrive is set under **Documents → Settings → Display → Document pages** ([what document pages show](/docs/styling/)). The template only decides how they look. Code can add or remove rows with the `filedeck_single_details` filter. ## Things to keep - **Escape what you output.** A template is theme PHP, and what it prints is your responsibility, exactly as in any other theme template. - **Keep `data-id`, `data-cats` and `data-tags` on the row.** Client-side filtering, search and the select-all control read them. - **In `empty-state.php`, keep the `fdk-empty` class and the `hidden` attribute.** The front-end script reveals that element when a filter or a search leaves no rows; drop them and a search that misses shows a blank space with no explanation. ## Access control is not in the template Restrictions are applied before a row reaches a template: a document the visitor cannot see is filtered out of the query, or arrives with `can_view` false. An override cannot widen access by printing something differently, and it cannot narrow it either — so a customised row is not a place where a security rule can be lost. ## When a plugin update changes a template Your copy keeps rendering, because yours wins. That is the point, and also the catch: a fix or a new feature added to the built-in template will not reach a copy you made. The release notes call out template changes; re-copy when one affects a template you have overridden. --- # Document pages: what each document's own page shows *Collection: Displaying Libraries · Category: Display · Availability: FileDeck Free · Canonical URL: https://www.getfiledeck.com/docs/document-pages/* Every FileDeck document has a page of its own at its own address. It's the page a library's titles link to (unless you've set titles to download directly or show as plain text, see [styling](/docs/styling/)), the page search engines list, and the page people share. It shows the document's description, then a short list of details, then the Download button with the file's type and size beside it. > **Free** — included in every FileDeck install. ## Choose the details Go to **Documents → Settings → Display → Document pages** and tick the details to list: - **Reference**: the document's code or part number (see [reference numbers](/docs/reference-numbers/)) - **Published date** and **Updated date** - **Categories**, each linking to that category's page, and **Tags** - **Author** and **Download count**: both off until you tick them, since publishing a name or a number is your call Reference, both dates, categories and tags are ticked to begin with. The file's type and size aren't part of this list: they sit beside the Download button. ## What gets left out A detail the document doesn't have is left out rather than shown blank, so an untagged document has no Tags row. "Updated" only appears once the document has changed on a later day than it was published, so a document edited on the day it went up doesn't show the same date twice. Untick everything to drop the list. ## Who sees the details The list appears for visitors who can open the document. A restricted document's page says it's restricted, a password-protected document asks for its password first, and a document that has expired says it's no longer available; none of them list details or show a Download button. ## Change how the list looks The list is a definition list with the class `fdk-single-details`, so you can restyle it with CSS. To change its markup, [override the `document-details.php` template](/docs/template-overrides/) in your theme. Developers can add or remove rows with the `filedeck_single_details` filter. ## FAQ ### Can the page show how many times a document was downloaded? Yes. Tick **Download count** under **Document pages**. It's off by default. ### Why doesn't my document show an Updated date? "Updated" appears only when the document changed on a later day than it was published. Edit it on a later day and the date shows. ### Does this change my libraries? No. These settings only change each document's own page. What a library shows is set by its columns. --- # Favourites: let readers keep a shortlist *Collection: Displaying Libraries · Category: Display · Availability: FileDeck Pro · Canonical URL: https://www.getfiledeck.com/docs/favourites/* On a library of any size, "I know it is in here somewhere" is the problem. Favourites lets a signed-in reader star the documents they care about and read them back off one page. There is no setting to find. With Pro active, a signed-in reader gets a star on each document row they can see: clicking it saves, clicking again unsaves. The star is rendered in the state it is already in, so a page of a hundred rows still draws in a single request. ## The shortlist page Put the shortcode on any page: ``` [filedeck_my_favourites] ``` Each reader sees their own list and nobody else's. You can change what an empty list says: ``` [filedeck_my_favourites empty_message="Star a document to keep it here."] ``` ## Signed-in readers only A visitor who is not logged in gets no star, and the shortlist page asks them to log in. This is deliberate. Remembering an anonymous visitor's favourites would mean either a cookie carrying a list of document IDs on every request, or a server-side record tied to a visitor we have gone out of our way not to identify. Both are tracking decisions dressed up as a convenience, and neither is one we want to make quietly on your behalf. A star that could not remember anything would be worse than no star, so there isn't one. If your library is public and you want favourites, the readers who use them need accounts. ## Access is re-checked when the list is read A document favourited last month may have been restricted since. FileDeck does not trust the saved list. Each entry is re-checked against the access rules that apply now, to the reader looking at it, and anything they can no longer see is left out. The same goes the other way. Starring is not a way to find out what exists: a document a reader cannot see answers a favourite request exactly as a document that was never there does. Deleting a document clears it from every reader's list, so it cannot linger as a gap or reappear if the ID is later reused. ## Limits - One reader can keep up to 500 favourites. Past that the star reports that the list is full rather than growing without bound. - Favourites are per site, not per library — a document starred in one library is starred everywhere it appears. ## Styling The star is a `