Skip to main content

AI Usage > Surface Name

Written by Tom Williams

Dataset: AI Usage

Entity: AI Usage Measurement

Field ID: surface_name

Type: Text

Description: The raw surface value published by the provider. Kept alongside surface_ref so a value Keypup has not yet mapped is never lost.

Source: App

Transformation logic: N/A

App Mapping

GitHub Copilot

the raw feature value, or a Keypup label such as 3rd_party_agent, code_review_active or copilot_cloud_agent for surfaces GitHub reports as flags

Anthropic Claude (coming soon)

the raw terminal_type, or messages_api for direct API traffic

Cursor (coming soon)

the source counter name (tabs, chatRequests, agentRequests…) or the event kind

OpenAI Platform (coming soon)

completions_api

OpenAI Codex (coming soon)

client_id, or code_reviews for code review records

Reporting Use Cases

The Surface Name field is the provider's own word for where the usage happened. surface_ref is the comparable version; this is the faithful one.

  • Finer detail than surface type: Several provider surfaces map onto one surface type. Grouping by surface name separates Cursor's composer from its agent, or Copilot's edit mode from its agent mode.

  • Reproducing a provider's own dashboard: GitHub counts a user with both active and passive code review signals as active only. Filtering to surface_name = code_review_active reproduces that definition.

  • Spotting new provider features: An unfamiliar value here is usually a surface the provider has just added and Keypup has not yet mapped, which will show as UNATTRIBUTED in surface_ref.

  • Not comparable across providers: Every provider uses its own vocabulary. Use surface_ref for any chart that spans more than one tool.

Did this answer your question?