EN
Language · same page NLNederlands/tools-en-plugins/wordpress-heatmap-scrollmap/ ENEnglish (UK)/en/tools-and-plugins/wordpress-heatmap-scrollmap/ ESEspañol/es/herramientas-y-plugins/wordpress-mapa-de-calor-scrollmap/ We do not remember your choice and never redirect you automatically.
About this choice

We only save your display preference in a preference cookie, for up to 180 days on this device. No CRM or advertising data. Your tracking consent stays unchanged. If cookies are blocked, your choice may not be saved.

SRV · tool · heatmap and scrollmap reg. T.000 · wordpress · gplv2 or later

WordPress heatmap and scrollmap without cookies

See at a glance where visitors click on your WordPress site and how far they scroll, without cookies and without an outside dashboard. A heatmap shows where the clicks land; a scrollmap shows how far down the page people actually get, which is the half of the picture most tools leave out. The UX Heatmap and Scrollmap plugin from TheSEO puts both straight into your own admin. You download it below, install it like any other plugin, and everything it measures stays in your own database. Further down is the reading guide that turns those maps into changes to buttons, order and layout.

SETS NO COOKIE AND WRITES NOTHING TO BROWSER STORAGEMAKES NO OUTSIDE REQUESTS, EVERYTHING STAYS IN YOUR OWN WORDPRESSFREE AND OPEN UNDER GPLv2, NO ACCOUNT AND NO KEY NEEDED
Download the plugin ↓ Book a call wp-ux-heatmap-2.1.0.zip · 82 KB · version 2.1.0 · GPLv2 or later · no account, no registration, no key
WordPress6.0 or higher. The plugin states it is tested up to 7.0.
PHP7.4 or higher. The code has been checked on 8.5.
RightsYou need manage_options, so an administrator account.
Language of the screenThe admin screens are in English. No translation is bundled.
Also available at Full source code on GitHub The zip file above and the source code on GitHub are the same version 2.1.0. If you want to read what the plugin does with your visitors before you install it, you can do that there line by line. It is not in the official WordPress plugin directory yet: it has not been submitted. As soon as that has happened and the review is through, the address will be here.
FIG.01: What you get to seesheet 1/3

A map over your page, and a scale beside it

Analytics tells you how many people were there. This tells you where they looked and where they stopped. Below is the situation from the session described further down: all the attention above the fold, the button at the bottom, and half the visitors never seeing it.

click map and scroll depthschematic · not a real recording
bottom of the screen on mobile
100%75%50%25%0%

Above the fold people click, including on things that are not buttons. The hot spot at the top right sits on a menu item, the one in the middle on a heading. Those are not visitor errors but signals: that is where they expect something.

The line on the scale is the point where half of them have dropped off. Everything below it does exist, but fewer than half of them see it. A button sitting there is invisible to half your visitors.

The cool spot at the bottom is the main button. Not because the button is bad, but because almost nobody is still there.

a lot of attention some attention barely reached average scroll depth
This is a schematic rendering of the situation described in the session below, not a screenshot from a client environment. The plugin records click locations anonymously, sets no cookie and writes nothing to your visitor's storage. That removes the reason a heatmap tool normally needs a cookie banner. Whether you need no consent at all in your own situation stays a matter for you and your own lawyer: article 11.7a of the Dutch Telecommunications Act covers everything that is placed on or read from a device, not only cookies, and your own country has its own version of that rule. How we handle it on our own site is in the cookie statement.
FIG.02: From map to changesheet 2/3

Four patterns, and what you do about them straight away

A heatmap is only worth something once you know what to do with a blob. This is the reading guide we use ourselves: on the left what you see, on the right what you change that afternoon.

reading guidewhat you see · what you do
Hot zone on something that is not a linkVisitors expect a button there. Make it a button, or take away whatever draws the eye.
Main button below the fold on mobileMove it up, or repeat it above the fold.
Scroll depth runs out before the buttonCut down what comes before it, or move the button to the point where people are still looking.
Reviews and case studies only far downBring them up: they only convince if they are seen.
Does this pattern work without the plugin? Partly: you can make the four changes blind and you will usually be right. The map only saves you the guessing, and shows whether it helped. If you want guidance on the changes themselves, see how we build WordPress sites.
FIG.03: The screen you get with itsheet 3/3

