One snippet, pasted into Settings → Advanced → Code Injection → Header — because it has to load on every page before your clicks happen, and it renders nothing visible. Squarespace hosts millions of small-business and portfolio sites, and almost none of those sites want another extension just to render a small piece of live data. No extension. Squarespace renders raw HTML and script tags inside a Code Block, so there is nothing to install from the Extensions marketplace.
Hotjar charges $99-$389/mo. Crazy Egg charges $99-$249/mo. The two FREE click heatmap tools that used to exist (Mouseflow Lite, Lucky Orange Free) both quietly killed their free tiers in 2023. We rebuilt the click heatmap in 2026 — free forever, no signup, no email, no recording quotas. Paste one HTML snippet, return to FeedPulse in 24 hours, see exactly where every visitor clicked on every page of your site. Blazing / hot / warm / smoky temperature bins, per-page breakdown, dead-zone detection — all the things you used to pay $99/mo for. Want to see exactly what you get? → Try the live demo on /sample-heatmap (real visualisation, sample data, zero install).
Code Injection (Settings → Advanced) needs a Business plan or higher. Code Blocks exist on every plan, but JavaScript and iframes inside them only execute on paid plans above Personal. So Personal users see the block but not the widget — move up a plan or use a service that renders a plain image. Everything from Core upward works with a Code Block.
Squarespace renders a grey placeholder for Code Blocks while you're editing and doesn't run injected scripts in the editor at all. Save, then open the live URL in a normal tab — and hard-refresh, because Squarespace caches aggressively at the edge. Most 'it doesn't work' reports are an editor-only check.
Brine-family 7.0 templates load pages via AJAX, so a script placed in the body may not re-run when a visitor clicks through your nav — the widget appears on first load and vanishes afterwards. Fix: Site Styles → uncheck Enable Ajax Loading, or put the snippet in Code Injection Header instead so it runs once for the whole session.
No extension. Squarespace renders raw HTML and script tags inside a Code Block, so there is nothing to install from the Extensions marketplace. Installing an extension for this would mean an extra dependency, an update cycle and a security surface to render one snippet. Paste it into Settings → Advanced → Code Injection → Header and you're done.
Settings → Advanced → Code Injection → Header — because it has to load on every page before your clicks happen, and it renders nothing visible. In your site dashboard go to Settings → Advanced → Code Injection. Paste the snippet into the Header field — it is injected into the <head> of every page. Click Save, then open your live site (not the editor) to confirm. Prefer the Footer field just below it for anything script-based: same site-wide coverage, lower priority in the load order.
No. The script tag is async, so it never blocks your page from rendering, and the widget draws itself after your content is already on screen. Squarespace serves your site from its own CDN and the snippet is one async tag, so it loads beside your content. Prefer the Footer field over Header in Code Injection for anything script-based — it keeps the tag out of the critical path on every page at once.
Squarespace 7.1 editor: Add Block → Code. Code Injection: Settings → Advanced → Header or Footer. Page Settings: Advanced → per-page code injection on Business and above. 7.0 templates: same Code Block, plus turn off Ajax loading. Any builder with a raw-HTML or code block will render it, because there's nothing framework-specific in the snippet.