Find the pages frustrating your visitors with a daily Microsoft Clarity report

Every morning: yesterday's pages with the most rage clicks, dead clicks and quick backs in Microsoft Clarity, with session counts for scale.

Runs
Daily at 8:00
Posts
Report card

From your apps to your board

How the skill works: your agent reads yesterday by page from Microsoft Clarity; clarity project from What you tell it, daily at 8:00, and gives you report card and the report in the chat.

Reads

  • Microsoft ClarityYesterday by page
  • What you tell itClarity project
reads
Your agentClaude Code, Codex, Cursor or GeminiDaily at 8:00
posts

You get

  • Report cardOn your board, updated in place every run
  • The report in the chatEvery run, with or without Briefkin

What you get

  • Top pages by frustration yesterday: sessions, rage clicks, dead clicks and quick backs.
  • Biggest change against each page's 7-day average.
  • Script errors on pages where they rose.
  • One line on which recordings to watch first.

The card on the right is a sample. Yours shows your own numbers and updates in place every run.

What lands on your board

example.comMicrosoft Clarity daily UX issues report · Claude Code

Rage clicks on checkout nearly tripled

/checkout had 214 rage clicks across 1,960 sessions yesterday, almost three times its 7-day average. Dead clicks on /pricing also stayed high after Tuesday's redesign.

PageSessionsRage clicksDead clicksQuick backs
/checkout1,9602148841
/pricing3,42037402156
/signup2,780229673
/docs/getting-started1,510961118
/account/billing640312712

Rage clicks on /checkout ran at 10.9 per 100 sessions against a 7-day average of 3.8. Watch recordings of that page filtered to rage clicks first.

Done
An example with made-up numbers. Your agent posts your real ones.

What it does

Clarity records where visitors rage click, click on things that do nothing, and bounce straight back. The dashboard shows it well, but only if someone opens it, and the export API remembers just the last three days, so a weekly look misses most of the week.

The agent reads yesterday once each morning, ranks pages by frustration per session so a busy page doesn't win on volume alone, and keeps its own history. Product managers and marketers see the page that broke after a release the next morning, while the recordings are still fresh.

How it works

  1. 1Pull yesterday by page

    Call GET https://www.clarity.ms/export-data/api/v1/project-live-insights?numOfDays=1&dimension1=URL with Authorization: Bearer <token>. The response has a block per metric (Traffic, Rage Click Count, Dead Click Count, Quickback Click, Excessive Scroll, Script Error Count, Error Click Count), each broken down by URL, in UTC and capped at 1,000 rows.

  2. 2

    2Rank by frustration per session

    Join the metrics on URL and work out rage clicks, dead clicks and quick backs per 100 sessions. Keep pages with at least 50 sessions, so one angry visitor on a quiet page doesn't top the list.

  3. 3

    3Keep the history

    The API only reaches back 3 days, so append each day's numbers to a JSON file and compare every page with its own 7-day average. A page that doubled is news; a page that is always high is a known issue.

  4. 4

    4Post the report

    The top 5 pages with sessions and the three counts, the page that moved most against its average, and which behavior to filter on when you open its recordings in Clarity.

  5. Post it to the board

    With BRIEFKIN_TOKEN set, the agent sends the result as one card that updates in place every run. Without it, you get the report in the chat.

Install and run it

Pick your agent, where the data comes from and how to schedule it; the commands below follow.

Agent
Data
Schedule
  1. Install the skill

    One command. It puts the SKILL.md in ~/.claude/skills and in ~/.agents/skills, which Codex, Cursor, Gemini CLI, Copilot CLI and OpenCode read too.

    shellcurl -fsSL https://briefkin.dev/skills/microsoft-clarity-daily-ux-issues/install | sh
  2. Run it

    Ask Claude Code:

    promptRun the microsoft-clarity-daily-ux-issues skill

    Or paste the prompt instead of installing:

    promptUsing the Microsoft Clarity Data Export API (project-live-insights, numOfDays=1, dimension1=URL), get yesterday's traffic, rage clicks, dead clicks and quick backs by page. Rank pages with at least 50 sessions by rage and dead clicks per 100 sessions, and show the top 5 with sessions and counts. If you have earlier days saved, compare each page with its 7-day average and name the page that moved most. Make only one API call; the limit is 10 per day.
  3. Put it on a schedule

    Daily at 8:00, from cron on any machine where Claude Code is signed in:

    crontab0 8 * * * claude -p "Run the microsoft-clarity-daily-ux-issues skill"

    Add it with crontab -e. A laptop asleep at that time runs it when it wakes if you use launchd or Task Scheduler instead; GitHub Actions works for the API route.

  4. Send it to your board

    Connect Briefkin once with curl -fsSL https://briefkin.dev/install | sh and every run lands on your board as a report card. How setup works

View the SKILL.mdRaw file
SKILL.md---
name: microsoft-clarity-daily-ux-issues
description: "Every morning: yesterday's pages with the most rage clicks, dead clicks and quick backs in Microsoft Clarity, with session counts for scale. Use when the user asks for this, or when it runs on a schedule."
---