A new menu item, and behind it this

After activating, there is a line UX Heatmaps on the left of your admin screen. There you pick a page, and then you see your own page in a window with the clicks laid over it, plus four panels beside it. This is how that screen is put together.

wp-admin · UX Heatmapsschematic · not a screenshot from a client environment

UX Heatmap and Scrollmap

See how visitors use your pages.

Date range: Last 30 days DesktopTabletMobile Reload data

Tracked pages

  • /fitting-a-dormer-window/412 events, 288 clicks, 124 scroll updates
  • /request-a-quote/196 events, 121 clicks, 75 scroll updates
  • /about-us/88 events, 51 clicks, 37 scroll updates

How far visitors get

25%100%
50%74%
75%41%
100%22%

Most clicked elements

  • a.hero-cta96 clicks
  • h2.service-heading31 clicks, not a link
  • a.tel22 clicks
the four states of this pluginwhat the screen reports
  1. Measuring is running on the front of your siteEvery click is kept with its position, and per page view the deepest point reached. The events go to your own admin-ajax.php and nowhere else.
  2. ✓ The map is drawn over your own pageClicks as a heat layer, the scroll depth beside it, the most clicked elements underneath and a conclusion in plain sentences that names the element.
  3. ○ There is nothing to conclude yetMeasuring is still off right after activating, and you switch it on yourself. The conclusion says so when the data supports nothing, rather than making something up.
  4. ! Your site refuses to be framedWith X-Frame-Options or a Content-Security-Policy the window stays empty and the screen says so. The figures beside it are measured separately and still hold.
Four states, four colours, and they are the same four this site uses everywhere something actually happens. Empty is not an error, which is why it has a colour of its own instead of the red of a failure.
The figures in this image are an example, not a measurement of a real site. What is accurate is the layout: the menu item, the date picker, the three device buttons, the list of tracked pages, the window with your own page in it and the panels beside it. If your site forbids framing through X-Frame-Options or a Content-Security-Policy, that window stays empty and the screen says so; the figures next to it still hold.
DOC.01

You cannot see where visitors really click

Analytics gives you figures, but no picture. You see how many visitors open a page, how long they stay and which channel they come in through. What you do not see: where they move their mouse or thumb, which button they ignore and at what point they drop off. That leaves important elements such as a call to action, a form or a menu item unnoticed, even when they are perfectly designed.

Our own UX Heatmap and Scrollmap plugin solves that. You look at click and scroll behaviour straight inside your own WordPress, without cookies, without outside dashboards and without a separate account. This plugin belongs to the full range of tools and plugins from TheSEO, which also holds the setup of the WhatsApp review tool (in Dutch) and the free keyword plan for Google Ads. If you want the longer explanation of how the maps come about first, read how the heatmap and scrollmap plugin works.

DOC.02

What the plugin does exactly

The plugin records two things on the front of your site: where visitors click, and how far down a page they get. That is drawn as a heat layer over a window with your own page in it, with the figures beside it. Here is what is in it, function by function.

  • Click map per page: every click is kept with its position in the window and its position across the full page height, so a click at the bottom of a long page is drawn at the bottom too.
  • Scroll depth as reach: per page view the deepest position is kept, and the panel shows what share of visitors reached 25, 50, 75 and 100 per cent.
  • Filter by device: desktop, tablet and mobile are shown separately, based on the window width the browser sends along itself. Every figure on the screen follows that filter.
  • List of most clicked elements: a short CSS selector per element, so you see what is being clicked and whether that element is a link at all.
  • Rage clicks: three or more clicks within a second that all land within forty pixels of each other. The whole run counts as one burst rather than two, and every click inside it is marked.
  • Dead clicks: a click on something that is not interactive and after which nothing changed within seven tenths of a second. Not the styling, not the address, not the scroll position, not the page height, not the focus and no text selection. Something that looks like a button and does nothing is exactly what this finds.
  • The fold and the reading line: the scroll measuring scale beside the example draws where the average visitor enters the page and how far half your visitors get.
  • Segments side by side: desktop, tablet, mobile, started here and arrived from another page, each with page views, clicks, rage clicks, dead clicks and the median depth. New against returning is deliberately not in there, because that cannot be done without a cookie or browser storage and this plugin uses neither.
  • A conclusion in plain sentences per page, naming the element, which says only what the data supports and says so when it supports nothing.
  • Retention period: a daily job deletes events older than the period you set. You choose 30, 90, 180 or 365 days or keep everything; the default is ninety days. There is a button that wipes everything and a button under the example that wipes only this page, both with a confirmation in front of them.
  • Everything stays inside your own WordPress: the plugin makes no request to any other server. The events go to your own admin-ajax.php and into a table of their own in your own database.

