Keywords report
Tracked keywords, position movers, 7/30-day windows and how this report differs from the Search dimension report.
Report overview#
The keywords report page is /dashboard/mkit/keywords with endpoint GET /api/v1/reports/keywords-tracker?range=7|30. It uses GSC only, and API keys need the read:keywords scope. The separate /dashboard/reports/keywords calls GET /api/v1/reports/gsc?dims=query, a raw GSC report with no movers.
- GSC must be connected; the page normally gates on connection state first
- No backend plan gate; the page shows a Pro badge but has no locked branch
- When GSC is not connected, the server wraps the error as a warning and returns empty data
Note: GSC data itself lags 1-2 days; the page subtitle says 2-3 days.
KPI definitions#
| KPI | Definition |
|---|---|
| Tracked keywords | The length of the 90-day full table; the code sorts and takes the top 50 before returning, so the UI shows at most 50 |
| Ranking up | The number of keywords present in both the current and previous period whose position improved |
| Ranking down | The number of keywords present in both periods whose position worsened |
| Average position | The average position of keywords with a position in the current window |
Note: The current window is dayStr(rangeDays) to dayStr(1), ending yesterday; the previous period is dayStr(rangeDays*2) to dayStr(rangeDays+1); the 90-day full table is dayStr(90) to dayStr(1). Each query uses rowLimit=250.
Winners and losers#
Winners/Losers are sorted by before.position - after.position and the top 6 of each are shown. A smaller position is better, so a positive difference means the ranking improved.
Note: The all-keywords table is the top 50 of 90-day data sorted by impressions descending, with fields q, imp, clicks, ctr, pos and change; it is the highest-impression subset, not every query.
Versus the Search dimension#
| Item | Keywords Tracker | Search Dimension |
|---|---|---|
| Route | /dashboard/mkit/keywords | /dashboard/mkit/dimensions/search |
| Data source | GSC only | GA4 + GSC (optional Bing) |
| Main use | Keyword gains and losses, full keyword table | Multi-engine traffic, country × engine, Google subtypes, intent, SERP CTR, Bing enhancements |
| Time window | 7/30 days; 90-day full table | Pro 28 days / Business 90 days |
| Keyword count | 250 rows current/previous; top 50 full table | Pro 10 / Business 1000 |
| Plan | No backend gate, UI marks Pro | Free locked; Pro/Business |
| Ranking change | Position up or down | Clicks up or down + Winners/Losers/New/Lost |
Note: Search Dimension "Organic sessions" is not filtered by medium=organic; it is the total of all sessionSource values mapped to engines. This is a definition gap between the copy and the implementation.
Related docs#
- Data latency & metric definitions: /data-latency
- GSC data source: /gsc
- Crawl health & URL inspection: /crawl
- Site connections & authorization: /connections