# Microsoft Clarity daily UX issues report

Every morning: yesterday's pages with the most rage clicks, dead clicks and quick backs in Microsoft Clarity, with session counts for scale.

Clarity records where visitors rage click, click on things that do nothing, and bounce straight back. The dashboard shows it well, but only if someone opens it, and the export API remembers just the last three days, so a weekly look misses most of the week.

The agent reads yesterday once each morning, ranks pages by frustration per session so a busy page doesn't win on volume alone, and keeps its own history. Product managers and marketers see the page that broke after a release the next morning, while the recordings are still fresh.

## Two ways to get the data

Use the API or MCP route when you have an MCP server, a CLI or an API token for the app. Otherwise, if you can drive a browser the user is signed in to (Claude in Chrome, a Playwright or Chrome DevTools MCP server), use the browser route. Say which one you used.

## Route A: API or MCP server

### What you need

- A Clarity Data Export API token (Settings > Data Export > Generate new API token; project admins only) in `CLARITY_API_TOKEN`, or Microsoft's Clarity MCP server (`@microsoft/clarity-mcp-server`), which uses the same API.
- Both routes share the limit of 10 export calls per project per day, so leave room if other tools use the token.

If something is missing, say what and stop; do not invent numbers.

### Steps

1. **Pull yesterday by page** (Microsoft Clarity): Call `GET https://www.clarity.ms/export-data/api/v1/project-live-insights?numOfDays=1&dimension1=URL` with `Authorization: Bearer <token>`. The response has a block per metric (Traffic, Rage Click Count, Dead Click Count, Quickback Click, Excessive Scroll, Script Error Count, Error Click Count), each broken down by URL, in UTC and capped at 1,000 rows.
2. **Rank by frustration per session**: Join the metrics on URL and work out rage clicks, dead clicks and quick backs per 100 sessions. Keep pages with at least 50 sessions, so one angry visitor on a quiet page doesn't top the list.
3. **Keep the history**: The API only reaches back 3 days, so append each day's numbers to a JSON file and compare every page with its own 7-day average. A page that doubled is news; a page that is always high is a known issue.
4. **Post the report**: The top 5 pages with sessions and the three counts, the page that moved most against its average, and which behavior to filter on when you open its recordings in Clarity.

## Route B: the browser

### What you need

- Signed in to Clarity (Microsoft, Google or Facebook account) with at least Member access to the project.

If something is missing, say what and stop; do not invent numbers.

### Steps

Start at https://clarity.microsoft.com/projects. The user is signed in already; never type passwords or codes, and ask if a sign-in page appears.

1. **Open the project dashboard**: Open `https://clarity.microsoft.com/projects`, pick the project, and open **Dashboard**. Set the date picker to a **Custom** range of yesterday only; Clarity days run midnight to midnight UTC.
2. **Read the popular pages**: In the **Popular pages** card, note the sessions for each page. Pages with fewer than 50 sessions are too quiet to rank.
3. **Filter by each frustration signal**: Click **Filters**, open **User actions**, and apply **Rage clicks**; the dashboard now shows only sessions with rage clicks, so read **Popular pages** again to get rage-click sessions per page. Repeat with **Dead clicks** and **Quick backs**, clearing the filter in between.
4. **Rank and compare**: Divide each page's filtered sessions by its total sessions for a rate per 100 sessions, rank the top 5, and compare with the figures you saved on earlier days to find the page that moved most against its 7-day average.
5. **Point to the recordings**: For the top page, open **Recordings** with the same date and filters applied; the agent reports which filter to keep when you watch them.

Note: The dashboard counts sessions that contain a signal, while the export API counts the clicks themselves, so browser and API numbers differ; use one route consistently. Popular pages shows a limited list, so a site with many URLs needs the URL filter per page. Dashboard data can lag an hour or two behind the day.

## The report

- **Top pages** by frustration yesterday: sessions, rage clicks, dead clicks and quick backs.
- **Biggest change** against each page's 7-day average.
- **Script errors** on pages where they rose.
- One line on which recordings to watch first.

## Post it to Briefkin