Measuring is still off after activating. You switch it on yourself under UX Heatmaps and then Settings, and you can stop it again at any moment without the collected data disappearing.

DOC.03

How to install it, in four steps

You do not have to be a developer. It is an ordinary plugin zip that you upload like any other. Count on five minutes, including the first measurement.

STEP 1 · GET IT

Click the download button above. You get wp-ux-heatmap-2.1.0.zip, 82 KB. Do not unpack it: WordPress wants the zip itself.

STEP 2 · UPLOAD

In WordPress go to Plugins, then Add New Plugin, then Upload Plugin. Choose the zip file, click Install Now and then Activate Plugin.

STEP 3 · SWITCH IT ON

Measuring is off by default. Go to UX Heatmaps, then Settings, and turn Enable tracking on. Logged in administrators are not tracked, unless you tick that box.

STEP 4 · LOOK

Open your site in a window where you are logged out and click around a bit. Then open UX Heatmaps and pick your page from the list on the left.

If something does not work, it is nearly always one of two things. If the list of pages stays empty, Enable tracking is still off, or you are logged in yourself while logged in visitors are not counted. If the window with your page stays white while the figures beside it are right, your site forbids framing through a security header, and that is a setting of your site and not of the plugin.

If you would rather have the installation guided, our WordPress specialist can look over your shoulder.

DOC.04

What it does, and what it does not do

This plugin does a few things well and a lot of things not at all. That is not modesty but a choice: everything it does not do was not needed to see where a page seizes up. Both lists, so you know what you are bringing in.

where it standsversion 2.1.0
This is in it
  • A click map over your own page, with the click position measured across the full page height and not only inside the window.
  • Scroll reach per page view, in four steps of 25 per cent.
  • Desktop, tablet and mobile separately, with every figure on the screen following that filter.
  • Most clicked elements, with a note when something is being clicked that is not a link.
  • A retention period, a wipe button and a clean uninstall: removing the plugin leaves nothing behind in your database.
This is not in it
  • No session recordings, no mouse movements, no keystrokes, no form analysis.
  • No journey across several pages. Every page view gets a new random number, so two visits by the same person cannot be tied together.
  • No A/B test, no funnels and no session recordings. Rage and dead clicks are in there as of 2.1.0: exactly how they are counted is above in the function list.
  • No picture if your site forbids framing. The window then stays empty, the screen says so, and the figures beside it stay accurate.
  • No translated admin screens. The texts in the admin are English.
Two limits worth naming. The map draws on the place that was clicked and not on the element, so if your page changes layout, older clicks no longer mean anything. And the plugin looks at behaviour, not at people: anyone who wants to know who was there gets nothing from this and has to look elsewhere.
DOC.05

Privacy: what is and is not stored

This is the reason this plugin exists alongside all the heatmap tools already out there, so it belongs here in full and not in a footnote. Per event exactly one row goes into your own database, and that row holds this:

  • a random number that holds the events of one page view together and disappears the moment the page closes;
  • the type of event, click or scroll;
  • the path of the page, without the query string and without the anchor, because that is the part of a web address where a name, an email address or a token can sit;
  • the click position, and that position as a percentage of the full page height;
  • the width and height of the window;
  • the scroll depth as a percentage;
  • a short CSS selector of the clicked element;
  • the full height of the page at that moment;
  • two flags that say whether the click was part of a rage click or a dead click, plus how large that rage click was;
  • a single digit that says whether this page view started here or arrived through a click on your own site;
  • the time according to your own server.

