Overview
Download Limits control how many times packages can be downloaded, either globally or per user. Use limits to protect bandwidth, create scarcity, manage license compliance, or implement fair-use policies.
Prerequisites
- WordPress Download Manager installed
- Download logging enabled
- Packages to configure
Types of Limits
| Limit Type | Scope | Description |
|---|---|---|
| Global Quota | All users | Total downloads allowed for package |
| Per-User Limit | Individual user | Downloads per user for package |
| Daily Limit | Per day | Downloads per user per day (add-on) |
| Role-Based Limit | Per role | Different limits by user role (add-on) |
Global Download Quota
Overview
Global quota sets the maximum total downloads for a package. Once reached, the package becomes unavailable to everyone.
Setting Global Quota
- Edit a package
- Find Package Settings tab
- Locate Download Quota field
- Enter maximum downloads
- Save package
Download Quota: [1000] (0 = unlimited)
How It Works
Package: Software v1.0 Quota: 1000 Current Downloads: 999 User clicks download → Download #1000 succeeds User clicks download → "Download limit reached"
Use Cases
| Scenario | Quota |
|---|---|
| Limited release | 100-500 |
| Beta testing | 50-100 |
| Contest/giveaway | Match prize count |
| License compliance | Match license count |
When Quota Is Reached
Users see:
This download is no longer available. Download limit has been reached.
Or configure custom message in settings.
Per-User Download Limit
Overview
Limits how many times each individual user can download a specific package.
Setting Per-User Limit
- Edit a package
- Find Package Settings tab
- Locate Downloads Per User field
- Enter limit
- Save
Downloads Per User: [3] (0 = unlimited)
How It Works
Package: Software Pro Per-User Limit: 3 User: John Download 1 ✓ Download 2 ✓ Download 3 ✓ Download 4 ✗ "You've reached your download limit" User: Mary Download 1 ✓ (separate count) Download 2 ✓ ...
Guest Users
For non-logged-in users:
- Tracked by IP address
- Or session/cookie if enabled
- Less reliable than logged-in tracking
Use Cases
| Scenario | Limit |
|---|---|
| Single download (one-time) | 1 |
| Multiple devices | 3-5 |
| Regular re-downloads | 10-20 |
| Generous access | 50+ |
Configuring Limits
Package-Level Settings
In the package editor:
┌─────────────────────────────────────────┐ │ Download Limits │ ├─────────────────────────────────────────┤ │ Global Quota: [0 ] downloads│ │ Per-User Limit: [3 ] downloads│ │ │ │ ☐ Count downloads from all versions │ │ ☐ Reset limit on new version │ └─────────────────────────────────────────┘
Global Default Settings
At Downloads > Settings > General:
Default Download Limits: ├─ Default Global Quota: [0] (0=unlimited) ├─ Default Per-User Limit: [0] (0=unlimited) └─ Guest Download Limit: [1]
Version-Based Limits
☐ Reset user limit when package updates (Users can re-download after new version) ☐ Count downloads across all versions (Download any version counts toward limit)
Limit Messages
Customizing Messages
At Downloads > Settings > Messages:
Quota Reached Message: [This download is no longer available. The maximum download limit has been reached.] User Limit Message: [You've reached your download limit for this file. Contact support for assistance.]
Dynamic Placeholders
| Placeholder | Displays |
|---|---|
{limit} |
The limit number |
{downloads} |
User’s download count |
{remaining} |
Downloads remaining |
{package} |
Package title |
Example:
You've downloaded {package} {downloads} times.
Your limit is {limit} downloads. You have {remaining} remaining.
Viewing Limit Status
Admin View
In package list or edit screen:
Package: Software Pro ─────────────────────── Global: 450 / 1000 downloads
User Dashboard
In user’s download history:
Software Pro Downloaded: 2 / 3 times [Download] (1 remaining)
Shortcode Display
Show remaining downloads:
[wpdm_remaining_downloads id="123"]
Output: “2 downloads remaining”
Role-Based Limits (Add-on)
Overview
Advanced Access Control add-on enables different limits per user role.
Configuration
Role-Based Download Limits: ├─ Administrator: Unlimited ├─ Editor: 50 per package ├─ Author: 20 per package ├─ Subscriber: 5 per package └─ Guest: 1 per package
How It Works
Package: Premium Template Role Limits: - Subscriber: 3 downloads - Premium Member: 10 downloads - VIP Member: Unlimited User with "Premium Member" role: Download 1-10: ✓ Download 11: ✗ "Limit reached"
Daily Download Limits (Add-on)
Overview
Limits downloads per user per day across all packages.
Configuration
At Downloads > Settings > Limits:
Daily Download Limit: ├─ Enable: ☑ ├─ Default Limit: [10] downloads per day ├─ Reset Time: [00:00] (midnight) └─ Exclude Roles: [Administrator, Editor]
Role-Specific Daily Limits
Daily Limits by Role: ├─ Guest: 3 / day ├─ Subscriber: 10 / day ├─ Premium: 50 / day └─ VIP: Unlimited
User Experience
Daily Downloads: 8 / 10 [Download Software] ✓ [Download Templates] ✓ Daily Downloads: 10 / 10 [Download Audio] ✗ "Daily download limit reached. Try again tomorrow."
Limit Reset Options
Manual Reset
For individual user:
- Go to Downloads > Statistics
- Find user’s download records
- Select and delete entries
- User’s count resets
Version Reset
When package updates:
☑ Reset user limits on new version
Users can re-download when version changes.
Time-Based Reset
With Daily Limits add-on:
Auto-reset: Daily at midnight User's count: 0 at start of each day
Bulk Reset
Reset all users for a package:
- Edit package
- Find Reset Downloads option
- Click Reset All User Counts
- Confirm action
Implementation Examples
Free Trial Limit
Package: Software Trial
Per-User Limit: 1
Message: "Trial can only be downloaded once.
Purchase full version for unlimited access."
Fair Use Policy
Package: Resource Library
Per-User Limit: 10
Message: "Fair use limit reached.
Contact us for extended access."
Limited Edition
Package: Limited Template Pack
Global Quota: 100
Message: "Only 100 copies available!
[X] remaining."
Subscription Tiers
Free Tier: - Daily Limit: 3 - Per-Package: 1 Basic Tier: - Daily Limit: 20 - Per-Package: 5 Premium Tier: - Daily Limit: 100 - Per-Package: Unlimited
Tracking Downloads
What’s Tracked
| Data | Purpose |
|---|---|
| User ID | Identify registered users |
| IP Address | Track guests |
| Package ID | Which package |
| Timestamp | When downloaded |
| Version | Which version |
Database Storage
Downloads tracked in wp_ahm_download_stats:
| id | pid | uid | timestamp | ip_address | version | |----|-----|-----|-----------|------------|---------| | 1 | 123 | 5 | 170614... | 192.168... | 2.0.0 | | 2 | 123 | 5 | 170614... | 192.168... | 2.0.0 | | 3 | 123 | 5 | 170614... | 192.168... | 2.0.0 |
Viewing Counts
Per-user download count query:
SELECT COUNT(*) FROM wp_ahm_download_stats WHERE pid = 123 AND uid = 5; -- Result: 3
Combining with Other Features
Limits + Locks
Package: Premium Download ├─ Per-User Limit: 3 ├─ Email Lock: Required └─ Terms Lock: Required User must unlock, then limit applies.
Limits + Roles
Package: Software ├─ Access: Premium Members only ├─ Per-User Limit: 5 └─ Daily Limit: 10 (site-wide)
Limits + Paid Products
With Premium Packages:
Product: Software License ├─ Per-User Limit: Based on license tier ├─ Personal: 3 downloads ├─ Business: 10 downloads └─ Enterprise: Unlimited
Troubleshooting
Limit Not Enforced
Causes:
- Logging disabled
- User not tracked
- Cache serving old page
Solutions:
- Enable download logging
- Verify user identification
- Clear page cache
- Check database for records
Wrong Count Showing
Cause: Multiple tracking entries
Solutions:
- Check for duplicate records
- Clear and rebuild stats
- Verify counting logic
Guests Bypassing Limits
Cause: IP/session changes
Solutions:
- Require login for limited packages
- Use email lock for identification
- Combine multiple tracking methods
Limit Reset Unexpectedly
Causes:
- Version change triggered reset
- Admin cleared stats
- Database issue
Solutions:
- Check version reset setting
- Review admin actions
- Verify database integrity
Related Documentation
Last updated: January 2026
Applies to: WordPress Download Manager 7.x