BLACK FRIDAY
Save 59% on PageForge Annual $191/year $485/year
Claim 59% Off →
SQMViews icon
Maintained Tested up to 6.9.9

SQMViews

Lightweight, privacy-focused plugin for real-time page view analytics. All data stays on your server. Focuses on PageViews tracking.

Active installs<10New
Downloads · 30d51▲ +45.7% vs prev. 30d
Rating—0 reviews
Health score36/100At risk
All-time downloads421Since Feb 2026
Support resolved—No recent threads
RequiresWP 6.2PHP 8.1+
Downloads · 7d14▲ +75% week over week
Our verdict

Consider an alternative

SQMViews shows warning signs in 2026 — compare the alternatives below before installing. Was last updated 7 months ago, and scores 36/100 on our health check.

  • Small user base (<10 active installs)
  • Very few reviews so far
  • Only tested up to WordPress 6.9 (latest is 7.1)
  • Needs PHP 8.1 or newer

How does it stack up?

Side-by-side on installs, updates, ratings & support

Daily downloads

123Jul 4Aug 17Oct 1
Yesterday4
Daily average (1y)1
Peak day23Mar 17, 2026
Last 12 months424

Download spikes usually follow a new release — each site that auto-updates counts as a download.

Rankings

Where SQMViews stands today

WordPress.org search rankings

Live position in the plugin search, top 100
KeywordPositionCompeting pluginsCategory
analytics >100 7,586 Best analytics plugins →
metrics >100 1,648 Best metrics plugins →
page views >100 10,000 Best page views plugins →
privacy >100 10,000 Best privacy plugins →

About SQMViews

From the official readme · v1.2.4

Description

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.

Privacy & Control:

  • 100% privacy-focused (no external services)
  • All data stays on your server
  • 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

  1. Lightweight JavaScript tracker injected on tracked pages (inline or external)
  2. Fast endpoint receives tracking data
  3. File-based storage for raw data writes data to JSONL files (no database overhead)
  4. Background processing via WP-Cron aggregates data hourly/daily and put them in the database
  5. Interactive 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

Credits

SearchQueryMaster.com team

Powered by:
* D3.js for visualizations
* WordPress CMS
* Sodium crypto library

Privacy Policy

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)

Dashboard:
* sqm_views_dashboard_minified_js – Control minified JS for dashboard (1 param: $use_min)
* sqm_views_dashboard_script_path – Dashboard script file path (2 params: $path, $use_min)
* sqm_views_dashboard_script_url – Dashboard script URL (2 params: $url, $use_min)
* sqm_views_dashboard_inline_js – Control inline JS for dashboard (1 param: $use_inline)
* sqm_views_dashboard_default_filters – Customize default dashboard filters (1 param: $defaults)

REST API:
* sqm_views_rest_permissions – Customize REST API permissions (1 param: $capability)
* sqm_views_rest_chart_data – Modify chart data in REST response (2 params: $data, $request)
* sqm_views_chart_cache_expiration – Customize chart cache expiration time (1 param: $seconds)
* sqm_views_rest_chart_filters – Customize available chart filters (1 param: $filters)

Activation & Settings:
* sqm_views_enable_dropin – Enable/disable drop-in file creation (1 param: $enable)
* sqm_views_default_settings – Customize default plugin settings (1 param: $settings)
* sqm_views_data_directory – Customize data storage directory (1 param: $directory)

Actions (do_action):

Activation & Upgrade:
* sqm_views_activated – Fires after plugin activation (0 params)
* sqm_views_upgraded – Fires after plugin upgrade (2 params: $from_version, $to_version)
* sqm_views_before_upgrade – Fires before the upgrade process (2 params: $from_version, $to_version)
* sqm_views_after_upgrade – Fires after the upgrade process (2 params: $from_version, $to_version)
* sqm_views_uninstalled – Fires during plugin uninstallation (0 params)

Tracking:
* sqm_views_before_tracker_output – Before tracker script output (2 params: $tracking_data, $tracker_config)
* sqm_views_after_tracker_output – After tracker script output (1 param: $tracking_data)