And this is emphatically not in it: no cookie and nothing in localStorage or sessionStorage, no IP address, not even as an encrypted fingerprint, no browser fingerprint, no user number, no link to a WordPress account and no referring address, only that single digit saying whether the visit came from your own site. Nothing goes to us or to any other party either, because the plugin makes no outgoing request at all.

Because nothing is placed on or read from your visitor's device, this plugin needs no cookie consent prompt. What you write in your own privacy statement stays your judgement; the settings screen shows literally what is in the table and how many rows there are, so you can show that to anyone who asks. Why we draw that distinction is in our cookie statement.

Two more things. If a browser sends Do Not Track or Global Privacy Control, the meter does nothing at all; that is on by default and you can switch it off. And if an older version was already running on your site, the update to 2.0.0 removed two columns of visitor data from the table, including everything already in them; 2.1.0 adds five columns for the friction flags, the page height and the entry point, and that happens once on the first admin page after updating.

DOC.06

From map to concrete advice: the reading guide

A map like that tells you nothing if you do not know what you are looking at. There is no scan on this page that fills that in for you; what there is, is the reading guide we use ourselves, summarised above and written out below.

After looking at your maps, work through these four questions. Is there a hot zone on something that is not a link? Then visitors expect a button there. Is your main call to action below the fold on mobile, while the clicks gather above the fold? Then it simply is not seen. Does the scroll depth run out before people reach the call to action? Then there is too much in front of it. And are your reviews or case studies only below the point where most visitors drop off? Then they convince nobody.

This reading guide is meant for anyone already working with heatmaps and scrollmaps who is not quite sure what the colour patterns mean. For marketers, site owners and agency teams it turns raw maps into decisions you can carry out straight away.

One pattern the maps cannot explain on their own is a page people leave before anything is painted at all. That is usually load time rather than layout, and the seven places it hides are worked through in why do I score low on PageSpeed. If the maps show that the page itself needs rebuilding rather than rearranging, that is the work described under WordPress specialist.

DOC.07

Frequently asked questions

What is the difference between a heatmap and a scrollmap? A heatmap shows where visitors click on the page and which parts get the most interaction. A scrollmap shows how far down visitors scroll and which part of the page often does, or almost never does, come into view.

Is the plugin free? Yes. You download it above, no account is needed and there is no paid version coming behind it that suddenly makes this one limited. It is under GPLv2 or later, so you may change it and pass it on.

Does the plugin set a cookie? No, and that can now genuinely be read back in the code. Nothing is placed on or read from your visitor's device, not in localStorage or sessionStorage either. The number that holds the events of one page view together exists only while that page is open.

Does data go to TheSEO? No. The plugin makes no outgoing request at all. Everything goes to your own admin-ajax.php and into a table of its own in your own database. We see nothing, not even whether you have installed it.

Does the plugin work alongside other analytics tools? Yes. The plugin does not replace your existing analytics, it adds to it. You keep using your current statistics package and put the heatmap next to it to see what the figures mean at page level.

Does it work with a caching plugin? Yes. There is nothing in the page that expires, so a page served from cache keeps measuring. The admin screen is never cached by WordPress itself.

May I put it on client sites? Yes. The data stays in that client's WordPress and the settings screen shows literally what is stored, so you can show that to a client or to a data protection officer.

Do I have to be a developer to use the plugin? No. Installation goes through the standard WordPress plugin upload and after that you look at the heatmap and scrollmap per page, without technical changes. The admin screens are in English.

DOC.08

Curious what your heatmap will show

The fastest route is the download button at the top: install, switch on, let a day of traffic come in and then look. If you would rather have someone look with you at what the maps say and what you change that week, book a call. Then we look together at how this plugin fits alongside your wider SEO and conversion approach, and how you combine it with the AI snippet previewer for the question of whether your page can be used by language models as well.

The tools we use ourselves every day
The tools we use ourselves every day
Section · Next stepreachable 24/7
Book a call ↗
Gianluca, founder of TheSEO
Written by GianlucaFounder of TheSEO. Has been building findability for Dutch businesses since 2017, in Google and in AI answers. More about the institute.