{"id":274019,"date":"2026-04-05T18:51:59","date_gmt":"2026-04-05T18:51:59","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/quantely\/"},"modified":"2026-04-12T14:23:19","modified_gmt":"2026-04-12T14:23:19","slug":"quantely-activity","status":"publish","type":"plugin","link":"https:\/\/fuc.wordpress.org\/plugins\/quantely-activity\/","author":23434912,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.1.4","stable_tag":"1.1.4","tested":"6.9.4","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Quantely Activity","header_author":"Erravi","header_description":"Records pageviews and interaction events on your WordPress site.","assets_banners_color":"191512","last_updated":"2026-04-12 14:23:19","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.erravi.com\/plugins\/quantely-activity\/","header_author_uri":"https:\/\/www.erravi.com\/","rating":5,"author_block_rating":0,"active_installs":0,"downloads":194,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.4":{"tag":"1.0.4","author":"erravi","date":"2026-04-05 18:51:40"},"1.1.0":{"tag":"1.1.0","author":"erravi","date":"2026-04-06 20:23:51"},"1.1.1":{"tag":"1.1.1","author":"erravi","date":"2026-04-12 12:52:52"},"1.1.2":{"tag":"1.1.2","author":"erravi","date":"2026-04-12 13:22:39"},"1.1.3":{"tag":"1.1.3","author":"erravi","date":"2026-04-12 13:45:35"},"1.1.4":{"tag":"1.1.4","author":"erravi","date":"2026-04-12 14:23:19"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.gif":{"filename":"icon-128x128.gif","revision":3499301,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":3499301,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3504450,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.4","1.1.0","1.1.1","1.1.2","1.1.3","1.1.4"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3499301,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3499301,"resolution":"2","location":"assets","locale":""},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3499301,"resolution":"3","location":"assets","locale":""},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3499301,"resolution":"4","location":"assets","locale":""},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3499301,"resolution":"5","location":"assets","locale":""}},"screenshots":{"1":"Live activity stream","2":"Live activity stream II","3":"Simple counters","4":"Settings and privacy controls","5":"Exclusions and bot handling"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[4752,7175,9257,2497,31634],"plugin_category":[40,54],"plugin_contributors":[259476],"plugin_business_model":[],"class_list":["post-274019","plugin","type-plugin","status-publish","hentry","plugin_tags-event-tracking","plugin_tags-pageviews","plugin_tags-user-activity","plugin_tags-visitor-tracking","plugin_tags-website-traffic","plugin_category-calendar-and-events","plugin_category-security-and-spam-protection","plugin_contributors-erravi","plugin_committers-erravi"],"banners":{"banner":"https:\/\/ps.w.org\/quantely-activity\/assets\/banner-772x250.jpg?rev=3504450","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/quantely-activity\/assets\/icon-128x128.gif?rev=3499301","icon_2x":"https:\/\/ps.w.org\/quantely-activity\/assets\/icon-256x256.gif?rev=3499301","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/quantely-activity\/assets\/screenshot-1.jpg?rev=3499301","caption":"Live activity stream"},{"src":"https:\/\/ps.w.org\/quantely-activity\/assets\/screenshot-2.png?rev=3499301","caption":"Live activity stream II"},{"src":"https:\/\/ps.w.org\/quantely-activity\/assets\/screenshot-3.jpg?rev=3499301","caption":"Simple counters"},{"src":"https:\/\/ps.w.org\/quantely-activity\/assets\/screenshot-4.jpg?rev=3499301","caption":"Settings and privacy controls"},{"src":"https:\/\/ps.w.org\/quantely-activity\/assets\/screenshot-5.jpg?rev=3499301","caption":"Exclusions and bot handling"}],"raw_content":"<!--section=description-->\n<p>Quantely Activity is a lightweight, privacy-conscious plugin that records visitor activity (pageviews and interactions).<\/p>\n\n<p>It helps site owners understand what is happening on their website for monitoring, diagnostics, performance checks, and analytics validation. It also makes this data available to downstream analytics tools.<\/p>\n\n<p>Quantely Activity runs fully on-site, uses no external services, stores data only briefly, supports cookie-free operation, does not depend on JavaScript, and does not store plain IP addresses.<\/p>\n\n<h3>Key features<\/h3>\n\n<h4>Robust traffic monitoring<\/h4>\n\n<p>Quantely Activity captures activity reliably under imperfect conditions.<\/p>\n\n<ul>\n<li>Server-side pageview capture (always-on baseline)<\/li>\n<li>Optional browser signals (clicks, forms, engagement)<\/li>\n<li>Server-side event capture from plugins, including WooCommerce<\/li>\n<li>Server and browser alignment via <code>pv_id<\/code><\/li>\n<li>Receive-order recording with preserved origin metadata<\/li>\n<li>Lightweight deduplication of duplicate signals<\/li>\n<\/ul>\n\n<h4>Traffic context<\/h4>\n\n<p>Each hit is enriched with context for interpretation and downstream use.<\/p>\n\n<ul>\n<li>UTM parameters (<code>utm_source<\/code>, <code>utm_medium<\/code>, etc.)<\/li>\n<li>Click IDs (e.g. <code>gclid<\/code>, <code>fbclid<\/code>)<\/li>\n<li>Channel classification (email, paid, social, ai, search, referral, direct, internal)<\/li>\n<li>Visitor continuity via cookies and derived identifiers<\/li>\n<\/ul>\n\n<h4>Engagement signals<\/h4>\n\n<p>Engagement is captured efficiently using milestone-based signals.<\/p>\n\n<ul>\n<li>One maximum engagement value per pageview<\/li>\n<li>Fibonacci-based milestones (<code>2\u201389 seconds<\/code>)<\/li>\n<li>No continuous timers or heavy scripts<\/li>\n<\/ul>\n\n<h4>Internal traffic filtering<\/h4>\n\n<p>Internal or irrelevant traffic can be excluded without losing visibility.<\/p>\n\n<ul>\n<li>Role-based exclusions (e.g. admins)<\/li>\n<li>IP-based exclusions<\/li>\n<li>Path-based exclusions<\/li>\n<li>Hits remain visible but are marked (<code>is_excluded<\/code>)<\/li>\n<\/ul>\n\n<h4>Bot filtering<\/h4>\n\n<p>Automated traffic is detected and classified at capture time.<\/p>\n\n<ul>\n<li><code>is_nonhuman<\/code>, <code>bot_label<\/code>, <code>bot_reason<\/code><\/li>\n<li>Detection based on patterns, endpoints, and behavior<\/li>\n<li>Reclassification possible as patterns emerge<\/li>\n<\/ul>\n\n<h3>Privacy<\/h3>\n\n<p>Designed to minimize data exposure and keep control local.<\/p>\n\n<ul>\n<li>No plain IP storage<\/li>\n<li>Short retention window<\/li>\n<li>GPC \/ DNT support<\/li>\n<li>No external tracking services<\/li>\n<li>Data stored fully on-site<\/li>\n<\/ul>\n\n<h3>Integrations<\/h3>\n\n<p>Captured data is structured so other tools can use it.<\/p>\n\n<ul>\n<li>Activity data can feed downstream analytics tools<\/li>\n<li>Events remain connected to their original page context<\/li>\n<li>Compatible with analytics and processing workflows<\/li>\n<\/ul>\n\n<p>Quantely Activity exposes a small developer API for integrations and downstream processing.<\/p>\n\n<ul>\n<li><code>qmon_hit_before_insert<\/code> \u2014 Filter a normalized hit array before it is stored.<\/li>\n<li><code>qmon_hit_recorded<\/code> \u2014 Action fired after a hit has been stored. This is the main integration point for forwarding or persisting captured records.<\/li>\n<li><code>qmon_event_normalize<\/code> \u2014 Filter a normalized event payload before it is finalized.<\/li>\n<li><code>qmon_event_db_dedupe_window_sec<\/code> \u2014 Filter the database deduplication window for events.<\/li>\n<li><code>qmon_bot_verdict<\/code> \u2014 Filter the bot-classification verdict before it is finalized.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin ZIP via <strong>WordPress Admin \u2192 Plugins \u2192 Add New \u2192 Upload Plugin<\/strong><\/li>\n<li>Activate the plugin<\/li>\n<li>Open <strong>Quantely \u2192 Activity<\/strong> to confirm that hits are being recorded<\/li>\n<li>Adjust settings if needed<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20does%20quantely%20activity%20record%3F\"><h3>What does Quantely Activity record?<\/h3><\/dt>\n<dd><p>It records pageviews and interaction events as individual hits.<\/p><\/dd>\n<dt id=\"does%20it%20replace%20analytics%20tools%3F\"><h3>Does it replace analytics tools?<\/h3><\/dt>\n<dd><p>No. Quantely Activity is a capture and monitoring layer. It is not a marketing analytics suite and does not aim to replace long-term analytics reporting.<\/p><\/dd>\n<dt id=\"is%20javascript%20required%3F\"><h3>Is JavaScript required?<\/h3><\/dt>\n<dd><p>No. Server-side capture records pageviews without JavaScript. Browser-side JavaScript extends capture with interaction events and engagement pings.<\/p><\/dd>\n<dt id=\"how%20long%20is%20data%20stored%3F\"><h3>How long is data stored?<\/h3><\/dt>\n<dd><p>Raw hits are stored only for a short configurable period, typically between 6 and 48 hours. The plugin is intended for monitoring and diagnostics rather than long-term data warehousing.<\/p><\/dd>\n<dt id=\"does%20it%20store%20ip%20addresses%3F\"><h3>Does it store IP addresses?<\/h3><\/dt>\n<dd><p>No. Plain IP addresses are not stored. The plugin uses derived or hashed values where needed for classification and exclusion logic.<\/p><\/dd>\n<dt id=\"does%20it%20send%20data%20to%20external%20services%3F\"><h3>Does it send data to external services?<\/h3><\/dt>\n<dd><p>No. Captured activity is stored locally in the WordPress database.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>Shows whether the visitor cookie is active in the Activity table.<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Updated the plugin readme with clearer positioning, new tags, and revised feature descriptions.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Replaced the visible IP (hashed) column in the Activity table with Actor key.<\/li>\n<li>Added default excluded URL parts for common account and authentication paths.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Added a separate Date column to the Activity table.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>quant_visit now uses a 35-day lifetime with sliding expiration.<\/li>\n<li>visitor_key remains a coarse cookie-less fallback, without monthly rotation.<\/li>\n<li>Fixed an admin warning in Diagnostics by replacing an undefined variable in the 24-hour pv_id check.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Review hardening for WordPress.org submission<\/li>\n<li>Improved sanitization, validation, escaping, and internationalization coverage<\/li>\n<li>Improved REST input sanitization and related code quality refinements<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Improved event correlation and deduplication behavior<\/li>\n<li>Expanded diagnostics and integration-related improvements<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Refinements to monitoring, exclusions, and settings behavior<\/li>\n<li>Stability and compatibility improvements<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Minor fixes and internal improvements<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial version prepared during pre-release review.<\/li>\n<\/ul>","raw_excerpt":"See what is really happening on your WordPress website.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/274019","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=274019"}],"author":[{"embeddable":true,"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/erravi"}],"wp:attachment":[{"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=274019"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=274019"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=274019"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=274019"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=274019"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fuc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=274019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}