How to track file downloads in WordPress Free & Pro
WordPress records nothing when a file is downloaded. How to get real download data — lifetime counts free, and per-user timestamped logs with the activity log.
Out of the box, WordPress gives you zero download data. Files are served straight from the uploads folder by the web server, so WordPress never even learns a download happened — there’s no counter, no log, no report. If you need proof of engagement ("did staff download the new policy?", "who took the pricing sheet?"), you have to add the tracking layer yourself. Here are the options, from workaround to purpose-built.
Lifetime download counts are free in all FileDeck plans; the per-user activity log is FileDeck Pro. See pricing
Why core WordPress can’t tell you anything
A download is just an HTTP request for a static file. The web server answers it directly — PHP and WordPress are never involved, so nothing is recorded anywhere you can see. Any tracking solution works by routing downloads through something that can record them first.
The DIY workaround: analytics event tracking
You can attach click events to file links in Google Analytics (GA4 calls PDF clicks a file_download event). It’s free, but it has real limits:
- It counts clicks, not completed downloads, and ad blockers strip it — expect undercounting.
- It can’t tell you who downloaded — no user identity, just anonymous sessions.
- Direct visits to the file URL (from an email, a bookmark, another site) bypass your page scripts entirely and are never counted.
Fine for rough marketing trends; not usable for compliance or per-person reporting.
What real download tracking looks like
Purpose-built tracking routes every download through a counted endpoint, which unlocks three levels:
- Lifetime counts per document — how many times each file was taken. FileDeck records this automatically for every document, free, shown in the Documents admin list. See download counts.
- Who, what, and when — a timestamped log of downloads, views, and searches, per logged-in user, with totals and CSV export. That’s the activity log: turn on Log activity under Documents → Settings → Features and read it under Documents → Activity Log.
- Named leads for anonymous visitors — if the goal is marketing rather than compliance, lead capture asks for an email before the download starts, turning anonymous counts into contacts.
Set it up
- Add your files as FileDeck documents (add a document) — counting starts immediately, nothing to configure.
- For per-user logs, enable Log activity under Documents → Settings → Features.
- Publish the library with the FileDeck block; every download now goes through the tracked endpoint, including direct link visits.
Compliance vs. marketing: reading the data
- Compliance ("prove employee X received the handbook"): the activity log’s per-user entries are your evidence trail, exportable to CSV for audits. If you need visitors to explicitly confirm reading, see acknowledgment tracking.
- Marketing ("which whitepaper earns leads?"): download counts show what’s popular; lead capture tells you who’s interested; the log’s search entries show what people looked for and didn’t find.
FAQ
Does WordPress track file downloads at all?
No. Core WordPress has no download tracking of any kind — the web server hands files over without WordPress running. You need a plugin that routes downloads through a counted endpoint.
Can I see who downloaded a specific file?
Yes, for logged-in users, with the Pro activity log — each entry records the user, the document, and the timestamp. Anonymous visitors appear in counts but not by name; use lead capture to identify them.
Will downloads from a direct link be counted?
Yes, as long as the link is the document’s FileDeck download link — counting happens at the download endpoint, so it works from a page, an email, or a bookmark alike. A raw file URL bypasses counting, which is one more reason to enable file protection so raw URLs stop working at all.
Can I export the download history?
Yes — the activity log exports to CSV, so reports can live in your spreadsheet or audit folder rather than wp-admin.
Still stuck? Email [email protected].