{"id":322224,"date":"2026-06-23T00:43:19","date_gmt":"2026-06-23T00:43:19","guid":{"rendered":"https:\/\/en-au.wordpress.org\/plugins\/lightmap\/"},"modified":"2026-06-23T00:42:50","modified_gmt":"2026-06-23T00:42:50","slug":"haychdev-heatmaps","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/haychdev-heatmaps\/","author":23511120,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.5.0","stable_tag":"0.5.0","tested":"7.0","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Haychdev Heatmaps","header_author":"Michael Freeman","header_description":"Lightweight, privacy-first click and scroll heatmaps. All data stays in your own database \u2014 no cookies, no third-party trackers.","assets_banners_color":"2f202e","last_updated":"2026-06-23 00:42:50","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/haychdev.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":36,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.5.0":{"tag":"0.5.0","author":"haychdev","date":"2026-06-23 00:42:50"}},"upgrade_notice":{"0.4.0":"<p>All features are free and fully functional \u2014 click &amp; scroll heatmaps, device segmentation, CSV export, and 90-day retention. No external requests of any kind.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3582505,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3582505,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3582505,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3582505,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.5.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3582505,"resolution":"1","location":"assets","locale":"","width":1280,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3582505,"resolution":"2","location":"assets","locale":"","width":1280,"height":800}},"screenshots":{"1":"Click heatmap rendered as a live overlay on your real page, with the floating toolbar (clicks\/scroll modes, date range, totals) and a hover tooltip showing the click count for the area under the cursor.","2":"The admin screen: per-page traffic table, tracking settings, and one-click data reset."}},"plugin_section":[],"plugin_tags":[232,5375,984,6207,268434],"plugin_category":[36,55],"plugin_contributors":[268435],"plugin_business_model":[],"class_list":["post-322224","plugin","type-plugin","status-publish","hentry","plugin_tags-analytics","plugin_tags-click-tracking","plugin_tags-conversion","plugin_tags-heatmap","plugin_tags-scroll-map","plugin_category-analytics","plugin_category-seo-and-marketing","plugin_contributors-haychdev","plugin_committers-haychdev"],"banners":{"banner":"https:\/\/ps.w.org\/haychdev-heatmaps\/assets\/banner-772x250.png?rev=3582505","banner_2x":"https:\/\/ps.w.org\/haychdev-heatmaps\/assets\/banner-1544x500.png?rev=3582505","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/haychdev-heatmaps\/assets\/icon-128x128.png?rev=3582505","icon_2x":"https:\/\/ps.w.org\/haychdev-heatmaps\/assets\/icon-256x256.png?rev=3582505","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/haychdev-heatmaps\/assets\/screenshot-1.png?rev=3582505","caption":"Click heatmap rendered as a live overlay on your real page, with the floating toolbar (clicks\/scroll modes, date range, totals) and a hover tooltip showing the click count for the area under the cursor."},{"src":"https:\/\/ps.w.org\/haychdev-heatmaps\/assets\/screenshot-2.png?rev=3582505","caption":"The admin screen: per-page traffic table, tracking settings, and one-click data reset."}],"raw_content":"<!--section=description-->\n<p>Haychdev Heatmaps shows you where visitors click and how far they scroll \u2014 as a heat overlay on your live pages.<\/p>\n\n<p>Unlike heavyweight heatmap services, it is built differently:<\/p>\n\n<ul>\n<li><strong>Your data stays yours.<\/strong> Everything is stored in your own WordPress database. Nothing is sent to third-party servers.<\/li>\n<li><strong>Genuinely lightweight.<\/strong> A &lt;4KB cookieless tracker sends a single request per pageview.<\/li>\n<li><strong>Privacy-first by architecture.<\/strong> No cookies, no IP storage, no fingerprinting, no PII. GDPR-friendly out of the box.<\/li>\n<li><strong>View heatmaps on your real pages.<\/strong> Open any page with the floating toolbar and see clicks and scroll depth overlaid on the live, responsive layout.<\/li>\n<li><strong>Hover for exact numbers.<\/strong> Move your cursor over any heated area to see the click count and its share of the page (or, in scroll mode, the percentage of visitors who reached that depth).<\/li>\n<\/ul>\n\n<p><strong>Features (all free):<\/strong><\/p>\n\n<ul>\n<li>Click and scroll heatmaps on every page<\/li>\n<li>Device segmentation \u2014 filter heatmaps by desktop, tablet, or mobile independently<\/li>\n<li>CSV export \u2014 download raw click events for any page<\/li>\n<li>Live viewer overlay \u2014 see heatmaps rendered directly on your real pages<\/li>\n<li>90-day data retention<\/li>\n<li>All data stored exclusively in your own WordPress database<\/li>\n<li>Sub-4KB cookieless tracker \u2014 no cookies, no PII, no consent banner needed\n<h3>Privacy<\/h3>\nThe plugin does NOT send any data to external servers. The tracker collects only click coordinates, scroll depth, and a device-type flag (no IP addresses, no cookies, no fingerprinting). All data is stored exclusively in your own WordPress database.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/haychdev-heatmaps\/<\/code>, or install through the WordPress plugins screen directly.<\/li>\n<li>Activate the plugin through the Plugins screen.<\/li>\n<li>Visit <strong>Haychdev \u2192 Heatmaps<\/strong> in wp-admin. Tracking starts automatically.<\/li>\n<li>After some traffic arrives, click \"View heatmap\" next to any page.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20slow%20down%20my%20site%3F\"><h3>Does it slow down my site?<\/h3><\/dt>\n<dd><p>The tracker is under 4KB, loads deferred, and sends one request per pageview. Heavy pages are automatically sampled.<\/p><\/dd>\n<dt id=\"where%20is%20my%20data%20stored%3F\"><h3>Where is my data stored?<\/h3><\/dt>\n<dd><p>In three custom tables in your own WordPress database. Deleting the plugin removes them completely.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20cookie%20consent%20banner%3F\"><h3>Do I need a cookie consent banner?<\/h3><\/dt>\n<dd><p>The plugin sets no cookies and stores no personal data. Consult your own counsel, but the architecture is consent-banner-friendly by design.<\/p><\/dd>\n<dt id=\"how%20long%20is%20data%20kept%3F\"><h3>How long is data kept?<\/h3><\/dt>\n<dd><p>90 days by default, configurable with the <code>hd_heatmaps_retention_days<\/code> filter.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20contact%20any%20external%20server%3F\"><h3>Does the plugin contact any external server?<\/h3><\/dt>\n<dd><p>No. The plugin makes no external requests of any kind \u2014 all tracking data stays exclusively in your own WordPress database.<\/p><\/dd>\n<dt id=\"are%20all%20features%20free%3F\"><h3>Are all features free?<\/h3><\/dt>\n<dd><p>Yes. Click and scroll heatmaps, device segmentation (desktop\/tablet\/mobile), CSV export, and 90-day retention are all included and free.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>Added internal extension hooks for the optional Heatmaps Pro add-on. The free plugin captures no new data and remains fully functional and privacy-first.<\/li>\n<\/ul>\n\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>Security\/hardening: every database query now runs through <code>$wpdb-&gt;prepare()<\/code>, using <code>%i<\/code> identifier placeholders for server-derived table names (WordPress.org review feedback).<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>All features are free and fully functional \u2014 click &amp; scroll heatmaps on every page, device segmentation (desktop\/tablet\/mobile), CSV export, 90-day retention.<\/li>\n<li>Internal rename and code-quality improvements.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>All features are now free and fully functional: click and scroll heatmaps on every page, desktop\/tablet\/mobile segmentation, 90-day retention, and CSV export.<\/li>\n<li>Removed the licensing system; the plugin makes no outbound requests.<\/li>\n<li>Added extension hooks for companion add-ons.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Hover over any heated area to see its click count and share of the page (scroll depth percentage in scroll mode).<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Top-level admin menu instead of sitting under Settings.<\/li>\n<li>Page view\/click counts in the admin table now appear immediately, including same-day traffic, instead of waiting for the nightly aggregation.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release: click\/tap heatmaps, scroll-depth maps, device segmentation, privacy-first tracking.<\/li>\n<\/ul>","raw_excerpt":"Click and scroll heatmaps that live entirely in your own database. No cookies, no third-party trackers, no consent banner required.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/322224","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=322224"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/haychdev"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=322224"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=322224"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=322224"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=322224"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=322224"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=322224"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}