Website analytics

See where people click and scroll

analytics_heatmap · Reads only · Markdown

A page's heatmap: the most clicked elements, rage and dead clicks, scroll depth and time on page, with a link that draws it.

Free*

*Free up to 1,000,000 reads a month for the whole account, then $0.50 per 10,000 reads.

An example

On phones, what do people tap on the Willamette 8 page, and how far down do they scroll?

Your agent callsanalytics_heatmapFree*

The example business is Halverson Cycle & Repair, a bike shop with a repair workshop in Portland, Oregon. The reply is the one the tool really gives.

With these arguments
{
  "site": "halversoncycle.example",
  "page": "/bikes/willamette-8",
  "device": "mobile"
}
What comes back
{
  "site": "halversoncycle.example",
  "page": "/bikes/willamette-8",
  "device": "mobile",
  "period": {
    "from": "2026-09-15",
    "to": "2026-10-14"
  },
  "pageviews": 2,
  "clicks": 4,
  "elements": [
    {
      "element": "button#add-to-cart",
      "text": "Add to cart",
      "clicks": 2,
      "percent": 50,
      "rage_clicks": 0,
      "dead_clicks": 0
    },
    {
      "element": "div.gallery>img:nth-of-type(2)",
      "text": null,
      "clicks": 2,
      "percent": 50,
      "rage_clicks": 2,
      "dead_clicks": 2
    }
  ],
  "rage_clicks": [
    {
      "element": "div.gallery>img:nth-of-type(2)",
      "text": null,
      "clicks": 2
    }
  ],
  "dead_clicks": [
    {
      "element": "div.gallery>img:nth-of-type(2)",
      "text": null,
      "clicks": 2
    }
  ],
  "scroll": {
    "average_percent": 85,
    "reached_percent": {
      "25%": 100,
      "50%": 100,
      "75%": 100,
      "100%": 0
    }
  },
  "time_on_page_seconds": 41,
  "link": "https://halversoncycle.example/bikes/willamette-8#conecto-heatmap=IjM4OTZiZGM4LTA1NmUtNDBhZi1iMDE0LTM0NzYyZTM2NGJmZSI:1xHM3A:3KKmUy82engKyPyVjA8f4rbv69-qmXwxGQ6jG-x0npg",
  "link_works_days": 7
}

Use it when

Someone asks what visitors click or miss on a page, or how far down they read.

What it does

A page's heatmap: the most clicked elements with their text, rage clicks (3 fast clicks in one spot) and dead clicks (nothing on the page changed), how far down people scroll and time on page. The link opens the business's own page with the heat drawn over it (clicks, rage, dead, scroll; desktop, tablet or phone); it works for 7 days. The site's script records clicks on its own, without cookies or anything that identifies a visitor.

What comes back

Pageviews and clicks, the most clicked elements with their text, rage and dead clicks, scroll reach and time on page, and a link (good for 7 days) that draws the heat over the real page. Every reply also carries cost_usd and balance_usd.

Inputs

NameTypeWhat it is
siteRequiredstringThe site's domain (e.g. halversoncycle.example) or its site_id. 4 to 253 characters.
pageRequiredstringThe path, like /pricing. Up to 500 characters.
devicestringOne of: desktop,tablet,mobile,all. Default: all.
periodstringOne of: today,yesterday,7d,30d,90d,month,last_month,12mo,custom. Default: 30d.
fromstringWith period custom: the first day, 2026-10-01. Up to 10 characters.
tostringWith period custom: the last day. Up to 10 characters.
limitinteger1 to 50. Default: 15.

The call

Over MCP, call analytics_heatmap on https://api.conecto.chat/mcp/analytics. Over REST:

Terminal
curl -X POST https://api.conecto.chat/v1/tools/analytics_heatmap \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"site":"halversoncycle.example","page":"/bikes/willamette-8","device":"mobile"}'

When it refuses

A refused call costs nothing and says what to do next.

CodeWhenWhat to do
not_found404No site the business counts has that domain or site_id.Call analytics_list_sites and use a domain from it.
invalid_input400The page is not a path, the device is unknown, or the period is not valid.Send a path like /bikes/willamette-8, a device of desktop, tablet or mobile, and a valid period.

Give this to your agent.

Set up Conecto from https://conecto.chat/SKILL.md