SQMViews is a simple and lightweight tracking and analytics plugin that helps you understand how visitors interact with your WordPress content—without sending data to third-party services. Plugin adds very little overhead, capable of tracking millions of page views per day on a moderately sized webs
PricingFree downloadThe WordPress.org download is free. Pro versions, add-ons or external services may cost extra.
CompatibilityRequires WordPress 6.2 and PHP 8.1.
SourceWordPress plugins · Nov 7, 2026
01 / Source details
Aboutthistool.
SQMViews is a simple and lightweight tracking and analytics plugin that helps you understand how visitors interact with your WordPress content—without sending data to third-party services. Plugin adds very little overhead, capable of tracking millions of page views per day on a moderately sized website. Plugin includes sqm-views-pages.php drop-in script installation (Fast endpoint) to collect pageviews without loading WordPress core, reducing pageview request from 250 ms to 5 ms. If drop-in installation is not possible, the plugin falls back to the WordPress call (API endpoint).
Key Features
Tracking & Analytics:
Near real-time page view tracking
Engagement metrics (time on page, active time)
Shows user activity (clicks, scrolls, etc.) with privacy-friendly event counting
Interactive analytics dashboard with D3.js visualizations
Historical data with daily aggregation
Filter by date range, content type, and more
Performance:
Ultra-fast tracking endpoint (bypasses a core load)
Minimal overhead (~5ms per request with the drop-in script)
File-based batch processing (no database requests during the pageview event collection, only during cron processing)
Efficient data storage with automatic archiving
Configurable background processing via WP-Cron
Drop-in script * Created to minimize overhead * Uses exactly the same code as the API endpoint except two hooks for config modification (sqm_views_ping_interval, sqm_views_session_timeout) * Run strict JSON request schema validation to minimize attack surface. * Receives request, run validation, add it to a file for the later batch processing. Very low memory and CPU footprint.
Pageview lifetime JS code will send an init event, followed by ping events and completed by exit or timeout events. Unique ID is returned during init used for all the following events. During cron processing all the events with the same IDs are combined into a single pageview and stored in the database.
Encrypted tracking payloads (you don’t need to reveal everything you track)
Full control over what gets tracked
GDPR-friendly (no personal data collected by default), we focus on pageviews
Flexibility:
Track custom post types and taxonomies
30+ developer hooks for customization
WP-CLI commands for automation
Translation-ready (i18n)
REST API for integrations
What Gets Tracked?
Content Types: * Posts and pages (configurable) * Custom post types * Category and tag archives * Custom taxonomy archives * Author archives * Date archives * Home page * Search results
Engagement Metrics: * Count – Total number of views * Time on Page – Total time spent on page * Active Time – Time user was actively engaged * High-Frequency Events – User browsing on the page (scrolling, mouse movement) * Low-Frequency Events – Deliberate actions (clicks, touches, typing)
Perfect For
Publishers monitoring content performance
Marketers analyzing user engagement
Developers needing custom analytics
Privacy-conscious site owners
Anyone wanting Google Analytics alternative
How It Works
01Lightweight JavaScript tracker injected on tracked pages (inline or external)
02Fast endpoint receives tracking data
03File-based storage for raw data writes data to JSONL files (no database overhead)
04Background processing via WP-Cron aggregates data hourly/daily and put them in the database
05Interactive dashboard displays charts and metrics
Extensibility
30+ Developer Hooks:
Frontend Hooks – Control what gets tracked and how
Processing Hooks – Modify data before database storage
REST API Hooks – Customize chart data and permissions
Activation Hooks – Adjust default settings and storage
WP-CLI Support
# Process statistics manually wp sqm-views process
Multisite Compatible
Planned
Why Choose SQMViews?
vs. External Analytics: * No external JavaScript libraries * No tracking cookies required * No data sent to Google servers * Faster page loads (no external requests) * Complete data ownership
Requirements
WordPress 6.0 or higher
PHP 8.1 or higher (PHP 8.2+ recommended)
PHP Sodium extension (for encryption)
MySQL 5.6 or higher / MariaDB 10.0 or higher
Write permissions for wp-content/uploads/sqm-views directory
SQMViews is designed with privacy in mind. The plugin:
Does NOT collect: * Personal information * Cookies not required for tracking * Sessions – there is no session tracking at the moment, only pageviews tracking * Usernames or emails * Browser fingerprints
IP address and user agents are: * collected in raw log files for troubleshooting, spam, bot, and system abuse prevention * removed from aggregated data and not used anywhere else
Does collect: * Page URLs being viewed * Tags and categories on the current page * Timestamps of visits * User interaction metrics (scrolls, clicks) counter * Browser user-agent string (for bot filtering) * Referrer URL (if available)
Data storage: * All data stored on your WordPress server * No data sent to external services * You control data retention and deletion
Your responsibilities: * Update your site’s privacy policy to mention analytics tracking * Implement cookie consent if required in your jurisdiction * Handle data subject access requests per GDPR/CCPA requirements * Configure the plugin to exclude personal data if necessary
Support
Free Support: * WordPress.org Support Forum
Developer Notes
Architecture: * Namespaced PHP code ( SQMViews\ ) * PSR-4 autoloading via Composer * REST API endpoints for integrations * File-based queueing system
Database Tables: * sqm_views_trackables – Catalog of tracked content * sqm_views_events – Event type definitions * sqm_views_records – Individual tracking records * sqm_views_daily – Daily aggregated statistics
Hooks:
Hooks Reference:
Filters (apply_filters):
Tracking & Frontend: * sqm_views_should_track – Control whether tracking should occur (2 params: $should_track, $data) * sqm_views_tracking_data – Modify tracking data before encryption (1 param: $tracking_data) * sqm_views_trackable_post_types – Customize which post types can be tracked (1 param: $post_types) * sqm_views_trackable_taxonomies – Customize which taxonomies can be tracked (1 param: $taxonomies) * sqm_views_data_taxonomies – Modify taxonomies included in tracking data (1 param: $taxonomies) * sqm_views_encryption_key – Override the encryption key (1 param: $key) * sqm_views_tracker_endpoint – Customize tracking endpoint URL (2 params: $endpoint, $saved_endpoint) * sqm_views_minified_js – Control whether to use minified tracker JS (1 param: $use_min) * sqm_views_tracker_script_path – Customize the tracker script file path (2 params: $path, $use_min) * sqm_views_tracker_script_url – Customize tracker script URL (2 params: $url, $use_min) * sqm_views_inline_js – Control whether to inline tracker JS (1 param: $use_inline) * sqm_views_show_debug_comment – Show debug HTML comment (1 param: $show)
Processing: * sqm_views_raw_record – Filter raw record data during processing (1 param: $data) * sqm_views_calculated_metrics – Modify calculated metrics (2 params: $metrics, $records) * sqm_views_session_timeout – Customize session inactivity timeout (1 param: $timeout) * sqm_views_ping_interval – Customize the ping interval for session tracking (1 param: $interval)
Interactive analytics dashboard with D3.js visualizations showing page view trends, engagement metrics, and filtering optionsTracking settings page for configuring which post types and taxonomies to trackProcessing settings page showing cron status, scheduled runs, and manual processing optionsStatistics overview displaying total records, recent activity, and active endpoint configuration
02 / Source details
Gettingstarted.
Automatic Installation
01Log in to your WordPress admin panel
02Navigate to Plugins → Add New
03Search for “SQMViews”
04Click Install Now then Activate
05Go to SQMViews → Tracking Settings to configure
Manual Installation
06Download the plugin zip file
07Log in to your WordPress admin panel
08Navigate to Plugins → Add New → Upload Plugin
09Choose the zip file and click Install Now
10Click Activate Plugin
11Go to SQMViews → Tracking Settings to configure
First Steps After Installation
12Configure Tracking – Go to SQMViews → Tracking Settings Select which post types to track
13Choose taxonomy archives to monitor
14Select a JavaScript loading method (inline/external)
15Set Processing Schedule – Go to SQMViews → Processing Choose a cron interval (hourly recommended)
16Verify endpoint status (fast endpoint preferred)
17View Analytics (Once you have enough data) – Go to SQMViews → Statistics Explore interactive dashboard
18Filter by date range
19Compare different metrics
Performance Optimization
For best performance on high-traffic sites:
20Enable Fast Endpoint (automatic on most hosts) Copy sqm-views-pages.php in the WordPress root folder (next to wp-config.php)
21Bypasses WordPress load
22Reduces tracking overhead from ~250ms to ~5ms
23Check status in Processing Settings
24Use External JavaScript (recommended for caching) Set in Tracking Settings
25Allows browser caching
26Slightly faster page loads
27Adjust Cron Interval Hourly: Good for most sites
2815 minutes: High-traffic sites needing real-time data
No! All data stays on your server. No data is sent to any third-party tracking services. You have complete control and ownership of your analytics data.
Will this slow down my website?
No! The plugin is optimized for performance:
Fast tracking endpoint bypasses WordPress load (~5ms response time).
Conventional API endpoint uses WordPress REST API (~250ms response time).
File-based storage during tracking (zero database write regarding of your traffic).
Background processing via WP-Cron through batch writes into a separate table (minimal impact on the database performance and visitors).
Most sites should see no noticeable performance impact.
Is it GDPR compliant?
The plugin is GDPR-friendly by default:
No personal data collected (IP present in the raw log files to prevent abuse and removed from aggregated data, no cookies)
No data sent to external services
All data stored on your server
You control data retention policies
However, you’re responsible for:
Implementing proper consent mechanisms if required
Updating your privacy policy
Handling data subject access requests
Can I track custom post types?
Yes! Go to SQMViews → Tracking Settings and select any registered post types. The plugin automatically detects all public post types on your site, or use hook sqm_views_trackable_post_types
Does it work with caching plugins?
Yes! The JavaScript tracker should work seamlessly with most of the caching plugins and services including:
WP Super Cache
W3 Total Cache
WP Rocket
LiteSpeed Cache
Cloudflare
Cloudfront
The tracking code runs on the client-side, so cached pages are tracked properly.
And adjust your CDN and caching plugins to exclude logged-in users from caching.
How much disk space does it use?
Storage requirements depend on traffic (YMMV):
Low traffic (1,000 views/day): ~50 MB/month
Medium traffic (10,000 views/day): ~500 MB/month
High traffic (100,000 views/day): ~5 GB/month
TBD based on actual usage
Raw files are automatically archived into daily files and can be safely deleted after processing. We recommend storing archived files in a cold storage in case you want to replay the processing and aggregation, to remove bot traffic or extend data with more information.
Can I import/export the data?
Planned functionality.
What’s the difference between “active time” and “time on page”?
Time on Page : Total time from page load to exit (includes idle time) Active Time : Time when user is actively engaging (scrolling, clicking, typing), checked every 10s. Active time gives you better insight into actual engagement vs. just having a tab open.
Can I track non-WordPress pages?
It is possible, see the setup used to track Home page and Search results.
FinderPress Media Auditor helps site administrators scan for broken images, missing Media Library files, unreachable media URLs, and other media issues across WordPress content. Use it to audit images, video, audio, PDFs, featured images, and attachment files without sending scan data to an external
The Accepted Payment Methods plugin is a straightforward, lightweight solution that enhances your website by displaying visually appealing icons of the payment methods you accept. This plugin is ideal for a variety of websites, including e-commerce platforms, service-oriented websites, and informati