Modern analytics dashboard for Easy Digital Downloads with advanced filtering, comparisons, and charts.
- 7 dashboard pages: Customers & Revenue, MRR & Growth, Renewals & Cancellations, Refunds, Software Licensing, Sites Stats, Support
- Date range filtering with presets
- REST API endpoints with transient caching
- React + ECharts UI bundled via Vite
- WordPress 6.0+
- PHP 8.0+
- Easy Digital Downloads 3.0+
- Node.js 16+ (for development)
- Upload
vgp-edd-stats/to/wp-content/plugins/ - Activate via WordPress admin
- Open EDD Stats in the admin menu
npm install
npm run dev
npm run buildvgp-edd-stats/
├── includes/ # PHP classes
│ ├── class-admin-page.php
│ ├── class-stats-api.php
│ └── class-stats-query.php
├── src/ # React source (Vite)
│ ├── components/
│ ├── pages/
│ ├── utils/
│ ├── App.jsx
│ └── index.jsx
├── build/ # Compiled assets (generated)
├── scripts/ # Dev utilities (optional)
├── data/ # Local DB dumps (gitignored)
└── vgp-edd-stats.php # Main plugin file
The scripts/sync-live-data.sh script can pull EDD tables from a live site into a local dev database and anonymize customer data.
cp scripts/.env.example scripts/.env
chmod +x scripts/sync-live-data.sh
./scripts/sync-live-data.shFor LocalWP users, local DB host/port/user/password are usually auto-detected from your site’s local-site.json (or wp-config.php) so you typically only need to set LIVE_SSH + LIVE_WP_PATH.
cp dev-config-sample.php dev-config.phpWhen dev-config.php exists and VGP_EDD_STATS_DEV_MODE is true, the plugin queries the dev database for stats instead of the WordPress database.
All endpoints are available at /wp-json/vgp-edd-stats/v1/.
GET /customers/by-month- New customers by monthGET /customers/yoy-change- Year-over-year changeGET /revenue/by-month- Revenue breakdownGET /revenue/refunded- Refunded revenue
GET /mrr/by-month- MRR over timeGET /mrr/current- Current month MRR breakdown
GET /renewals/rates- Renewal rates by monthGET /renewals/upcoming?days=30- Upcoming renewals
GET /refunds/rates- Refund rates by month
GET /licenses/top?limit=20- Top licenses by activations
POST /cache/clear- Clear all cached dataGET /health- Health check
Settings live under EDD Stats → Settings:
- Cache duration (seconds)
- Default date range (including “All Time”)
- Clear cached stats
GPL-3.0-or-later