Self-Hosted Heatmap Plugins for WordPress: A Privacy-First Guide
Every time a visitor clicks, scrolls, or moves their mouse on your WordPress site, that behavior tells a story about what's working and what isn't. Heatmap tools visualize this data so you can see patterns at a glance.
But here's the part most people don't think about: where does that data go?
With SaaS heatmap tools like Hotjar, Crazy Egg, and Lucky Orange, every mouse movement, every click, and every scroll event is sent to their servers. (Looking for alternatives to these tools? See our Hotjar alternatives comparison.) Session recordings capture everything a visitor does — form inputs, page navigation, hesitation patterns. That data lives on infrastructure you don't control, in jurisdictions you might not have chosen.
For WordPress site owners who care about data privacy — whether for GDPR compliance, client confidentiality, or personal principles — self-hosted alternatives are worth exploring.
Why Self-Hosting Matters for Heatmap Data
Data Residency
When you use a SaaS heatmap tool, your visitor behavior data is stored on the provider's servers. For Hotjar, that means servers in the EU (they're based in Malta). For Microsoft Clarity, that means Microsoft's infrastructure. For Crazy Egg, US-based servers.
If you're running a site that falls under GDPR, the UK's Data Protection Act, or similar privacy regulations, you need to know where your data resides and ensure your processing agreements are in order. With a self-hosted plugin, the answer is simple: the data is in your WordPress database, on your server, in the jurisdiction you chose when you picked your hosting provider.
Data Ownership
With SaaS tools, you're the data controller but the tool is the data processor. You're trusting them with your visitors' behavioral data. You're subject to their terms of service, their retention policies, and their security practices.
With a self-hosted plugin, you're both the controller and the processor. The data is yours. You control retention periods, access, and deletion. There's no third party involved.
Consent Requirements
Under GDPR and similar regulations, using third-party analytics tools that set cookies or process personal data generally requires visitor consent. This means cookie banners, consent management platforms, and the inevitable friction they add to the user experience.
Self-hosted tools that don't use cookies and don't collect personal data may fall outside these consent requirements — though you should always verify with a qualified legal advisor for your specific situation.
Performance
SaaS heatmap tools inject JavaScript that sends data back to their servers in real time. This adds external HTTP requests to every page load. While providers optimize their scripts, any external dependency adds latency and creates a third-party performance bottleneck.
Self-hosted plugins make requests to your own server via the WordPress AJAX API. There's no additional DNS lookup or external connection. The tracking script can be smaller and faster because it only needs to communicate with your own domain.
Self-Hosted Heatmap Options for WordPress
The self-hosted heatmap space for WordPress is smaller than you might expect. Most behavior analytics tools are SaaS products. Here's what exists as actual WordPress plugins that store data locally.
Aurora Heatmap
Type: Click and scroll dot heatmaps Price: Free (Pro version available) Active installs: ~10,000
Aurora Heatmap is a Japanese-developed WordPress plugin that records click positions and displays them as colored dots overlaid on your pages. It's been around for several years and is the most established self-hosted heatmap plugin in the WordPress directory.
What it does well:
- Stores all data in your WordPress database
- No external account or API key required
- Shows click position dots on a page overlay
- Free version covers basic click heatmaps
- Lightweight and straightforward
Limitations:
- Heatmaps are position-based (dots where clicks happened), not element-based. A click near a link is recorded the same as a click on the link — you can't tell if the visitor actually hit the interactive element or the whitespace next to it.
- No link-specific analytics or click count badges
- Limited filtering in the free version (device segmentation is Pro-only)
- Documentation is primarily in Japanese with English translations
- The Pro version is required for scroll heatmaps
- No data export in the free version
Aurora is a solid option if you want a basic visual representation of where clicks happen on your pages, and you value self-hosting.
Linkyy
Type: Link-specific click tracking with heatmap overlay Price: Free (core dashboard) / Pro from $29 one-time Compatibility: WordPress 6.0+, PHP 8.0+
Linkyy approaches heatmaps differently. Instead of recording click positions as dots, it specifically tracks clicks on links — every <a> tag on every page. The data is displayed as color-coded count badges directly on your live pages, showing exactly how many times each link was clicked.
What it does well:
- Tracks clicks on all links automatically (no manual tagging)
- Visual heatmap overlay with click count badges on your live site
- Link-specific data — you know exactly which element was clicked, not just the approximate position
- All data stored in your WordPress database
- No cookies, no external accounts, no JavaScript snippets to paste
- Filter by date range, device type (desktop/mobile), and visitor status (logged-in/anonymous)
- WordPress-native admin dashboard with sortable data tables
- CSV and JSON data export
- Smart selector matching — even if your theme changes, click data reconnects to the right elements
- Manual consent mode (defer tracking until your own consent logic fires)
- Role-based access control
Limitations:
- Tracks link clicks specifically, not general click positions or mouse movement
- No scroll heatmaps (that's not its purpose)
- No session recordings
- Pro features (heatmap overlay, data export) require a one-time purchase — though the core dashboard is free
Linkyy is the right fit if your question is specifically "which links do visitors click on this page?" rather than "where do visitors click on this page?" The distinction matters. A position-based dot heatmap shows you hotspots in approximate screen areas. Linkyy shows you click counts on specific interactive elements.
WPMC Behavior & Heatmap
Type: General behavior analytics Price: Free Active installs: Small (newer plugin, released late 2025)
WPMC is a newer entry in the self-hosted heatmap space. It aims to provide behavior analytics similar to Hotjar but within WordPress.
What it does well:
- Self-hosted data storage
- Attempts to provide heatmaps and basic behavior tracking
- Free to use
Limitations:
- Very new with a small user base — limited community support
- Feature set is still maturing
- Performance impact should be evaluated carefully for larger sites
- Limited documentation
WPMC is worth watching but may not be production-ready for business-critical sites yet.
QA Analytics (formerly QA Heatmap)
Type: Click and scroll heatmaps Price: Free (premium extensions available) Active installs: ~3,000
Another Japanese-developed plugin, QA Analytics provides click and scroll heatmaps stored in your WordPress database. It's more feature-rich than Aurora but also heavier.
What it does well:
- Self-hosted with no external dependencies
- Click heatmaps and scroll-depth visualization
- Somewhat more detail than Aurora in its data views
Limitations:
- Heavier performance footprint
- Documentation primarily in Japanese
- Premium features require paid extensions
- Can conflict with caching plugins
- Less active development in recent updates
Comparison: Self-Hosted Heatmap Plugins
| Feature | Aurora Heatmap | Linkyy | WPMC | QA Analytics |
|---|---|---|---|---|
| Heatmap type | Click dots | Link-specific badges | General clicks | Click dots |
| Data storage | Your database | Your database | Your database | Your database |
| Link click counts | No | Yes | No | No |
| Device segmentation | Pro only | Yes | Limited | Limited |
| Data export | Pro only | CSV + JSON | No | No |
| Cookies | No | No | Varies | No |
| Price | Free / ~$40 yr | Free / Pro from $29 | Free | Free / Paid |
| English documentation | Partial | Full | Partial | Partial |
Which Self-Hosted Option Is Right for You?
Choose Aurora Heatmap if:
- You want a free, basic click dot heatmap
- Position-level data is sufficient for your needs
- You don't need link-specific analytics or data export
Choose Linkyy if:
- You specifically want to know which links get clicked and how often
- You want click count badges visible directly on your live pages
- You need device and visitor segmentation
- You want to export click data as CSV or JSON
- You prefer a one-time purchase over a subscription
Choose QA Analytics if:
- You want click and scroll heatmaps in one free plugin
- You're comfortable with Japanese-origin documentation
- Performance overhead isn't a primary concern
A Note on Using SaaS and Self-Hosted Together
Self-hosted and SaaS heatmap tools aren't mutually exclusive. A common setup is:
- Microsoft Clarity (free SaaS) for session recordings and scroll behavior — these are hard to replicate in a self-hosted plugin because of the data volume involved (see our Clarity vs Linkyy comparison for details)
- Linkyy (self-hosted) for link-specific click tracking — this stays on your server and provides data Clarity doesn't (per-link click counts)
This gives you the best of both approaches: comprehensive behavior analytics from Clarity and precise, self-hosted link data from Linkyy.
Getting Started with Self-Hosted Click Tracking
If data privacy is a priority for your WordPress site — and it probably should be — self-hosted heatmap tools give you visibility into visitor behavior without the compliance overhead of SaaS platforms.
Linkyy is free on WordPress.org for core click tracking. Upgrade to Pro (from $29, one-time) for the visual heatmap overlay, and data export — with a 14-day money-back guarantee. Install it on any WordPress site and see exactly which links your visitors click — with all data staying on your server.