Processing:
* sqm_views_before_processing – Before statistics processing starts (1 param: $verbose)
* sqm_views_after_processing – After statistics processing completes (1 param: $processor_instance)
* sqm_views_record_processed – After individual record processed (1 param: $record)
* sqm_views_daily_aggregated – After daily aggregation completes (1 param: $result)

Cache:
* sqm_views_chart_cache_invalidated – When chart cache is cleared (0 params)

Examples
Frontend Hooks – Control Tracking Behavior:

Exclude logged-in administrators from tracking (will not work properly if you cache pages or use CDN):

add_filter( 'sqm_views_should_track', function( $should_track, $data ) {
    if ( current_user_can( 'manage_options' ) ) {
        return false;
    }
    return $should_track;
}, 10, 2 );

Modify tracking data before sending:

add_filter( 'sqm_views_tracking_data', function( $data ) {
    // Add custom metadata
    $data['custom_field'] = get_post_meta( get_the_ID(), 'my_field', true );
    return $data;
} );

Customize which post types are tracked (overrides UI settings):

add_filter( 'sqm_views_tracked_post_types', function( $post_types ) {
    // Add custom post type
    $post_types[] = 'portfolio';
    return $post_types;
} );

Processing Hooks – Modify Data Before Storage:

Calculate custom engagement metrics:

add_filter( 'sqm_views_calculated_metrics', function( $metrics, $records ) {
    // Calculate engagement score
    $metrics['engagement_score'] = ( $metrics['active'] / max( 1, $metrics['on_page'] ) ) * 100;

    // Calculate bounce rate indicator
    $metrics['likely_bounce'] = $metrics['on_page'] < 5 ? 1 : 0;

    return $metrics;
}, 10, 2 );

Filter records before processing:

add_filter( 'sqm_views_before_process_record', function( $record ) {
    // Exclude specific URLs
    if ( strpos( $record['url'], '/test-page/' ) !== false ) {
        return null; // Skip this record
    }
    return $record;
} );

REST API Hooks – Customize Chart Data:

Modify chart permissions:

add_filter( 'sqm_views_rest_permissions', function( $has_permission ) {
    // Allow editors to view analytics
    return current_user_can( 'edit_posts' );
} );

Activation Hooks – Adjust Default Settings:

Set custom default settings on activation:

add_action( 'sqm_views_activated', function() {
    // Set default processing interval
    update_option( 'sqm_views_cron_interval', 'hourly' );

    // Enable external JavaScript by default
    update_option( 'sqm_views_js_mode', 'external' );
} );

Cron Hooks – Custom Processing Schedules:

Run custom tasks after processing:

add_action( 'sqm_views_after_process', function( $processed_count ) {
    // Send notification if processing high volume
    if ( $processed_count > 10000 ) {
        wp_mail(
            get_option( 'admin_email' ),
            'SQMViews High Volume Alert',
            sprintf( 'Processed %d records', $processed_count )
        );
    }
}, 10, 1 );

REST API:
* POST /wp-json/sqm-views/v1/track – Submit tracking data through WordPress API endpoint
* POST sqm-views-pages.php – Submit tracking data through Fast endpoint
* GET /wp-json/sqm-views/v1/charts – Retrieve chart data

WP-CLI:
* wp sqm-views process – Process pending statistics

License:

GPLv3. See LICENSE file for details.

Installation

Automatic Installation

  1. Log in to your WordPress admin panel
  2. Navigate to Plugins → Add New
  3. Search for “SQMViews”
  4. Click Install Now then Activate
  5. Go to SQMViews → Tracking Settings to configure

Manual Installation

  1. Download the plugin zip file
  2. Log in to your WordPress admin panel
  3. Navigate to Plugins → Add New → Upload Plugin
  4. Choose the zip file and click Install Now
  5. Click Activate Plugin
  6. Go to SQMViews → Tracking Settings to configure

