Skip to article
Guides / Analytics

Analytics

See what people search for, and which searches find nothing.

  • Plans Pro and Scale
On this page

Analytics show what people search for in your app, day by day, and which searches find nothing. Use the misses to add custom emoji or aliases, and the top queries to tune your quick-reaction row.

What is recorded

For each app, UTC day and normalized query, the API counts searches and misses. A miss is a search that returned no result.

  • Only keyed /v1/search calls count, including cache hits and over-limit answers.
  • Searches answered on the device never reach the API, so they are not in analytics. They are the confident ones.
  • Anonymous calls and development keys are not recorded.
  • Counts arrive in batches, about 10 seconds after the search.

Plans and retention

PlanAnalytics in the dashboardRows kept
Free—7 days
Solo—7 days
Pro30 days30 days
Scale1 year1 year

Plans without analytics keep the last week of rows, so an upgrade shows data at once. A daily job deletes older rows.

Read them

The dashboard reads analytics from its own API, with your signed-in session: GET /api/apps/:id/analytics?days=. The window is 7, 30, 90 days, cut to your plan’s retention. The default is 30.

Response shape
{
  "days": [{ "day": "2026-10-14", "searches": 0, "misses": 0 }, { "day": "2026-10-15", "searches": 412, "misses": 9 }],
  "topQueries": [{ "query": "ship it", "searches": 120 }],
  "topMisses": [{ "query": "lgtm", "misses": 7 }]
}
  • days has one entry per UTC day of the window, oldest first and today last, with 0 for days without searches.
  • topQueries and topMisses have up to 20 entries for the whole window.
  • On a plan without analytics, the answer is 402 with { "error": { "code": "plan_required", "plan": "pro", "message": "…" } }.
  • Every team role can read analytics. Team members see the owner’s plan.

The full contract is in the HTTP API reference.