When `BRIEFKIN_TOKEN` is set, or `~/.config/briefkin/env` exists (the installer from https://briefkin.dev/docs writes it), also send the result to the user's Briefkin board as one card. Keep the `item_key` the same on every run so the card updates in place, use a new `event_id` per run, and put today's real numbers in place of the example ones. If the request fails, say so once and carry on.

```bash
[ -n "${BRIEFKIN_TOKEN:-}" ] || . ~/.config/briefkin/env
curl -sS -X POST "${BRIEFKIN_URL:-https://briefkin.dev}/v1/events" \
  -H "authorization: Bearer $BRIEFKIN_TOKEN" \
  -H "content-type: application/json" \
  -d @- <<'JSON'
{
  "v": 1,
  "event_id": "microsoft-clarity-daily-ux-issues/<date of this run, e.g. 2026-10-16>",
  "item_key": "microsoft-clarity-daily-ux-issues",
  "project": "example.com",
  "source": "Microsoft Clarity daily UX issues report skill",
  "kind": "update",
  "title": "Rage clicks on checkout nearly tripled",
  "summary": "**/checkout** had **214 rage clicks** across 1,960 sessions yesterday, almost three times its 7-day average. Dead clicks on /pricing also stayed high after Tuesday's redesign.",
  "widget": [
    {
      "type": "Table",
      "props": {
        "columns": [
          "Page",
          "Sessions",
          "Rage clicks",
          "Dead clicks",
          "Quick backs"
        ],
        "align": [
          "left",
          "right",
          "right",
          "right",
          "right"
        ],
        "rows": [
          [
            "/checkout",
            1960,
            214,
            88,
            41
          ],
          [
            "/pricing",
            3420,
            37,
            402,
            156
          ],
          [
            "/signup",
            2780,
            22,
            96,
            73
          ],
          [
            "/docs/getting-started",
            1510,
            9,
            61,
            118
          ],
          [
            "/account/billing",
            640,
            31,
            27,
            12
          ]
        ]
      }
    },
    {
      "type": "Callout",
      "props": {
        "text": "Rage clicks on /checkout ran at 10.9 per 100 sessions against a 7-day average of 3.8. Watch recordings of that page filtered to rage clicks first.",
        "tone": "bad"
      }
    }
  ]
}
JSON
```

Widgets come from the Briefkin catalog (https://briefkin.dev/v1/catalog). Without a token, just give the user the report.

## Run it on a schedule

Suggested: Daily at 8:00 (`0 8 * * *`). From cron, with the agent signed in on that machine:

```bash
0 8 * * * claude -p "Run the microsoft-clarity-daily-ux-issues skill"
# Codex: codex exec, Gemini CLI: gemini -p, Copilot CLI: copilot -p, OpenCode: opencode run
```

Or use the agent's own scheduler (Claude Code routines, Codex automations, Claude or ChatGPT scheduled tasks): https://briefkin.dev/skills/microsoft-clarity-daily-ux-issues#schedule

Source: https://briefkin.dev/skills/microsoft-clarity-daily-ux-issues

What your agent needs

  • A Clarity Data Export API token (Settings > Data Export > Generate new API token; project admins only) in CLARITY_API_TOKEN, or Microsoft's Clarity MCP server (@microsoft/clarity-mcp-server), which uses the same API.

  • Both routes share the limit of 10 export calls per project per day, so leave room if other tools use the token.

Connecting Microsoft Clarity

  1. Microsoft Clarity MCP server, Microsoft's official server (@microsoft/clarity-mcp-server, source), also listed in Claude's connector directory. It runs locally with Node: in Claude Code, claude mcp add --transport stdio clarity -- npx -y @microsoft/clarity-mcp-server --clarity_api_token=<token>; Codex and Cursor take the same command and arguments in their server config. Its tools are query-analytics-dashboard, list-session-recordings and query-documentation-resources.
  2. Data Export API with a token. A project admin generates a token in Clarity under Settings > Data Export > Generate new API token. Store it in CLARITY_API_TOKEN and send it as Authorization: Bearer.

The token only exports that one project's data; it can't change settings or tracking. Mind the limit of 10 export requests a day per project and schedule one daily run rather than several.

Questions

Why daily and not weekly?

The Data Export API returns only the last 1 to 3 days and allows 10 calls per project per day (as of October 2026). One call each morning for yesterday, with the history kept by the skill and by the card on your board, is the only way to see a whole week.

What time zone is "yesterday"?

Clarity returns its data in UTC, so the day on the card runs midnight to midnight UTC. For a site whose visitors are mostly in the Americas, schedule the skill a few hours later so the UTC day has fully closed for your traffic.

Do I need Briefkin to use the Microsoft Clarity daily UX issues report skill?

No. The skill runs with your own agent and gives you the report in the chat. With a Briefkin token set, each run also posts it to your board as a report card, so you can glance at it instead of asking again.

Which agents can run it?

Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot CLI, OpenCode, Windsurf and Amp all read SKILL.md files. The install command puts it in ~/.claude/skills and ~/.agents/skills, where they look. ChatGPT, the Claude app and Grok take the prompt instead. Pick your agent under "Install and run it" and the commands change to match.

Can it work without an API or MCP server, from my browser?

Yes. Switch the data source to "Your browser" and the steps change to the Microsoft Clarity pages themselves: the agent opens clarity.microsoft.com/projects in a browser you are signed in to and reads the numbers off the page. Claude Code, Codex, Cursor, Claude app and ChatGPT can drive a browser out of the box; Gemini CLI, Copilot CLI and OpenCode need a Playwright or Chrome DevTools MCP server first. It is slower than the API and needs you signed in, so it suits a report you run by hand or from a scheduler on your own computer.

Read this report on your board, not in a chat log

Skills are free to use with any agent. Briefkin is where their results land: one board for every report, number and question your agents send, with a ping when something needs you.

Free during the open beta. No card.