First Steps After Installation

  1. Configure Tracking – Go to SQMViews → Tracking Settings

    • Select which post types to track
    • Choose taxonomy archives to monitor
    • Select a JavaScript loading method (inline/external)
  2. Set Processing Schedule – Go to SQMViews → Processing

    • Choose a cron interval (hourly recommended)
    • Verify endpoint status (fast endpoint preferred)
  3. View Analytics (Once you have enough data) – Go to SQMViews → Statistics

    • Explore interactive dashboard
    • Filter by date range
    • Compare different metrics

Performance Optimization

For best performance on high-traffic sites:

  1. Enable Fast Endpoint (automatic on most hosts)

    • Copy sqm-views-pages.php in the WordPress root folder (next to wp-config.php)
    • Bypasses WordPress load
    • Reduces tracking overhead from ~250ms to ~5ms
    • Check status in Processing Settings
  2. Use External JavaScript (recommended for caching)

    • Set in Tracking Settings
    • Allows browser caching
    • Slightly faster page loads
  3. Adjust Cron Interval

    • Hourly: Good for most sites
    • 15 minutes: High-traffic sites needing real-time data
    • 6 hours/Daily: Low-traffic sites saving resources

Frequently asked questions

Does this plugin send data to external servers?

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). Asynchronous JavaScript doesn’t block page rendering. 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.

Can I exclude certain users from tracking?

