{"id":353304,"date":"2026-08-31T10:56:17","date_gmt":"2026-08-31T10:56:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/pulseviews\/"},"modified":"2026-08-31T10:56:01","modified_gmt":"2026-08-31T10:56:01","slug":"pulseviews","status":"publish","type":"plugin","link":"https:\/\/mai.wordpress.org\/plugins\/pulseviews\/","author":23494255,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1","requires":"6.4","requires_php":"8.1","requires_plugins":null,"header_name":"PulseViews","header_author":"Baldiv O\u00dc","header_description":"Track and display post views on your WordPress site. Privacy-first, cache-compatible, dedicated database tables \u2014 no postmeta bloat.","assets_banners_color":"925bd4","last_updated":"2026-08-31 10:56:01","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/pulseviews.net","header_author_uri":"https:\/\/baldiv.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":29,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"rankalseo","date":"2026-08-31 10:56:01","revision":3673939}},"upgrade_notice":{"1.0.0":"<p>Initial release. No upgrade needed.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3673939,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3673939,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3673939,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3673939,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"pulseviews\/view-count":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"pulseviews\/view-count","version":"1.0.0","title":"PulseViews \u2014 View Count","category":"widgets","icon":"visibility","description":"Display post view counts in 5 premium styles \u2014 glass badge, editorial, neon, luxury, or creator widget.","keywords":["views","analytics","counter","popular","trending"],"textdomain":"pulseviews","supports":{"html":false,"align":["left","center","right"],"spacing":{"margin":true,"padding":true},"color":{"background":false,"text":false}},"attributes":{"style":{"type":"integer","default":1,"enum":[1,2,3,4,5]},"period":{"type":"string","default":"total","enum":["total","today","week","month"]},"size":{"type":"string","default":"md","enum":["sm","md","lg"]},"postId":{"type":"integer","default":0},"showLabel":{"type":"boolean","default":true}},"editorScript":"file:..\/..\/admin\/dashboard.js","style":"file:..\/..\/frontend\/styles.css","render":"file:.\/render.php"}},"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Analytics dashboard \u2014 stat cards, views-over-time chart, top content table","2":"Settings \u2014 Counting tab with tracking mode, post types, session interval","3":"Settings \u2014 Display tab with style picker and auto-insert options","4":"Frontend display styles \u2014 Pill, Block, Inline, Compact"}},"plugin_section":[262246],"plugin_tags":[232,278462,3280,5990,23753],"plugin_category":[36],"plugin_contributors":[267488],"plugin_business_model":[],"class_list":["post-353304","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-analytics","plugin_tags-content-stats","plugin_tags-page-views","plugin_tags-post-views","plugin_tags-view-counter","plugin_category-analytics","plugin_contributors-rankalseo","plugin_committers-rankalseo"],"banners":{"banner":"https:\/\/ps.w.org\/pulseviews\/assets\/banner-772x250.png?rev=3673939","banner_2x":"https:\/\/ps.w.org\/pulseviews\/assets\/banner-1544x500.png?rev=3673939","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/pulseviews\/assets\/icon-128x128.png?rev=3673939","icon_2x":"https:\/\/ps.w.org\/pulseviews\/assets\/icon-256x256.png?rev=3673939","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>PulseViews records how many times each post or page has been viewed and gives you a clean analytics dashboard inside your WordPress admin.<\/p>\n\n<p>No wp_postmeta writes. No database bloat. Works with any caching plugin.<\/p>\n\n<p><strong>Key features:<\/strong><\/p>\n\n<ul>\n<li><strong>Smart view tracking<\/strong> \u2014 PHP, JavaScript, or combined tracking modes<\/li>\n<li><strong>Cache-compatible<\/strong> \u2014 JavaScript mode works with WP Rocket, LiteSpeed Cache, W3 Total Cache, and Cloudflare<\/li>\n<li><strong>Bot detection<\/strong> \u2014 30+ known bot patterns filtered automatically, stored separately<\/li>\n<li><strong>Session deduplication<\/strong> \u2014 prevents the same visitor inflating your counts<\/li>\n<li><strong>Privacy first<\/strong> \u2014 IP addresses are hashed, never stored in plain text<\/li>\n<li><strong>Role exclusions<\/strong> \u2014 exclude admins, editors, or any custom role<\/li>\n<li><strong>Dedicated database tables<\/strong> \u2014 four indexed tables, zero wp_postmeta writes<\/li>\n<li><strong>4 display styles<\/strong> \u2014 Pill, Block, Inline, Compact \u2014 all inherit your theme colour<\/li>\n<li><strong>Auto-insert or shortcode<\/strong> \u2014 place the badge anywhere with <code>[pulseviews]<\/code><\/li>\n<li><strong>Clean admin dashboard<\/strong> \u2014 views-over-time chart, top content leaderboard, tracking status<\/li>\n<li><strong>Custom view label<\/strong> \u2014 change \"views\" to \"readers\", \"hits\", or anything you want<\/li>\n<\/ul>\n\n<p><strong>Shortcode reference:<\/strong><\/p>\n\n<pre><code>[pulseviews] \u2014 current post, default style\n[pulseviews style=\"1\" variant=\"filled\"] \u2014 filled pill\n[pulseviews style=\"2\"] \u2014 block counter\n[pulseviews style=\"3\"] \u2014 inline text\n[pulseviews style=\"4\"] \u2014 compact badge\n[pulseviews label=\"readers\"] \u2014 custom label\n[pulseviews period=\"week\"] \u2014 views this week\n[pulseviews period=\"today\"] \u2014 views today\n[pulseviews id=\"42\"] \u2014 specific post by ID\n<\/code><\/pre>\n\n<p><strong>Pro version available<\/strong><\/p>\n\n<p>PulseViews Pro is an optional add-on available at <a href=\"https:\/\/pulseviews.net\/pricing\/\">pulseviews.net\/pricing\/<\/a>. It adds:<\/p>\n\n<ul>\n<li>Custom date range reports (any period)<\/li>\n<li>Traffic sources breakdown (Google, social, direct, referrers)<\/li>\n<li>Geographic stats by country<\/li>\n<li>Most viral posts algorithm<\/li>\n<li>CSV and XML data export<\/li>\n<\/ul>\n\n<p>For detailed documentation, visit our <a href=\"https:\/\/pulseviews.net\/docs\/\">Documentation Page<\/a>.<\/p>\n\n<p>The free plugin is fully functional without Pro.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin may connect to the following external services. Both services are <strong>disabled by default<\/strong> \u2014 you must explicitly opt in.<\/p>\n\n<p><strong>1. ip-api.com \u2014 IP Geolocation (opt-in)<\/strong><\/p>\n\n<p>Used to resolve the approximate country from a visitor's IP address for geographic analytics.<\/p>\n\n<ul>\n<li><strong>What data is sent:<\/strong> The visitor's IP address only. No site URL, no personal identifiers, no cookies.<\/li>\n<li><strong>When it is called:<\/strong> Only when a page view is recorded AND \"Geographic tracking\" is enabled in Settings \u2192 Other.<\/li>\n<li><strong>Caching:<\/strong> Results are cached for 24 hours per IP via WordPress transients.<\/li>\n<li><strong>Cloudflare alternative:<\/strong> If your site is behind Cloudflare, the country is read from the <code>CF-IPCountry<\/code> header and ip-api.com is never contacted.<\/li>\n<li><strong>Service provider:<\/strong> ip-api.com<\/li>\n<li><strong>Terms of Service &amp; Privacy Policy:<\/strong> https:\/\/ip-api.com\/docs\/legal<\/li>\n<\/ul>\n\n<p><strong>2. pulseviews.net \u2014 Usage &amp; Diagnostic Data (opt-in)<\/strong><\/p>\n\n<p>Used to send anonymous diagnostic telemetry to help us improve plugin compatibility and stability.<\/p>\n\n<ul>\n<li><strong>What data is sent:<\/strong> WordPress version, PHP version, plugin version, site language, and active plugin settings. No personal data, visitor IPs, or post contents are ever sent.<\/li>\n<li><strong>When it is called:<\/strong> Only when \"Allow PulseViews to collect anonymous diagnostic data\" is explicitly enabled in Settings.<\/li>\n<li><strong>Service provider:<\/strong> PulseViews (pulseviews.net)<\/li>\n<li><strong>Privacy Policy:<\/strong> https:\/\/pulseviews.net\/privacy\/<\/li>\n<li><strong>Terms of Service:<\/strong> https:\/\/pulseviews.net\/terms\/<\/li>\n<\/ul>\n\n<!--section=installation-->\n<p><strong>From the WordPress admin (recommended):<\/strong><\/p>\n\n<ol>\n<li>Go to <strong>Plugins \u2192 Add New Plugin<\/strong><\/li>\n<li>Search for <strong>PulseViews<\/strong><\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong><\/li>\n<\/ol>\n\n<p><strong>Manual upload:<\/strong><\/p>\n\n<ol>\n<li>Download the ZIP from WordPress.org<\/li>\n<li>Go to <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong><\/li>\n<li>Choose the ZIP and click <strong>Install Now<\/strong>, then <strong>Activate<\/strong><\/li>\n<\/ol>\n\n<p><strong>After activation:<\/strong><\/p>\n\n<ol>\n<li>Visit <strong>PulseViews \u2192 Dashboard<\/strong> to see your analytics<\/li>\n<li>Visit <strong>PulseViews \u2192 Settings \u2192 Counting<\/strong> to configure tracking mode<\/li>\n<li>Visit <strong>PulseViews \u2192 Settings \u2192 Display<\/strong> to set up the view badge<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20with%20caching%20plugins%3F\"><h3>Does it work with caching plugins?<\/h3><\/dt>\n<dd><p>Yes. Go to <strong>Settings \u2192 Counting \u2192 Tracking mode<\/strong> and switch to <strong>JavaScript<\/strong>. This tracks views asynchronously after the page loads \u2014 even when served from cache. Tested with WP Rocket, LiteSpeed Cache, W3 Total Cache, and Cloudflare.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20down%20my%20site%3F\"><h3>Will it slow down my site?<\/h3><\/dt>\n<dd><p>No. JavaScript tracking uses the browser's <code>sendBeacon<\/code> API \u2014 completely non-blocking. PHP tracking adds one indexed database write per view. The frontend badge CSS loads only on pages that display it.<\/p><\/dd>\n<dt id=\"does%20it%20track%20logged-in%20users%3F\"><h3>Does it track logged-in users?<\/h3><\/dt>\n<dd><p>By default, Administrators and Editors are excluded. Configure this under <strong>Settings \u2192 Counting \u2192 Exclusions<\/strong>. You can exclude any role independently of the \"exclude logged-in\" toggle.<\/p><\/dd>\n<dt id=\"where%20is%20my%20data%20stored%3F\"><h3>Where is my data stored?<\/h3><\/dt>\n<dd><p>All post view data is stored locally in your WordPress database in four dedicated tables: <code>wp_pulseviews_views<\/code>, <code>wp_pulseviews_aggregates<\/code>, <code>wp_pulseviews_post_totals<\/code>, <code>wp_pulseviews_exclusions<\/code>. Nothing is sent to any external server unless you explicitly opt in to geographic tracking or usage collection.<\/p><\/dd>\n<dt id=\"is%20it%20gdpr%20compliant%3F\"><h3>Is it GDPR compliant?<\/h3><\/dt>\n<dd><p>IP addresses are SHA-256 hashed before storage \u2014 raw IPs are never written to your database. No cookies are set by default (session tracking uses a hashed key). Geographic tracking and telemetry are disabled by default. Read our full <a href=\"https:\/\/pulseviews.net\/privacy\">Privacy Policy<\/a>.<\/p><\/dd>\n<dt id=\"how%20do%20i%20show%20the%20view%20count%20on%20my%20posts%3F\"><h3>How do I show the view count on my posts?<\/h3><\/dt>\n<dd><p>Go to <strong>Settings \u2192 Display \u2192 Auto-insert position<\/strong> and choose \"After content\". Or place <code>[pulseviews]<\/code> manually anywhere in post content, page templates, or widget areas.<\/p><\/dd>\n<dt id=\"can%20i%20customise%20the%20label%3F\"><h3>Can I customise the label?<\/h3><\/dt>\n<dd><p>Yes. Go to <strong>Settings \u2192 Display \u2192 View count label<\/strong>. Change \"views\" to anything \u2014 \"readers\", \"hits\", \"people read this\". You can also override it per-shortcode with <code>[pulseviews label=\"readers\"]<\/code>.<\/p><\/dd>\n<dt id=\"what%20display%20styles%20are%20available%3F\"><h3>What display styles are available?<\/h3><\/dt>\n<dd><p>Four styles: <strong>Pill<\/strong> (rounded with eye icon), <strong>Block<\/strong> (bold inverted counter), <strong>Inline<\/strong> (pure text, inherits theme font), and <strong>Compact<\/strong> (small bordered badge for post cards). Each automatically inherits your theme's text colour.<\/p><\/dd>\n<dt id=\"can%20i%20use%20it%20on%20multiple%20post%20types%3F\"><h3>Can I use it on multiple post types?<\/h3><\/dt>\n<dd><p>Yes. Go to <strong>Settings \u2192 Counting \u2192 Track post types<\/strong> and select any public post type \u2014 posts, pages, products, custom types.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20deactivate%20the%20plugin%3F\"><h3>What happens to my data if I deactivate the plugin?<\/h3><\/dt>\n<dd><p>Data is preserved on deactivation. To delete everything, go to <strong>Settings \u2192 Other \u2192 Danger Zone<\/strong> and enable \"Delete all data on uninstall\" before deleting the plugin.<\/p><\/dd>\n<dt id=\"where%20can%20i%20read%20your%20terms%20and%20conditions%3F\"><h3>Where can I read your terms and conditions?<\/h3><\/dt>\n<dd><p>You can review our full service terms at <a href=\"https:\/\/pulseviews.net\/terms\/\">pulseviews.net\/terms<\/a>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0 \u2014 2026-05-19<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>View tracking with PHP, JavaScript, and combined modes<\/li>\n<li>Bot detection with 30+ patterns<\/li>\n<li>Session-based deduplication<\/li>\n<li>Four frontend display styles (Pill, Block, Inline, Compact)<\/li>\n<li>Admin dashboard with chart and top content table<\/li>\n<li>Settings: Counting, Display, Other tabs<\/li>\n<li>Dedicated database tables (no wp_postmeta)<\/li>\n<li>Shortcode [pulseviews] with full attribute support<\/li>\n<li>Gutenberg block<\/li>\n<li>Role and user exclusions<\/li>\n<li>Geographic tracking opt-in (ip-api.com + Cloudflare header)<\/li>\n<li>Nightly data aggregation via WP-Cron<\/li>\n<li>REST API endpoint for JavaScript tracking mode<\/li>\n<\/ul>","raw_excerpt":"Track, display and analyse post views on your WordPress site. Privacy-first, cache-compatible, zero postmeta bloat.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/353304","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=353304"}],"author":[{"embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/rankalseo"}],"wp:attachment":[{"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=353304"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=353304"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=353304"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=353304"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=353304"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/mai.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=353304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}