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#

KPIDefinition
Tracked keywordsThe 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 upThe number of keywords present in both the current and previous period whose position improved
Ranking downThe number of keywords present in both periods whose position worsened
Average positionThe 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#

ItemKeywords TrackerSearch Dimension
Route/dashboard/mkit/keywords/dashboard/mkit/dimensions/search
Data sourceGSC onlyGA4 + GSC (optional Bing)
Main useKeyword gains and losses, full keyword tableMulti-engine traffic, country × engine, Google subtypes, intent, SERP CTR, Bing enhancements
Time window7/30 days; 90-day full tablePro 28 days / Business 90 days
Keyword count250 rows current/previous; top 50 full tablePro 10 / Business 1000
PlanNo backend gate, UI marks ProFree locked; Pro/Business
Ranking changePosition up or downClicks 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.
  • Data latency & metric definitions: /data-latency
  • GSC data source: /gsc
  • Crawl health & URL inspection: /crawl
  • Site connections & authorization: /connections