Yes! Use the sqm_views_should_track filter hook: add_filter( 'sqm_views_should_track', function( $should_track, $data ) { // Exclude logged-in administrators if ( current_user_can( 'manage_options' ) ) { return false; } return $should_track; }, 10, 2 ); 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.

Where is the data stored?

Analytics data is stored in two places: Raw files: wp-content/uploads/sqm-views/raw/*.jsonl (temporary) Database: Four WordPress database tables (sqm_views*) Raw files are automatically processed and archived by WP-Cron.

How do I uninstall the plugin?

Deactivation keeps all data intact. Deletion removes all plugin files, database tables, and settings permanently. Make sure to export any data you want to keep before deleting.

Changelog

See separate file CHANGELOG.md

Full changelog on WordPress.org →

Screenshots

Interactive analytics dashboard with D3.js visualizations showing page view trends, engagement metrics, and filtering options
Interactive analytics dashboard with D3.js visualizations showing page view trends…
Tracking settings page for configuring which post types and taxonomies to track
Tracking settings page for configuring which post types and taxonomies to track
Processing settings page showing cron status, scheduled runs, and manual processing options
Processing settings page showing cron status, scheduled runs, and manual processing…
Statistics overview displaying total records, recent activity, and active endpoint configuration
Statistics overview displaying total records, recent activity, and active endpoint…

For developers

Is this your plugin? Show off the numbers.

Add a live badge to your site, docs or GitHub README. It updates on its own — no account needed.

Active installs badge Rating badge Health score badge

Best SQMViews alternatives

All analytics plugins →
Alternatives
Rank Plugin Active installs Rating Updated Health
1 Site Kit by Google – Analytics, Search Console, AdSense, Speed Site Kit by Google Site Kit is a one-stop solution for WordPress users to use everything Google has to offer… by Google 5M+ ★★★★★★★★★★ 4.2 (1K) 2 weeks ago 92
2 MonsterInsights – Google Analytics Dashboard for WordPress (Website Stats Made Easy) MonsterInsights The best free Google Analytics plugin for WordPress. See how visitors find and use your… by chriscct7 2M+ ★★★★★★★★★★ 4.5 (3.2K) 2 weeks ago 96
3 WP Statistics – Simple, privacy-friendly Google Analytics alternative WP Statistics Get website traffic insights with GDPR/CCPA compliant, privacy-friendly analytics. Includes… by VeronaLabs 600K+ ★★★★★★★★★★ 4.1 (759) 2 days ago 88
4 GA Google Analytics – Connect Google Analytics to WordPress GA Google Analytics – Connect Google Analytics to WordPress Adds Google Analytics tracking code to your WordPress site. Supports many tracking features. by Jeff Starr 400K+ ★★★★★★★★★★ 4.9 (159) 2 months ago 89
5 ExactMetrics – Google Analytics Dashboard for WordPress (Website Stats Plugin) ExactMetrics Connects Google Analytics with your WordPress site. Displays stats to help you understand… by Syed Balkhi 300K+ ★★★★★★★★★★ 2.5 (1.5K) 2 weeks ago 85
6 Head, Footer and Post Injections Head, Footer and Post Injections Head and Footer plugin lets you to add HTML code to the head and footer sections of your… by Stefano Lissa 200K+ ★★★★★★★★★★ 4.9 (735) 6 months ago 53
7 HubSpot All-In-One Marketing – Forms, Popups, Live Chat HubSpot All-In-One Marketing – Forms, Popups, Live Chat The CRM, Sales, and Marketing WordPress plugin to grow your business better. Capture and… by HubSpot 200K+ ★★★★★★★★★★ 4.3 (207) 2 weeks ago 81
8 Burst Statistics – Simple WordPress Analytics (Google Analytics Alternative) Burst Statistics Simple, lightweight WordPress analytics with privacy-friendly visitor tracking. Cookieless… by Burst Statistics B.V. 200K+ ★★★★★★★★★★ 4.9 (186) 4 days ago 95
9 UserFeedback – Create Interactive Feedback Form, User Surveys, and Polls in Seconds UserFeedback Ultimate user feedback plugin to ask questions, surveys, polls, from your website in seconds by Syed Balkhi 200K+ ★★★★★★★★★★ 4.8 (305) 2 weeks ago 86
10 Post Views Counter Post Views Counter Post Views Counter allows you to collect and display how many times a post, page, or other… by dFactory 200K+ ★★★★★★★★★★ 4.9 (1.2K) 2 months ago 77

FAQ

SQMViews: quick answers

Straight answers, pulled from live WordPress.org data.

Live data from WordPress.org · checked Oct 2, 2026

Is SQMViews free?

Yes. SQMViews is free to download and use from the official WordPress.org plugin directory.

Is SQMViews safe to use in 2026?

SQMViews shows warning signs in 2026 — compare the alternatives below before installing. Was last updated 7 months ago, and scores 36/100 on our health check.

How many websites use SQMViews?

SQMViews is active on <10 WordPress websites and has been downloaded 421 times since it launched in February 2026. It was downloaded 51 times in the last 30 days.

Does SQMViews work with WordPress 7.1?

SQMViews is officially tested up to WordPress 6.9.9, while the latest release is 7.1.2. It may still work, but try it on a staging site first.

What PHP version does SQMViews need?

SQMViews requires PHP 8.1 or higher. Most hosts run PHP 8.x today, so it works on any modern WordPress hosting.

When was SQMViews last updated?

The latest version, 1.2.4, was released on March 17, 2026 (7 months ago).

Who makes SQMViews?

SQMViews is developed and maintained by Pavel Khloponin.

What are the best alternatives to SQMViews?

The most popular alternatives to SQMViews are Site Kit by Google (5M+ installs), MonsterInsights (2M+ installs) and WP Statistics (600K+ installs).

Powered by PageForge

Want thousands of pages that rank like these? Build them in an afternoon.

This directory runs on the same engine as PageForge. Turn any spreadsheet, CSV or API into thousands of fast, SEO-ready WordPress pages — with schema, internal links and AI-written copy baked in.

  • CSV, Google Sheets & API data sources
  • AI content, schema & internal links per page
  • Works with Elementor, Gutenberg, Yoast & Rank Math
  • Free on WordPress.org — no credit card
Sarah is here to help!
Hi there! 👋 Need help finding what you're looking for?
Sarah
Sarah
Online & Ready to Help
Hi there! 👋 Need help finding what you're looking for?

We'll use this to continue our conversation

Just now ✓ Verified

Join 500+ SEO Pros Scaling Their Strategy

Get exclusive programmatic SEO tactics, AI content workflows, and the latest PageForge updates delivered straight to your inbox. Stay ahead of the algorithm.

We care about your data in our privacy policy.