# Metric registry

> Every metric key Roiva ships: what it measures, its type and unit, and which kind of connection feeds it.
>
> Source: https://roiva-staging.com/docs/reference/metrics
> Generated from what Roiva ships, on every deploy.

Every key a library formula or an initiative template can read, grouped by the domain its key opens with. A key with a **Fed by** entry arrives from a connected system; the rest are recorded by a person, imported, or produced by a formula.

What the key's shape means, and where a metric's before-value comes from, is in [Metric keys, and where a value comes from](https://roiva-staging.com/docs/metric-keys-and-where-values-come-from).

## CRM
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| crm.contacts.lead_to_mql_rate | Percentage of new contacts that became Marketing Qualified Leads. | percentage | % | HubSpot |
| crm.contacts.mql_count | Contacts that reached MQL (Marketing Qualified Lead) status in the period. | count | leads | HubSpot |
| crm.contacts.mql_to_sql_rate | Percentage of the period's marketing-qualified contacts that also became sales-qualified. | percentage | % | HubSpot |
| crm.contacts.new_count | New contacts created in the CRM in the period. | count | contacts | HubSpot |
| crm.contacts.sql_count | Contacts that reached SQL (Sales Qualified Lead) status in the period. | count | leads | HubSpot |
| crm.contracts.avg_cycle_days | Average days from contract request to signature. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| crm.contracts.hours_per_contract | Combined legal, sales and operations hours to take one contract from request to signature. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| crm.contracts.processed_count | Contracts drafted, redlined and executed in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| crm.deals.at_risk_share | Percentage of open pipeline deals slipping or forecast to be lost. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| crm.deals.avg_demo_to_proposal_days | Average days from demo to proposal sent. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| crm.deals.avg_sales_cycle_days | Average days from deal creation to close across all closed deals in the period. | duration | days | HubSpot, Pipedrive, Salesforce |
| crm.deals.avg_value | Average closed-won deal size in the period. | currency | USD | HubSpot, Pipedrive, Salesforce |
| crm.deals.lost_count | Number of deals/opportunities closed-lost in the period. | count | deals | HubSpot, Pipedrive, Salesforce |
| crm.deals.pipeline_value | Value of the deals open in the period, taken as a snapshot when the CRM syncs. | currency | USD | HubSpot, Pipedrive, Salesforce |
| crm.deals.win_rate | Percentage of closed deals that were won. won_count / (won_count + lost_count). | percentage | % | HubSpot, Pipedrive, Salesforce |
| crm.deals.won_count | Number of deals/opportunities closed-won in the period. | count | deals | HubSpot, Pipedrive, Salesforce |
| crm.deals.won_value | Total value of all closed-won deals in the period. | currency | USD | HubSpot, Pipedrive, Salesforce |
| crm.leads.avg_lead_to_won_days | Average days from lead creation to closed-won. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| crm.leads.avg_qualify_minutes | Average staff minutes to qualify one inbound lead. | duration | minutes | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| crm.leads.qualification_rate | Percentage of scored leads that pass the qualification threshold. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| crm.leads.qualified_count | Leads that met the qualification threshold and were routed to a rep. | count | leads | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| crm.leads.scored_count | Inbound leads scored in the period. | count | leads | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| crm.leads.sql_rate | Sales-qualified leads in the period as a percentage of the new leads created in it. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| crm.proposals.hours_per_proposal | Staff hours to assemble and send one proposal. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| crm.proposals.sent_count | Proposals sent to prospects in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| crm.reps.admin_hours_per_week | Sales rep hours per week on administrative work rather than selling. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## HubSpot
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| hubspot.contacts.lead_to_mql_rate | HubSpot's lead-to-mql rate for the month. Written to crm.contacts.lead_to_mql_rate instead when this connection is the primary source. | percentage | % | HubSpot |
| hubspot.contacts.mql_count | HubSpot's marketing qualified leads for the month. Written to crm.contacts.mql_count instead when this connection is the primary source. | count | leads | HubSpot |
| hubspot.contacts.mql_to_sql_rate | HubSpot's mql-to-sql rate for the month. Written to crm.contacts.mql_to_sql_rate instead when this connection is the primary source. | percentage | % | HubSpot |
| hubspot.contacts.new_count | HubSpot's new contacts for the month. Written to crm.contacts.new_count instead when this connection is the primary source. | count | contacts | HubSpot |
| hubspot.contacts.sql_count | HubSpot's sales qualified leads for the month. Written to crm.contacts.sql_count instead when this connection is the primary source. | count | leads | HubSpot |
| hubspot.deals.avg_sales_cycle_days | HubSpot's avg sales cycle for the month. Written to crm.deals.avg_sales_cycle_days instead when this connection is the primary source. | duration | days | HubSpot |
| hubspot.deals.avg_value | HubSpot's average won deal size for the month. Written to crm.deals.avg_value instead when this connection is the primary source. | currency | USD | HubSpot |
| hubspot.deals.lost_count | HubSpot's lost deals for the month. Written to crm.deals.lost_count instead when this connection is the primary source. | count | deals | HubSpot |
| hubspot.deals.open_count | Deals open in HubSpot at sync time, a snapshot rather than a period total, written once per month and rewritten on every sync. | count | — | HubSpot |
| hubspot.deals.open_value | Value of the deals open in HubSpot at sync time, a snapshot rather than a period total, written once per month and rewritten on every sync. | currency | USD | HubSpot |
| hubspot.deals.win_rate | HubSpot's deal win rate for the month. Written to crm.deals.win_rate instead when this connection is the primary source. | percentage | % | HubSpot |
| hubspot.deals.won_count | HubSpot's won deals for the month. Written to crm.deals.won_count instead when this connection is the primary source. | count | deals | HubSpot |
| hubspot.deals.won_value | HubSpot's won deal value for the month. Written to crm.deals.won_value instead when this connection is the primary source. | currency | USD | HubSpot |
| hubspot.marketing.campaigns_launched | HubSpot's campaigns launched for the month. Written to marketing.campaigns.launched_count instead when this connection is the primary source. | count | campaigns | HubSpot |
| hubspot.marketing.email_open_rate | HubSpot's marketing email open rate for the month. Written to marketing.emails.open_rate instead when this connection is the primary source. | percentage | % | HubSpot |
| hubspot.marketing.organic_sessions | HubSpot's organic search sessions for the month. Written to marketing.web.organic_sessions instead when this connection is the primary source. | count | sessions | HubSpot |
| hubspot.marketing.posts_published | HubSpot's content published for the month. Written to marketing.content.published_count instead when this connection is the primary source. | count | posts | HubSpot |
| hubspot.tickets.avg_resolution_days | HubSpot's avg ticket resolution time for the month. Written to support.tickets.avg_resolution_days instead when this connection is the primary source. | duration | days | HubSpot |
| hubspot.tickets.closed_count | HubSpot's support tickets closed for the month. Written to support.tickets.closed_count instead when this connection is the primary source. | count | tickets | HubSpot |
| hubspot.tickets.new_count | HubSpot's support tickets opened for the month. Written to support.tickets.volume instead when this connection is the primary source. | count | tickets | HubSpot |
| hubspot.tickets.open_count | Tickets open in HubSpot at sync time, a snapshot rather than a period total, written once per month and rewritten on every sync. | count | — | HubSpot |
| hubspot.tickets.resolution_rate | HubSpot's ticket resolution rate for the month. Written to support.tickets.resolution_rate instead when this connection is the primary source. | percentage | % | HubSpot |

## Finance
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| finance.ap.data_entry_minutes_per_invoice | Staff minutes to key the data from one supplier invoice. | duration | minutes | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| finance.ap.days_payable_outstanding | Average days between invoice receipt and payment. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| finance.ap.invoices_processed | Supplier invoices processed through the extraction pipeline in the period. | count | invoices | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| finance.ap.minutes_per_invoice | Staff minutes to process one supplier invoice end to end. | duration | minutes | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| finance.bills.count | Total vendor bills received in the period. | count | bills | NetSuite, QuickBooks, Xero |
| finance.bills.error_rate | Percentage of vendor bills entered with an error that needed correcting — amount, coding, vendor or a duplicate. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| finance.bills.volume | Total value of all vendor bills received in the period. | currency | USD | NetSuite, QuickBooks, Xero |
| finance.close.cycle_days | Calendar days from period end to final sign-off of the close. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| finance.disputes.avg_resolution_days | Average days to resolve a billing dispute. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| finance.invoices.count | Total outbound invoices created in the period. | count | invoices | NetSuite, QuickBooks, Xero |
| finance.invoices.error_rate | Percentage of invoices issued with an error requiring correction. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| finance.invoices.paid_count | Number of invoices marked paid in the period. | count | invoices | NetSuite, QuickBooks, Xero |
| finance.invoices.volume | Total billed on invoices created in the period, tax included. | currency | USD | NetSuite, QuickBooks, Xero |
| finance.pnl.expenses | Total operating expenses for the period from the accounting system. | currency | USD | NetSuite, QuickBooks, Xero |
| finance.pnl.net_income | Net income (revenue minus expenses) for the period. | currency | USD | NetSuite, QuickBooks, Xero |
| finance.pnl.revenue | Total revenue recognized in the period from the accounting system. | currency | USD | NetSuite, QuickBooks, Xero |
| finance.reconciliation.hours | Staff hours on manual reconciliations per close cycle. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| finance.revenue_recognition.adjustment_count | Revenue recognition adjustments or corrections required per period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| finance.revenue_recognition.manual_hours | Staff hours per period building revenue recognition schedules by hand. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| finance.treasury.avg_cash_balance | Average daily cash balance in the period. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| finance.treasury.manual_hours_per_cycle | Staff hours to build and update the cash flow model per forecast cycle. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Professional services
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| professional_services.billing.realization_rate | Billed fees as a percentage of standard-rate value of hours worked. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| professional_services.billing.unbilled_hours_per_practitioner_weekly | Billable hours worked but not captured per practitioner per week. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| professional_services.knowledge.active_users | Practitioners actively using the knowledge system in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| professional_services.knowledge.search_minutes | Average minutes per search for prior work and precedent. | duration | minutes | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| professional_services.knowledge.searches_per_practitioner | Times per period a practitioner searches for prior work, methods or precedent. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| professional_services.practitioners.available_hours | Working hours available per practitioner in the period. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| professional_services.practitioners.billable_count | Billable practitioners in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| professional_services.practitioners.billable_hours_worked | Hours worked by billable practitioners in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| professional_services.projects.at_risk_detection_lead_weeks | Average weeks before delivery failure that an at-risk project is identified. | duration | weeks | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| professional_services.projects.at_risk_identified_count | At-risk projects identified in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| professional_services.projects.budget_overrun_rate | Percentage of projects that exceeded the approved budget. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| professional_services.projects.pm_count_using_automation | Project managers using the automated reporting system. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| professional_services.projects.recovery_hours_per_project | Senior PM hours spent recovering a late-detected at-risk project. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| professional_services.proposals.prep_hours | Staff hours to assemble one proposal. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| professional_services.proposals.submitted_count | Proposals or statement-of-work responses submitted in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| professional_services.reporting.client_reports_delivered | Client status reports delivered in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| professional_services.reporting.hours_per_client_report | Staff hours to compile, format and deliver one client report. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| professional_services.reporting.reports_per_pm | Client reports each project manager prepares in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| professional_services.utilization.bench_share | Percentage of available practitioner hours spent on the bench. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| professional_services.utilization.billable_rate | Billable hours as a percentage of available practitioner hours. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Construction
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| construction.bids.awarded_value | Contract value of projects awarded in the period. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| construction.bids.submitted_count | Bids submitted in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| construction.documents.search_hours_per_week | Staff hours per week locating current drawing versions and document history. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| construction.estimating.hours_per_bid | Estimator hours per bid. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| construction.estimating.variance_rate | Average estimate-to-actual variance as a percentage of the estimate. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| construction.job_costing.review_cycle_days | Average days between formal job cost reviews on active projects. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| construction.job_costing.review_cycles | Formal job cost review cycles in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| construction.job_costing.review_hours_per_project | PM and controller hours per project per job cost review cycle. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| construction.labor.hours_worked | Field labor hours worked in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| construction.payroll.processing_hours_per_week | Staff hours per week collecting, reconciling and processing timecards. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| construction.payroll.timecard_error_rate | Percentage of timecards requiring correction. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| construction.payroll.timecards_processed | Timecards processed in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| construction.projects.active_count | Active projects in the portfolio during the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| construction.projects.cost_overrun_rate | Percentage of projects that exceed the approved budget. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| construction.rfis.response_days | Average calendar days from RFI submission to formal response. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| construction.rfis.submitted_count | Requests for information submitted in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| construction.safety.observation_hours_per_week | Staff hours per week on safety observation reporting and job hazard analysis distribution. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| construction.safety.recordable_incident_rate | OSHA recordable incident rate (incidents × 200,000 ÷ hours worked). | ratio | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Healthcare
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| healthcare.appointments.avg_length | Scheduled minutes of a patient visit of the type recovered clinician time would be booked as. | duration | minutes | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| healthcare.appointments.no_show_rate | Percentage of scheduled appointments the patient did not attend. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| healthcare.appointments.scheduled_count | Appointments scheduled in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| healthcare.audits.prep_hours_per_cycle | Staff hours preparing documentation for one quality audit or regulatory review. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| healthcare.claims.denial_rate | Percentage of submitted claims denied on first submission. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| healthcare.claims.denied_count | Claims denied on first submission in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| healthcare.coding.charts_coded | Charts coded in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| healthcare.coding.charts_per_coder_per_day | Charts coded per medical coder per day. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| healthcare.coding.coder_count | Medical coders using AI-assisted coding. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| healthcare.coding.error_rate | Percentage of coded charts with an error. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| healthcare.denials.appeal_success_rate | Share of appealed denials overturned. | ratio | 0–1 | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| healthcare.documentation.after_hours_charting_hours_per_week | Hours per week clinicians spend on documentation outside clinical hours. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| healthcare.documentation.clinician_count | Clinicians using ambient documentation. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| healthcare.documentation.encounters_per_clinician_per_day | Patient encounters per clinician per clinical day. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| healthcare.documentation.minutes_per_encounter | Clinician documentation minutes per patient encounter. | duration | minutes | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| healthcare.quality.care_gap_closure_rate | Percentage of identified care gaps closed. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| healthcare.quality.value_based_revenue_at_risk | Revenue at risk or bonus-eligible under value-based contracts, for a performance year. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| healthcare.revenue_cycle.days_in_ar | Average days from claim submission to payment. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## HR
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| hr.hiring.days_to_first_interview | Average days from job posting to first interview. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hr.hiring.hires_count | Positions filled in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hr.hiring.recruiter_hours_per_hire | Recruiter hours on resume review and screening per hire. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hr.inquiries.avg_response_hours | Average hours from employee inquiry to HR response for routine questions. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hr.inquiries.chatbot_deflection_rate | Share of employee inquiries fully resolved by the chatbot without HR involvement. | ratio | 0–1 | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hr.inquiries.tier1_per_month | Routine HR inquiries received per month (policy, PTO, benefits, payroll). | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hr.onboarding.admin_hours_per_hire | HR and IT staff hours on onboarding tasks per new hire. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hr.onboarding.completion_rate | Percentage of required onboarding tasks completed within the target window. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hr.onboarding.days_to_productivity | Days from start date until a new hire is independently productive. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hr.onboarding.hires_count | New employees who completed onboarding in the period. | count | hires | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hr.onboarding.tasks_automated | Onboarding checklist items (provisioning, welcome communications, acknowledgments) now handled automatically. | count | tasks | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hr.reporting.hours_per_month | Staff hours per month building workforce reports. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hr.reviews.admin_hours_per_cycle | HR and manager hours coordinating, collecting and calibrating one performance review cycle. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hr.reviews.admin_hours_per_employee | HR and manager admin hours per employee per review cycle. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hr.reviews.completion_rate | Percentage of required performance reviews completed on time. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hr.reviews.employees_reviewed | Employees included in the performance review cycle. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hr.workforce.headcount | Total employee headcount in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hr.workforce.voluntary_attrition_rate | Annualized voluntary attrition rate. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Supply chain
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| supply_chain.deliveries.on_time_rate | Percentage of orders delivered on or before the promised date. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| supply_chain.deliveries.revenue_at_risk | Revenue exposed to late deliveries in the period through penalties, cancellations and credits. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| supply_chain.forecasting.accuracy | Demand forecast accuracy against actual demand. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| supply_chain.inventory.avg_value | Average inventory value on hand during the period. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| supply_chain.inventory.excess_value | Value of inventory held above target levels. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| supply_chain.inventory.stockout_events | Stockout incidents in the period. | count | events | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| supply_chain.inventory.stockout_rate | Percentage of SKUs or order lines that were out of stock. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| supply_chain.procurement.hours_per_po | Staff hours per purchase-order cycle, from creation through invoice matching. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| supply_chain.procurement.invoice_matching_hours_per_week | AP staff hours per week matching purchase orders to invoices. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| supply_chain.procurement.po_cycle_days | Average calendar days from purchase requisition to approved purchase order. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| supply_chain.procurement.purchase_orders_processed | Purchase orders processed in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| supply_chain.shipments.cost_per_shipment | Average total cost per shipment. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| supply_chain.shipments.count | Outbound shipments in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| supply_chain.suppliers.disruptions_per_year | Supply disruptions per year. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| supply_chain.suppliers.review_hours_per_month | Staff hours per month on supplier health reviews and risk assessments. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| supply_chain.warehouse.pick_error_rate | Percentage of picks resulting in an error. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| supply_chain.warehouse.picks_count | Units picked in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| supply_chain.warehouse.picks_per_labor_hour | Units picked per warehouse labor hour. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Support
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| support.calls.avg_handle_time | Average minutes an agent spends on one inbound phone call — talk, hold and wrap-up. | duration | minutes | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| support.knowledge_base.article_count | Knowledge base articles being maintained. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| support.knowledge_base.avg_article_age_days | Average days since knowledge base articles were last reviewed or updated. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| support.knowledge_base.update_minutes_per_article | Minutes to review and update one knowledge base article per cycle. | duration | minutes | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| support.quality.review_minutes_per_interaction | Minutes for a QA analyst to review and score one interaction. | duration | minutes | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| support.quality.sample_rate | Share of support interactions reviewed for quality. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| support.tickets.ai_resolution_rate | Percentage of the tickets resolved in the period that AI resolved, without human escalation. | percentage | % | Freshdesk, Intercom, Zendesk |
| support.tickets.ai_resolved_count | Support tickets fully resolved by AI without human escalation in the period. | count | tickets | Freshdesk, Intercom, Zendesk |
| support.tickets.avg_first_response_hours | Average hours from ticket creation to the first agent reply, across tickets opened in the period. | duration | hours | Freshdesk, Intercom, Zendesk |
| support.tickets.avg_handle_time | Average time agents spent handling each ticket in the period. | duration | hours | Freshdesk, Zendesk |
| support.tickets.avg_resolution_days | Average days from ticket creation to resolution (Intercom close time ÷ 24). | duration | days | HubSpot, Intercom, Salesforce |
| support.tickets.closed_count | Total support tickets closed/resolved in the period. | count | tickets | Freshdesk, HubSpot, Intercom, Salesforce, Zendesk |
| support.tickets.cost_per_ticket | Blended cost to resolve one support ticket (agent labor plus tooling). | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| support.tickets.csat_score | Average customer satisfaction on closed tickets, normalized to 0–1 (Zendesk good/bad → 0/1; Intercom 1–5 → (rating − 1) ÷ 4). | score | 0–1 | Intercom, Zendesk |
| support.tickets.deflected_count | Tickets resolved by self-service or AI without an agent in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| support.tickets.resolution_rate | Percentage of tickets opened in the period that were also closed. | percentage | % | HubSpot, Salesforce |
| support.tickets.self_serve_deflection_rate | Percentage of support inquiries resolved without agent involvement. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| support.tickets.volume | Total support tickets opened in the period (help-desk tickets, Intercom conversations, Salesforce cases). | count | tickets | Freshdesk, HubSpot, Intercom, Salesforce, Zendesk |

## Financial services
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| financial_services.advisors.accounts_per_advisor | Client accounts managed per advisor. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| financial_services.advisors.aum_per_advisor | Average assets under management per advisor. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| financial_services.advisors.count | Advisors using the client intelligence platform. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| financial_services.advisors.proactive_outreach_rate | Percentage of clients contacted proactively per quarter. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| financial_services.fraud.false_positive_rate | Percentage of flagged transactions that were legitimate. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| financial_services.fraud.flagged_count | Transactions flagged by the fraud system in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| financial_services.fraud.loss_rate_bps | Fraud losses as basis points of transaction volume. | count | bps | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| financial_services.kyc.review_hours_per_account | Staff hours to review and approve one account. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| financial_services.onboarding.accounts_count | New accounts onboarded through KYC/AML in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| financial_services.onboarding.days_to_active | Average days from application to active account. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| financial_services.regulatory_reporting.error_rate | Percentage of regulatory report line items requiring correction before submission. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| financial_services.regulatory_reporting.line_items_per_cycle | Line items across the regulatory reports filed in one reporting cycle. | average | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| financial_services.regulatory_reporting.prep_hours_per_report | Staff hours to prepare and validate one regulatory report. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| financial_services.transactions.volume | Total transaction volume processed in the period. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| financial_services.underwriting.decision_hours | Average hours from application submission to decision. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| financial_services.underwriting.manual_review_rate | Percentage of applications requiring manual underwriter review. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| financial_services.underwriting.review_hours_per_application | Average underwriter and analyst hours of hands-on review per application decided, an automatically decided one counting as none — not the elapsed time to a decision. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Real estate
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| real_estate.leasing.annual_renewal_rate | Percentage of expiring leases renewed. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| real_estate.leasing.days_to_lease | Average days from inquiry to signed lease. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| real_estate.leasing.staff_hours_per_lease | Leasing staff hours per signed lease (lead response, tours, application processing). | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| real_estate.leasing.units_leased | Units signed to new leases in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| real_estate.leasing.units_up_for_renewal | Units with lease expirations in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| real_estate.maintenance.emergency_repairs_per_month | Unplanned emergency repair incidents per month. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| real_estate.portfolio.aum | Portfolio value under management at the time of measurement. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| real_estate.portfolio.property_count | Properties in the portfolio. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| real_estate.portfolio.unit_count | Residential or commercial units in the portfolio. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| real_estate.reporting.hours_per_property_monthly | Staff hours per property per month compiling performance and financial reports. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| real_estate.reporting.review_cycle_days | Calendar days between formal portfolio performance reviews. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| real_estate.tenants.contacts_per_unit_monthly | Inbound phone and email contacts per unit per month requiring staff handling. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| real_estate.tenants.minutes_per_contact | Staff minutes to handle one inbound tenant contact. | duration | minutes | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| real_estate.tenants.satisfaction_score | Average tenant satisfaction score from periodic surveys. | score | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| real_estate.work_orders.admin_minutes_per_order | Staff minutes per work order on creation, vendor calls and status follow-ups. | duration | minutes | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| real_estate.work_orders.created_count | Work orders created in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| real_estate.work_orders.resolution_days | Average days from work order submission to resolution. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Marketing
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| marketing.budget.destination_pipeline_per_dollar | Pipeline created per dollar of spend in the channels budget was moved to, from the attribution model. | ratio | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| marketing.budget.reallocated | The period's marketing spend that went to the channels attribution favored instead of the channels it was taken from. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| marketing.budget.source_pipeline_per_dollar | Pipeline created per dollar of spend in the channels budget was taken from, from the attribution model. | ratio | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| marketing.campaigns.avg_list_size | Average recipients per campaign send. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| marketing.campaigns.conversion_rate | Percentage of campaign recipients who completed the campaign's goal. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| marketing.campaigns.hours_per_launch | Staff hours to configure and launch one campaign. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| marketing.campaigns.launched_count | Marketing campaigns with a start date in the period. | count | campaigns | HubSpot |
| marketing.content.hours_per_piece | Staff hours from brief to published asset. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| marketing.content.pieces_per_month | Content pieces produced per month. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| marketing.content.published_count | Blog posts published in the period on the connected CMS. | count | posts | HubSpot |
| marketing.emails.open_rate | Opens as a percentage of deliveries across marketing emails published in the period. | percentage | % | HubSpot |
| marketing.nurture.manual_hours_per_week | Staff hours per week on lead follow-up and segmentation done by hand. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| marketing.pipeline.sourced_share | Percentage of total sales pipeline attributed to marketing-sourced leads. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| marketing.reporting.hours_per_week | Staff hours per week on marketing performance reports. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| marketing.seo.research_hours_per_month | Staff hours per month on keyword research and on-page optimization. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| marketing.web.organic_sessions | Website sessions from organic search in the period. | count | sessions | HubSpot |

## Anthropic
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| anthropic.claude_code.acceptance_rate | Accepted tool actions as a share of those proposed in Anthropic's Claude Code report for the month. Read as engineering.coding_assistant.acceptance_rate when Anthropic is the primary coding-assistant source. | percentage | % | Anthropic |
| anthropic.claude_code.acceptances | Tool actions developers accepted in Anthropic's Claude Code report for the month — one accepted edit or write each, not a bundled activity as GitHub counts them. Read as engineering.coding_assistant.acceptances when Anthropic is the primary coding-assistant source. | count | acceptances | Anthropic |
| anthropic.claude_code.active_users_avg | Developers who ran Claude Code on an average day in the month. Read as engineering.coding_assistant.active_users when Anthropic is the primary coding-assistant source. | average | users | Anthropic |
| anthropic.claude_code.lines_accepted | Lines of code Claude Code added in the month. Read as engineering.coding_assistant.lines_accepted when Anthropic is the primary coding-assistant source. | count | lines | Anthropic |
| anthropic.claude_code.proposals | Tool actions Claude Code proposed in the month, accepted and rejected together. Read as engineering.coding_assistant.suggestions when Anthropic is the primary coding-assistant source. | count | suggestions | Anthropic |
| anthropic.usage.cost_per_million_output_tokens | Anthropic's spend for the month over the output tokens it generated, per million. Written to ai.cost.per_million_output_tokens instead when this connection is the primary source for AI usage. | currency | USD | Anthropic |
| anthropic.usage.input_tokens | Anthropic's ai input tokens for the month. Written to ai.usage.input_tokens instead when this connection is the primary source. | count | tokens | Anthropic |
| anthropic.usage.model_input_tokens | Input tokens sent to one Claude model in the month; the model is in the observation's dimensions. | count | tokens | Anthropic |
| anthropic.usage.model_output_tokens | Output tokens generated by one Claude model in the month; the model is in the observation's dimensions. | count | tokens | Anthropic |
| anthropic.usage.model_spend | Anthropic API spend on one model for the month; the model is in the observation's dimensions. | currency | USD | Anthropic |
| anthropic.usage.model_total_tokens | Input plus output tokens for one Claude model in the month; the model is in the observation's dimensions. | count | tokens | Anthropic |
| anthropic.usage.output_tokens | Anthropic's ai output tokens for the month. Written to ai.usage.output_tokens instead when this connection is the primary source. | count | tokens | Anthropic |
| anthropic.usage.spend | Anthropic's usage spend for the month. | currency | USD | Anthropic |
| anthropic.usage.total_tokens | Anthropic's ai total tokens for the month. Written to ai.usage.total_tokens instead when this connection is the primary source. | count | tokens | Anthropic |

## IT
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| it.audits.hours_per_cycle | IT staff hours per software inventory and license reconciliation audit cycle. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| it.deployments.change_failure_rate | Percentage of deployments causing a rollback or incident. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| it.deployments.count | Production deployments in the period. | count | — | GitHub |
| it.deployments.hours_per_deployment | Engineer hours per production deployment, including manual steps, monitoring and validation. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| it.deployments.per_week | Production deployments per week. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| it.helpdesk.avg_users_per_incident | End-users affected or blocked by a typical IT incident. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| it.helpdesk.mean_time_to_resolution_hours | Mean hours to resolve a tier-1 IT issue. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| it.helpdesk.tickets_per_month | IT helpdesk tickets per month requiring agent handling. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| it.security.incident_count | Security incidents investigated in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| it.security.incidents_per_year | Security incidents per year. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| it.security.mean_time_to_contain_hours | Mean hours from detection of a security incident to its containment. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| it.security.mean_time_to_detect_hours | Mean hours from a security incident starting to its detection. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| it.software.annual_spend | Total annual software license spend. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| it.software.unused_license_share | Percentage of purchased licenses that are unassigned or unused. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Legal
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| legal.compliance.change_response_days | Days from a regulatory change being published to controls updated and staff notified. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| legal.compliance.gaps_prevented | Compliance control gaps identified and closed before becoming findings, in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| legal.compliance.monitoring_hours_per_week | Staff hours per week tracking regulatory publications and updates. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| legal.contracts.missed_renewals_per_year | Contracts that auto-renewed or lapsed unintentionally per year. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| legal.contracts.search_hours_per_week | Staff hours per week locating and retrieving contracts. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| legal.matters.closed_count | Legal matters handled to completion in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| legal.matters.research_hours_per_matter | Legal research hours per matter. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| legal.outside_counsel.monthly_spend | Monthly spend on outside counsel for matters that could be handled in-house. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| legal.policies.attestation_completion_rate | Percentage of employees who complete required policy attestations by the deadline. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| legal.training.admin_hours_per_cycle | Staff hours per compliance training cycle on enrollment, reminders, tracking and attestation. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| legal.vendors.onboarded_count | New vendors onboarded through due diligence in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| legal.vendors.onboarding_days | Average days from vendor selection to fully approved and active. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| legal.vendors.portfolio_count | Active vendors in the third-party risk portfolio. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| legal.vendors.review_hours_per_vendor | Staff hours per vendor for a periodic risk reassessment. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Manufacturing
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| manufacturing.data.reconciliation_hours_per_week | Staff hours per week reconciling data between shop floor systems and the ERP. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| manufacturing.equipment.oee | Overall equipment effectiveness. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| manufacturing.equipment.oee_reporting_hours_per_week | Staff hours per week collecting and compiling OEE data. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| manufacturing.equipment.unplanned_downtime_hours_per_month | Unplanned equipment downtime hours per month. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| manufacturing.maintenance.annual_cost_per_asset | Average annual maintenance cost per asset including reactive repairs and planned servicing. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| manufacturing.maintenance.annual_spend | Annual maintenance spend across monitored assets, planned and reactive. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| manufacturing.maintenance.cost_reduction_rate | Percentage reduction in total maintenance spend from condition-based servicing. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| manufacturing.materials.shortage_incidents_per_month | Production stoppages caused by material shortages per month. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| manufacturing.production.theoretical_capacity_units | Units producible in the period at nameplate capacity. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| manufacturing.production.units_produced | Units produced in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| manufacturing.quality.defect_escape_rate | Percentage of produced units with a defect that reaches the customer. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| manufacturing.quality.first_pass_yield | Percentage of units completing production without defect, rework or scrap. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| manufacturing.quality.scrap_cost_per_month | Monthly scrap and rework cost. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| manufacturing.scheduling.hours_per_week | Staff hours per week building and adjusting production schedules. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Insurance
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| insurance.claims.adjuster_hours_per_claim | Average adjuster hours of hands-on work per claim closed, a straight-through claim counting as none — not the days from first notice of loss to close. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| insurance.claims.auto_adjudication_rate | Share of claims processed straight-through without adjuster review. | ratio | 0–1 | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| insurance.claims.avg_cycle_days | Average days from first notice of loss to claim closure. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| insurance.claims.incurred_losses | Incurred losses on the affected book in the period. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| insurance.claims.lae_ratio | Loss adjustment expense as a percentage of incurred losses. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| insurance.claims.leakage_rate | Paid loss attributable to fraud or excess adjustments as a percentage of claims paid. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| insurance.claims.processed_count | Claims submitted and processed in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| insurance.fraud.false_positive_siu_referrals | Special investigations unit referrals per month that do not substantiate fraud. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| insurance.policy_servicing.calls_per_month | Inbound policy-servicing call volume per month. | count | calls | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| insurance.underwriting.earned_premium | Earned premium on the targeted book in the period. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| insurance.underwriting.loss_ratio | Incurred losses as a percentage of earned premium. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| insurance.underwriting.quote_hours | Average underwriter hours from application to bindable quote. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| insurance.underwriting.submission_count | New business submissions reviewed in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Salesforce
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| salesforce.cases.avg_resolution_days | Salesforce's avg ticket resolution time for the month. Written to support.tickets.avg_resolution_days instead when this connection is the primary source. | duration | days | Salesforce |
| salesforce.cases.closed_count | Salesforce's support tickets closed for the month. Written to support.tickets.closed_count instead when this connection is the primary source. | count | tickets | Salesforce |
| salesforce.cases.open_count | Cases open in Salesforce at sync time, a snapshot rather than a period total, written once per month and rewritten on every sync. | count | — | Salesforce |
| salesforce.cases.resolution_rate | Salesforce's ticket resolution rate for the month. Written to support.tickets.resolution_rate instead when this connection is the primary source. | percentage | % | Salesforce |
| salesforce.cases.volume | Salesforce's support tickets opened for the month. Written to support.tickets.volume instead when this connection is the primary source. | count | tickets | Salesforce |
| salesforce.opportunities.avg_sales_cycle_days | Salesforce's avg sales cycle for the month. Written to crm.deals.avg_sales_cycle_days instead when this connection is the primary source. | duration | days | Salesforce |
| salesforce.opportunities.avg_value | Salesforce's average won opportunity size for the month. Written to crm.deals.avg_value instead when this connection is the primary source. | currency | USD | Salesforce |
| salesforce.opportunities.lost_count | Salesforce's lost deals for the month. Written to crm.deals.lost_count instead when this connection is the primary source. | count | deals | Salesforce |
| salesforce.opportunities.open_count | Opportunities open in Salesforce at sync time, a snapshot rather than a period total, written once per month and rewritten on every sync. | count | — | Salesforce |
| salesforce.opportunities.open_value | Value of the opportunities open in Salesforce at sync time, a snapshot rather than a period total, written once per month and rewritten on every sync. | currency | USD | Salesforce |
| salesforce.opportunities.win_rate | Salesforce's deal win rate for the month. Written to crm.deals.win_rate instead when this connection is the primary source. | percentage | % | Salesforce |
| salesforce.opportunities.won_count | Salesforce's won deals for the month. Written to crm.deals.won_count instead when this connection is the primary source. | count | deals | Salesforce |
| salesforce.opportunities.won_value | Salesforce's won deal value for the month. Written to crm.deals.won_value instead when this connection is the primary source. | currency | USD | Salesforce |

## GitHub
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| github.copilot.acceptance_rate | Accepted code activities as a share of code generation activities in GitHub's Copilot organization report for the month. Read as engineering.coding_assistant.acceptance_rate when GitHub is the primary coding-assistant source. | percentage | % | GitHub |
| github.copilot.active_users_avg | Daily active Copilot users in GitHub's organization report, averaged over the month. Read as engineering.coding_assistant.active_users when GitHub is the primary coding-assistant source. | average | — | GitHub |
| github.copilot.lines_accepted | Lines of code accepted in GitHub's Copilot organization report for the month. Read as engineering.coding_assistant.lines_accepted when GitHub is the primary coding-assistant source. | count | — | GitHub |
| github.copilot.suggestions_accepted | Code acceptance activities in GitHub's Copilot organization report for the month. Read as engineering.coding_assistant.acceptances when GitHub is the primary coding-assistant source. | count | — | GitHub |
| github.copilot.suggestions_shown | Code generation activities in GitHub's Copilot organization report for the month. Read as engineering.coding_assistant.suggestions when GitHub is the primary coding-assistant source. | count | suggestions | GitHub |
| github.cost.copilot_spend | GitHub's Copilot and AI-credit net spend for the month. Written as ai.cost.spend when this connection is the primary AI-cost source. | currency | USD | GitHub |
| github.cost.product_spend | GitHub spend on one product (Actions, Copilot, Packages, …) for the month; the product is in the observation's dimensions. | currency | USD | GitHub |
| github.cost.total_spend | GitHub's cost total spend for the month. | currency | USD | GitHub |
| github.deployments.count | Deployments GitHub recorded to a production environment in the month. Written to it.deployments.count instead when this connection is the primary source for deployments. | count | deployments | GitHub |
| github.pull_requests.additions_avg | GitHub's pull requests additions avg for the month. | average | — | GitHub |
| github.pull_requests.cycle_time_avg | GitHub's pull requests cycle time avg for the month. | duration | — | GitHub |
| github.pull_requests.merged_count | GitHub's pull requests merged count for the month. | count | — | GitHub |

## Hospitality
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| hospitality.bookings.direct_share | Share of bookings made through direct channels. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hospitality.food_beverage.cost_of_goods | Food and beverage cost of goods in the period. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hospitality.food_beverage.prep_hours | Kitchen prep hours in the period. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hospitality.food_beverage.waste_share | Food cost lost to waste and spoilage as a percentage of food and beverage cost of goods. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hospitality.guests.ancillary_spend_per_guest | Average ancillary spend per guest. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hospitality.guests.count | Guests in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hospitality.housekeeping.minutes_per_room_turn | Housekeeping labor minutes per room turn. | duration | minutes | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hospitality.housekeeping.rooms_turned | Room turns (checkouts and cleans) in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hospitality.revenue_management.hours_per_week | Revenue manager hours per week on rate setting and reporting. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hospitality.rooms.available_room_nights | Available room-nights in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hospitality.rooms.revenue | Total room revenue across all channels in the period. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| hospitality.rooms.revpar | Revenue per available room. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Operations
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| operations.applications.processed_count | Applications reviewed and decided in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| operations.documents.data_entry_minutes_per_document | Staff minutes to key the data from one document. | duration | minutes | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| operations.documents.extraction_accuracy | Percentage of extracted fields that are correct without human correction. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| operations.documents.processed_count | Documents (PDFs, forms, emails) processed by the extraction pipeline in the period. | count | documents | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| operations.forecasting.accuracy | Accuracy of the operating forecast (cash flow, demand or pipeline) against actuals. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| operations.forecasting.cycles | Forecast cycles run in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| operations.forecasting.hours_per_cycle | Staff hours to produce one complete forecast cycle. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| operations.processing.error_rate | Percentage of processed items that contained an error or needed manual correction. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| operations.reporting.delivery_lag_days | Days from period close to delivery of the period's report. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| operations.reporting.distribution_lag_hours | Hours between data availability and report delivery to stakeholders. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| operations.reporting.hours_per_week | Staff hours per week spent compiling and distributing reports by hand. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| operations.reporting.reports_automated | Distinct report types fully automated and removed from manual production. | count | reports | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Retail
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| retail.customers.active_count | Active customers in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| retail.customers.repeat_purchase_rate | Percentage of customers making a second purchase within twelve months. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| retail.customers.retention_rate | Twelve-month customer retention rate. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| retail.inventory.accuracy | Percentage of inventory records matching physical stock. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| retail.inventory.markdown_eligible_sold_value | Full retail value of the seasonal or clearance-eligible stock that sold or cleared in the period, at target price or marked down. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| retail.inventory.sell_through_rate | Of the seasonal or clearance-eligible stock that sold or cleared in the period, the percentage by retail value that sold at or above target price. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| retail.orders.avg_value | Average order value. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| retail.orders.count | Orders placed in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| retail.pricing.gross_margin | Gross margin as a percentage of revenue. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| retail.pricing.markdown_rate | Percentage of the period's sales, by full retail value, made at a markdown price. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| retail.web.conversion_rate | Orders as a percentage of website sessions. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| retail.web.session_count | Website sessions in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Education
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| education.admissions.admitted_count | Applicants offered admission in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| education.admissions.applicant_count | Applicants in the enrollment cycle. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| education.admissions.decision_days | Average days from application received to decision. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| education.admissions.review_minutes_per_application | Average staff minutes of hands-on work to review and process one application — not the days it waits for a decision. | duration | minutes | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| education.admissions.yield_rate | Percentage of admitted students who enroll. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| education.courses.dfw_rate | Percentage of students earning a D or F or withdrawing. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| education.enrollment.retention_rate | Year-over-year student retention rate. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| education.enrollment.student_count | Students enrolled in the affected courses or programs. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| education.faculty.admin_hours_per_week | Faculty hours per week on course administration. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| education.faculty.count | Faculty using AI course-operations tools. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| education.tutoring.cost_per_student | Cost of tutoring services per enrolled student in the period. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Energy
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| energy.assets.deferred_capex | Asset replacement spend deferred by extending asset life. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| energy.assets.unplanned_outages_per_year | Unplanned critical-asset outage events per year. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| energy.grid.reserve_capacity_mw | Reserve generation capacity held, in megawatts. | count | MW | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| energy.load_forecasting.mape | Mean absolute percentage error of the load forecast. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| energy.rate_cases.count | Rate cases and major regulatory filings prepared in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| energy.rate_cases.external_counsel_hours | Outside counsel hours billed for a rate case or major regulatory filing. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| energy.rate_cases.prep_hours | Internal staff hours to prepare a rate case or major regulatory filing. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| energy.reliability.saidi_minutes | System Average Interruption Duration Index, in outage minutes per customer per year. | duration | minutes | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| energy.storms.call_volume_index | Inbound call volume during a typical major storm event. | count | index | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| energy.storms.events_per_year | Major storm or high-call-volume outage events per year. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| energy.storms.notification_hours_per_event | Staff hours spent communicating outage status to customers during one major storm event. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## OpenAI
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| openai.usage.cost_per_million_output_tokens | OpenAI's spend for the month over the output tokens it generated, per million. Written to ai.cost.per_million_output_tokens instead when this connection is the primary source for AI usage. | currency | USD | OpenAI |
| openai.usage.cost_per_request | OpenAI's spend for the month over the requests it served. Written to ai.cost.per_request instead when this connection is the primary source for AI usage. | currency | USD | OpenAI |
| openai.usage.input_tokens | OpenAI's ai input tokens for the month. Written to ai.usage.input_tokens instead when this connection is the primary source. | count | tokens | OpenAI |
| openai.usage.model_input_tokens | Input tokens sent to one OpenAI model in the month; the model is in the observation's dimensions. | count | tokens | OpenAI |
| openai.usage.model_output_tokens | Output tokens generated by one OpenAI model in the month; the model is in the observation's dimensions. | count | tokens | OpenAI |
| openai.usage.model_request_count | API requests to one OpenAI model in the month; the model is in the observation's dimensions. | count | requests | OpenAI |
| openai.usage.model_total_tokens | Input plus output tokens for one OpenAI model in the month; the model is in the observation's dimensions. | count | tokens | OpenAI |
| openai.usage.output_tokens | OpenAI's ai output tokens for the month. Written to ai.usage.output_tokens instead when this connection is the primary source. | count | tokens | OpenAI |
| openai.usage.request_count | OpenAI's ai api requests for the month. Written to ai.usage.request_count instead when this connection is the primary source. | count | requests | OpenAI |
| openai.usage.spend | OpenAI's usage spend for the month. | currency | USD | OpenAI |
| openai.usage.total_tokens | OpenAI's ai total tokens for the month. Written to ai.usage.total_tokens instead when this connection is the primary source. | count | tokens | OpenAI |

## Logistics
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| logistics.customer_service.wismo_contacts_per_month | Where-is-my-order inbound contacts per month. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| logistics.deliveries.on_time_rate | Percentage of deliveries completed within the promised window. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| logistics.drivers.count | Last-mile drivers in the measured operation. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| logistics.drivers.operating_hours | Driver operating hours in the period. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| logistics.drivers.stops_per_hour | Completed delivery stops per driver per labor hour. | count | stops | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| logistics.fleet.annual_insurance_premium | Annual commercial auto and cargo insurance premium across the fleet. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| logistics.fleet.maintenance_hours_per_month | Technician hours per month on scheduled and reactive fleet maintenance. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| logistics.fleet.miles | Total fleet miles in the period. | count | miles | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| logistics.fleet.roadside_events_per_year | Unplanned roadside breakdown events per year. | count | events | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| logistics.safety.preventable_accidents_per_million_miles | Preventable accident frequency per million miles driven. | count | accidents | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Media
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| media.audience.avg_active_users | Average monthly active users on the service. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| media.audience.monthly_watch_hours_per_user | Average monthly watch hours per active user. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| media.localization.cost_per_episode | Average cost to localize one episode (dubbing, subtitling and QC). | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| media.localization.episodes_localized | Episodes localized into additional languages in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| media.post_production.days_per_episode | Days from picture lock to delivery per episode. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| media.post_production.episode_count | Episodes entering post-production in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| media.rights.admin_hours_per_week | Staff hours per week on rights tracking, metadata correction and catalog reconciliation. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| media.royalties.dispute_rate | Share of royalty statements requiring dispute or correction. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| media.royalties.statement_count | Royalty statements issued in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## AI
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| ai.cost.per_million_output_tokens | All-in AI spend per million output tokens: everything the provider billed in the period (input, cache and output charges) divided by the output tokens it generated. The unit of AI Spend Optimization for a provider that reports tokens but no request count, such as Anthropic. | currency | USD | Anthropic, OpenAI |
| ai.cost.per_request | All-in AI spend per API request: everything the provider billed in the period divided by the requests made to it. The unit of AI Spend Optimization for a provider that reports request counts, such as OpenAI or Gemini. | currency | USD | OpenAI |
| ai.cost.spend | Total spend on the primary AI provider in the period. | currency | USD | Anthropic, GitHub, OpenAI |
| ai.outputs.human_review_rate | Percentage of AI outputs routed to a human reviewer before being acted on. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| ai.usage.input_tokens | Total prompt/input tokens consumed across the primary AI provider in the period. | count | tokens | Anthropic, Google Gemini, OpenAI |
| ai.usage.output_tokens | Total completion/output tokens generated by the primary AI provider in the period. | count | tokens | Anthropic, Google Gemini, OpenAI |
| ai.usage.request_count | Number of API requests made to the primary AI provider in the period. OpenAI and Gemini report it; Anthropic reports tokens but no request count. | count | requests | Google Gemini, OpenAI |
| ai.usage.total_tokens | Total tokens (input + output) used through the primary AI provider in the period. | count | tokens | Anthropic, Google Gemini, OpenAI |

## Google Gemini
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| gemini.usage.input_tokens | Google Gemini's ai input tokens for the month. Written to ai.usage.input_tokens instead when this connection is the primary source. | count | tokens | Google Gemini |
| gemini.usage.model_input_tokens | Input tokens sent to one Gemini model in the month; the model is in the observation's dimensions. | count | tokens | Google Gemini |
| gemini.usage.model_output_tokens | Output tokens generated by one Gemini model in the month; the model is in the observation's dimensions. | count | tokens | Google Gemini |
| gemini.usage.model_request_count | API requests to one Gemini model in the month; the model is in the observation's dimensions. | count | requests | Google Gemini |
| gemini.usage.model_total_tokens | Input plus output tokens for one Gemini model in the month; the model is in the observation's dimensions. | count | tokens | Google Gemini |
| gemini.usage.output_tokens | Google Gemini's ai output tokens for the month. Written to ai.usage.output_tokens instead when this connection is the primary source. | count | tokens | Google Gemini |
| gemini.usage.request_count | Google Gemini's ai api requests for the month. Written to ai.usage.request_count instead when this connection is the primary source. | count | requests | Google Gemini |
| gemini.usage.total_tokens | Google Gemini's ai total tokens for the month. Written to ai.usage.total_tokens instead when this connection is the primary source. | count | tokens | Google Gemini |

## NetSuite
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| netsuite.financials.expenses | NetSuite's expenses for the month. Written to finance.pnl.expenses instead when this connection is the primary source. | currency | USD | NetSuite |
| netsuite.financials.net_income | NetSuite's net income for the month. Written to finance.pnl.net_income instead when this connection is the primary source. | currency | USD | NetSuite |
| netsuite.financials.revenue | NetSuite's revenue for the month. Written to finance.pnl.revenue instead when this connection is the primary source. | currency | USD | NetSuite |
| netsuite.invoices.count | NetSuite's invoices created for the month. Written to finance.invoices.count instead when this connection is the primary source. | count | invoices | NetSuite |
| netsuite.invoices.paid_count | NetSuite's invoices paid for the month. Written to finance.invoices.paid_count instead when this connection is the primary source. | count | invoices | NetSuite |
| netsuite.invoices.volume | NetSuite's invoice volume for the month. Written to finance.invoices.volume instead when this connection is the primary source. | currency | USD | NetSuite |
| netsuite.vendor_bills.count | NetSuite's bills received for the month. Written to finance.bills.count instead when this connection is the primary source. | count | bills | NetSuite |
| netsuite.vendor_bills.volume | NetSuite's bill volume for the month. Written to finance.bills.volume instead when this connection is the primary source. | currency | USD | NetSuite |

## Pipedrive
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| pipedrive.deals.avg_sales_cycle_days | Pipedrive's avg sales cycle for the month. Written to crm.deals.avg_sales_cycle_days instead when this connection is the primary source. | duration | days | Pipedrive |
| pipedrive.deals.avg_value | Pipedrive's average won deal size for the month. Written to crm.deals.avg_value instead when this connection is the primary source. | currency | USD | Pipedrive |
| pipedrive.deals.lost_count | Pipedrive's lost deals for the month. Written to crm.deals.lost_count instead when this connection is the primary source. | count | deals | Pipedrive |
| pipedrive.deals.open_count | Deals open in Pipedrive at sync time, a snapshot rather than a period total, written once per month and rewritten on every sync. | count | — | Pipedrive |
| pipedrive.deals.open_value | Value of the deals open in Pipedrive at sync time, a snapshot rather than a period total, written once per month and rewritten on every sync. | currency | USD | Pipedrive |
| pipedrive.deals.win_rate | Pipedrive's deal win rate for the month. Written to crm.deals.win_rate instead when this connection is the primary source. | percentage | % | Pipedrive |
| pipedrive.deals.won_count | Pipedrive's won deals for the month. Written to crm.deals.won_count instead when this connection is the primary source. | count | deals | Pipedrive |
| pipedrive.deals.won_value | Pipedrive's won deal value for the month. Written to crm.deals.won_value instead when this connection is the primary source. | currency | USD | Pipedrive |

## QuickBooks
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| quickbooks.bills.count | QuickBooks's bills received for the month. Written to finance.bills.count instead when this connection is the primary source. | count | bills | QuickBooks |
| quickbooks.bills.volume | QuickBooks's bill volume for the month. Written to finance.bills.volume instead when this connection is the primary source. | currency | USD | QuickBooks |
| quickbooks.financials.expenses | QuickBooks's expenses for the month. Written to finance.pnl.expenses instead when this connection is the primary source. | currency | USD | QuickBooks |
| quickbooks.financials.net_income | QuickBooks's net income for the month. Written to finance.pnl.net_income instead when this connection is the primary source. | currency | USD | QuickBooks |
| quickbooks.financials.revenue | QuickBooks's revenue for the month. Written to finance.pnl.revenue instead when this connection is the primary source. | currency | USD | QuickBooks |
| quickbooks.invoices.count | QuickBooks's invoices created for the month. Written to finance.invoices.count instead when this connection is the primary source. | count | invoices | QuickBooks |
| quickbooks.invoices.paid_count | QuickBooks's invoices paid for the month. Written to finance.invoices.paid_count instead when this connection is the primary source. | count | invoices | QuickBooks |
| quickbooks.invoices.volume | QuickBooks's invoice volume for the month. Written to finance.invoices.volume instead when this connection is the primary source. | currency | USD | QuickBooks |

## Xero
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| xero.bills.count | Xero's bills received for the month. Written to finance.bills.count instead when this connection is the primary source. | count | bills | Xero |
| xero.bills.volume | Xero's bill volume for the month. Written to finance.bills.volume instead when this connection is the primary source. | currency | USD | Xero |
| xero.financials.expenses | Xero's expenses for the month. Written to finance.pnl.expenses instead when this connection is the primary source. | currency | USD | Xero |
| xero.financials.net_income | Xero's net income for the month. Written to finance.pnl.net_income instead when this connection is the primary source. | currency | USD | Xero |
| xero.financials.revenue | Xero's revenue for the month. Written to finance.pnl.revenue instead when this connection is the primary source. | currency | USD | Xero |
| xero.invoices.count | Xero's invoices created for the month. Written to finance.invoices.count instead when this connection is the primary source. | count | invoices | Xero |
| xero.invoices.paid_count | Xero's invoices paid for the month. Written to finance.invoices.paid_count instead when this connection is the primary source. | count | invoices | Xero |
| xero.invoices.volume | Xero's invoice volume for the month. Written to finance.invoices.volume instead when this connection is the primary source. | currency | USD | Xero |

## Billing
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| billing.charges.count | Charges in the period that kept revenue, in the currency the account settles in. | count | charges | Stripe |
| billing.charges.volume | What the period's charges kept, captured less refunded, tax included, in the currency the account settles in. | currency | USD | Stripe |
| billing.subscriptions.active_count | Subscriptions active at the end of the period. | count | subscriptions | Stripe |
| billing.subscriptions.churn_rate | Subscriptions canceled in the period as a percentage of those active at its start. Absent for a period with nothing active at the start. | percentage | % | Stripe |
| billing.subscriptions.churned_count | Subscriptions canceled in the period. | count | subscriptions | Stripe |
| billing.subscriptions.mrr | Monthly recurring revenue from subscriptions active at the end of the period. | currency | USD | Stripe |
| billing.subscriptions.new_count | Subscriptions created in the period. | count | subscriptions | Stripe |

## Engineering
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| engineering.coding_assistant.acceptance_rate | Accepted suggestions as a share of the suggestions offered in the period. | percentage | % | Anthropic, Claude Enterprise, GitHub |
| engineering.coding_assistant.acceptances | Suggestions developers accepted from an AI coding assistant in the period. | count | acceptances | Anthropic, Claude Enterprise, GitHub |
| engineering.coding_assistant.active_users | Developers using an AI coding assistant on an average day in the period. Summed across assistants when read combined. | average | users | Anthropic, Claude Enterprise, GitHub |
| engineering.coding_assistant.lines_accepted | Lines of code developers accepted from an AI coding assistant in the period. | count | lines | Anthropic, Claude Enterprise, GitHub, OpenAI Codex |
| engineering.coding_assistant.suggestions | Code suggestions an AI coding assistant offered developers in the period. | count | suggestions | Anthropic, Claude Enterprise, GitHub |
| engineering.pull_requests.cycle_time_avg | Average hours from a pull request being opened to being merged, over the pull requests merged in the period. | duration | hours | GitHub |
| engineering.pull_requests.merged_count | Pull requests merged in the period. | count | pull requests | GitHub |

## Government
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| government.cases.decision_days | Average days from case intake to eligibility decision. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| government.cases.processed_count | Benefit applications and cases processed in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| government.cases.staff_hours_per_case | Average caseworker hours of hands-on work per case decided — not the days it waits for a decision. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| government.constituent_services.calls_per_month | Inbound constituent contacts per month. | count | calls | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| government.permits.decision_days | Average days from permit intake to decision. | duration | days | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| government.permits.processed_count | Permit applications processed in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| government.permits.staff_hours_per_permit | Average staff hours of hands-on work per permit decided — not the days it waits for a decision. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Stripe
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| stripe.charges.count | Stripe's charges for the month that kept revenue, in the currency the account settles in. | count | — | Stripe |
| stripe.charges.volume | What Stripe's charges kept for the month, captured less refunded, tax included, in the currency the account settles in. Charges in other currencies aren't counted. | currency | USD | Stripe |
| stripe.subscriptions.active_count | Stripe's active subscriptions for the month. Written to billing.subscriptions.active_count instead when this connection is the primary source. | count | subscriptions | Stripe |
| stripe.subscriptions.churn_rate | Stripe's subscription churn rate for the month. Written to billing.subscriptions.churn_rate instead when this connection is the primary source. | percentage | % | Stripe |
| stripe.subscriptions.churned_count | Stripe's churned subscriptions for the month. Written to billing.subscriptions.churned_count instead when this connection is the primary source. | count | subscriptions | Stripe |
| stripe.subscriptions.mrr | Stripe's monthly recurring revenue for the month. Written to billing.subscriptions.mrr instead when this connection is the primary source. | currency | USD | Stripe |
| stripe.subscriptions.new_count | Stripe's new subscriptions for the month. Written to billing.subscriptions.new_count instead when this connection is the primary source. | count | subscriptions | Stripe |

## Telecom
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| telecom.customer_care.calls_per_month | Inbound customer care calls per month. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| telecom.customer_care.cost_per_subscriber | Customer care cost per subscriber per period. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| telecom.field_service.truck_rolls_per_month | Field dispatch events per month. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| telecom.network.incident_count | Network incidents in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| telecom.network.mttr_minutes | Mean minutes to recover from a network incident. | duration | minutes | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| telecom.retention.cost_per_retained_subscriber | Average cost of retention offers per subscriber retained. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| telecom.retention.retained_subscribers | Subscribers retained through save offers in the period. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Claude Enterprise
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| claude_enterprise.claude_code.acceptance_rate | Accepted tool actions as a share of those proposed across the Claude Enterprise organization for the month. Read as engineering.coding_assistant.acceptance_rate when Claude Enterprise is the primary coding-assistant source. | percentage | % | Claude Enterprise |
| claude_enterprise.claude_code.acceptances | Edits and writes developers accepted in Claude Code across the Claude Enterprise organization for the month — one accepted tool action each, the same unit as Anthropic's Claude Code report. Read as engineering.coding_assistant.acceptances when Claude Enterprise is the primary coding-assistant source. | count | acceptances | Claude Enterprise |
| claude_enterprise.claude_code.active_users_avg | Members who used Claude Code on an average day in the month — members active only in other Claude products are not counted. Read as engineering.coding_assistant.active_users when Claude Enterprise is the primary coding-assistant source. | average | users | Claude Enterprise |
| claude_enterprise.claude_code.lines_accepted | Lines of code Claude Code added across the Claude Enterprise organization in the month. Read as engineering.coding_assistant.lines_accepted when Claude Enterprise is the primary coding-assistant source. | count | lines | Claude Enterprise |
| claude_enterprise.claude_code.proposals | Tool actions Claude Code proposed across the Claude Enterprise organization in the month, accepted and rejected together. Read as engineering.coding_assistant.suggestions when Claude Enterprise is the primary coding-assistant source. | count | suggestions | Claude Enterprise |

## Customer success
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| customer_success.accounts.csm_count | Customer success managers covering the accounts. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| customer_success.accounts.per_csm | Customer accounts managed per customer success manager. | count | — | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| customer_success.renewals.arr_up_for_renewal | Annual recurring revenue from accounts up for renewal in the period. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| customer_success.renewals.rate | Percentage of customers up for renewal who renewed. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| customer_success.revenue.net_retention_rate | Revenue retained from existing customers including expansion, as a percentage of the starting base. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Intercom
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| intercom.conversations.avg_first_response_hours | Intercom's avg ticket first response time for the month. Written to support.tickets.avg_first_response_hours instead when this connection is the primary source. | duration | hours | Intercom |
| intercom.conversations.avg_resolution_days | Intercom's average time from a conversation opening to closing for the month, in days (Intercom reports hours; the computer converts). Read as support.tickets.avg_resolution_days when this connection is the primary source. | duration | days | Intercom |
| intercom.conversations.closed_count | Intercom's support tickets closed for the month. Written to support.tickets.closed_count instead when this connection is the primary source. | count | tickets | Intercom |
| intercom.conversations.csat_score | Intercom's average conversation rating for the month on the 0–1 scale the support keys use (Intercom rates 1–5; the computer converts). Read as support.tickets.csat_score when this connection is the primary source. | score | 0–1 | Intercom |
| intercom.conversations.volume | Intercom's support tickets opened for the month. Written to support.tickets.volume instead when this connection is the primary source. | count | tickets | Intercom |

## Snowflake
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| snowflake.compute.credits_used | Snowflake warehouse credits consumed in the month. | count | credits | Snowflake |
| snowflake.cost.service_spend | The month's Snowflake bill split by usage type — compute, storage, cloud services and the rest — the type in the observation's dimensions. What a cost link's service mappings match. | currency | USD | Snowflake |
| snowflake.cost.total_spend | What Snowflake billed the account for the month, at its own contract rates, excluding usage Snowflake did not charge for. Read as cloud.cost.total_spend when this connection is the primary cloud cost source. | currency | USD | Snowflake |
| snowflake.query.avg_execution_seconds | Mean execution time of Snowflake queries in the month. | duration | seconds | Snowflake |
| snowflake.query.count | Successful Snowflake queries in the month. | count | queries | Snowflake |

## Zendesk
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| zendesk.tickets.avg_first_response_hours | Zendesk's avg ticket first response time for the month. Written to support.tickets.avg_first_response_hours instead when this connection is the primary source. | duration | hours | Zendesk |
| zendesk.tickets.avg_handle_time | Zendesk's avg ticket handle time for the month. Written to support.tickets.avg_handle_time instead when this connection is the primary source. | duration | hours | Zendesk |
| zendesk.tickets.csat_score | Zendesk's ticket csat for the month. Written to support.tickets.csat_score instead when this connection is the primary source. | score | 0–1 | Zendesk |
| zendesk.tickets.solved_count | Zendesk's support tickets closed for the month. Written to support.tickets.closed_count instead when this connection is the primary source. | count | tickets | Zendesk |
| zendesk.tickets.volume | Zendesk's support tickets opened for the month. Written to support.tickets.volume instead when this connection is the primary source. | count | tickets | Zendesk |

## Calendar
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| calendar.meetings.avg_attendees | Average attendees per meeting in the period on the calendars this connection syncs. | average | people | Google Workspace, Microsoft 365 |
| calendar.meetings.avg_duration_mins | Average length in minutes of a meeting on the calendars this connection syncs. | duration | minutes | Google Workspace, Microsoft 365 |
| calendar.meetings.count | Meetings in the period on the calendars this connection syncs — confirmed, timed events with two or more attendees. A meeting on more than one of those calendars counts once. | count | meetings | Google Workspace, Microsoft 365 |
| calendar.meetings.hours | Hours of meetings in the period on the calendars this connection syncs, each meeting counted once however many attend and however many of those calendars it sits on. | duration | hours | Google Workspace, Microsoft 365 |

## Cloud
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| cloud.cost.budget_amount | Cloud budget ceiling for the period, across providers. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| cloud.cost.forecasted_spend | Forecast end-of-period cloud spend based on the current usage trajectory. | currency | USD | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| cloud.cost.total_spend | Total cloud infrastructure spend for the period on the primary provider. | currency | USD | AWS, Azure, Databricks, Google Cloud, Snowflake |
| cloud.resources.idle_share | Percentage of provisioned cloud resources running at low or zero utilization. | percentage | % | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Freshdesk
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| freshdesk.tickets.avg_first_response_hours | Freshdesk's avg ticket first response time for the month. Written to support.tickets.avg_first_response_hours instead when this connection is the primary source. | duration | hours | Freshdesk |
| freshdesk.tickets.avg_handle_time | Freshdesk's avg ticket handle time for the month. Written to support.tickets.avg_handle_time instead when this connection is the primary source. | duration | hours | Freshdesk |
| freshdesk.tickets.resolved_count | Freshdesk's support tickets closed for the month. Written to support.tickets.closed_count instead when this connection is the primary source. | count | tickets | Freshdesk |
| freshdesk.tickets.volume | Freshdesk's support tickets opened for the month. Written to support.tickets.volume instead when this connection is the primary source. | count | tickets | Freshdesk |

## Google Workspace
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| google_workspace.calendar.avg_attendees | Average attendees per meeting on the Google calendars this connection syncs, for the month. Read as calendar.meetings.avg_attendees when this connection is the primary calendar source. | average | people | Google Workspace |
| google_workspace.calendar.avg_meeting_duration_mins | Average meeting length in minutes on the Google calendars this connection syncs, for the month. Read as calendar.meetings.avg_duration_mins when this connection is the primary calendar source. | duration | minutes | Google Workspace |
| google_workspace.calendar.meeting_count | Meetings on the Google calendars this connection syncs, for the month, a meeting on more than one of them counted once. Read as calendar.meetings.count when this connection is the primary calendar source. | count | meetings | Google Workspace |
| google_workspace.calendar.meeting_hours | Hours of meetings on the Google calendars this connection syncs, for the month, each meeting counted once. Read as calendar.meetings.hours when this connection is the primary calendar source. | duration | hours | Google Workspace |

## Make
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| make.scenarios.credits | Make credits one scenario used in the month, which is what Make bills. Standard modules use 1 credit per operation; Make's built-in AI features add credits for tokens. The scenario is in the observation's dimensions. | count | credits | Make |
| make.scenarios.executions | Total runs of one Make scenario in the month; the scenario is in the observation's dimensions. Read as automation.runs.count, every scenario's row added, when this connection is the primary workflow-automation source. | count | runs | Make |
| make.scenarios.failed_executions | Failed runs of one Make scenario in the month; the scenario is in the observation's dimensions. Read as automation.runs.failed_count, every scenario's row added, when this connection is the primary workflow-automation source. | count | runs | Make |
| make.scenarios.successful_executions | Successful runs of one Make scenario in the month; the scenario is in the observation's dimensions. Read as automation.runs.successful_count, every scenario's row added, when this connection is the primary workflow-automation source. | count | runs | Make |

## Microsoft 365
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| microsoft_365.calendar.avg_attendees | Average attendees per meeting on the Outlook calendars this connection syncs, for the month. Read as calendar.meetings.avg_attendees when this connection is the primary calendar source. | average | people | Microsoft 365 |
| microsoft_365.calendar.avg_meeting_duration_mins | Average meeting length in minutes on the Outlook calendars this connection syncs, for the month. Read as calendar.meetings.avg_duration_mins when this connection is the primary calendar source. | duration | minutes | Microsoft 365 |
| microsoft_365.calendar.meeting_count | Meetings on the Outlook calendars this connection syncs, for the month, a meeting on more than one of them counted once. Read as calendar.meetings.count when this connection is the primary calendar source. | count | meetings | Microsoft 365 |
| microsoft_365.calendar.meeting_hours | Hours of meetings on the Outlook calendars this connection syncs, for the month, each meeting counted once. Read as calendar.meetings.hours when this connection is the primary calendar source. | duration | hours | Microsoft 365 |

## Workflow automation
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| automation.runs.count | Runs of automated workflows that finished in the period, successful and failed. | count | runs | Make, Zapier, n8n |
| automation.runs.failed_count | Runs of automated workflows that failed in the period. | count | runs | Make, Zapier, n8n |
| automation.runs.successful_count | Runs of automated workflows that succeeded in the period. | count | runs | Make, Zapier, n8n |

## BigQuery
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| bigquery.jobs.bytes_processed | Bytes processed by BigQuery jobs in the month. | count | bytes | BigQuery |
| bigquery.jobs.count | BigQuery jobs run in the month. | count | jobs | BigQuery |
| bigquery.jobs.slot_ms | Slot milliseconds consumed by BigQuery jobs in the month. | count | slot-ms | BigQuery |

## Google Cloud
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| gcp.billing.budget_amount | The amount of one GCP budget for the month; the budget is in the row's raw payload. | currency | USD | Google Cloud |
| gcp.billing.budget_spend | Spend against one GCP budget for the month; the budget is in the row's raw payload. Feeds cost entries through the initiative's budget mappings. | currency | USD | Google Cloud |
| gcp.billing.total_spend | Google Cloud's billing total spend for the month. | currency | USD | Google Cloud |

## Jira
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| jira.issues.cycle_time_avg | Jira's issues cycle time avg for the month. Read as work.issues.cycle_time_avg when Jira is the primary issue-tracking source. | duration | — | Jira |
| jira.issues.resolved_count | Jira's issues resolved count for the month. Read as work.issues.resolved_count when Jira is the primary issue-tracking source. | count | — | Jira |
| jira.issues.story_points_completed | Jira's issues story points completed for the month. Read as work.issues.story_points_completed when Jira is the primary issue-tracking source. | count | — | Jira |

## n8n
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| n8n.workflows.executions | Production executions of one n8n workflow that started in the month and finished, successful plus failed. Counted as n8n's Insights counts them, except evaluation runs: no manual test runs or sub-workflow runs, and a retry counts as an execution of its own. The workflow is in the observation's dimensions. Read as automation.runs.count, every workflow's row added, when this connection is the primary workflow-automation source. | count | executions | n8n |
| n8n.workflows.failed_executions | Production executions of one n8n workflow in the month that ended in error or crashed, including runs a later retry fixed; the workflow is in the observation's dimensions. Read as automation.runs.failed_count, every workflow's row added, when this connection is the primary workflow-automation source. | count | executions | n8n |
| n8n.workflows.successful_executions | Production executions of one n8n workflow in the month that succeeded, on the first try or a retry; the workflow is in the observation's dimensions. Read as automation.runs.successful_count, every workflow's row added, when this connection is the primary workflow-automation source. | count | executions | n8n |

## OpenAI Codex
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| openai_codex.usage.lines_accepted | Lines of code Codex added that developers kept, for the month. Read as engineering.coding_assistant.lines_accepted when Codex is the primary coding-assistant source. Codex reports no count of accepted suggestions, so it feeds none of the other coding-assistant keys. | count | lines | OpenAI Codex |
| openai_codex.usage.lines_committed | Lines attributed to Codex that reached a commit, for the month — the stronger of the two line counts, but one the other assistants do not report, so it stays a platform key. | count | lines | OpenAI Codex |
| openai_codex.usage.turns | Codex turns in the workspace for the month. Stands in for an active-developer count, which exists only in per-developer rows Roiva deliberately does not request. | count | turns | OpenAI Codex |

## Work
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| work.issues.cycle_time_avg | Average hours from an issue's start to its resolution, over the issues resolved in the period. | duration | hours | Jira |
| work.issues.resolved_count | Issues resolved in the period in the team's issue tracker. | count | issues | Jira |
| work.issues.story_points_completed | Story points on the issues resolved in the period. | count | points | Jira |

## Workforce
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| workforce.outreach.hours_per_week | Staff hours per week spent identifying at-risk people and reaching out to them. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| workforce.tasks.manual_per_week | Discrete manual tasks (data pulls, formatting, distribution) performed each week. | count | tasks | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |
| workforce.time.hours_saved_per_week | Net staff hours recovered per week as a direct result of the initiative. | duration | hours | Recorded by hand, imported, or read from your warehouse (BigQuery, Databricks or Snowflake) |

## Zapier
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| zapier.zaps.failed_runs | Failed Zap runs reported to Roiva's Zapier webhook in the month. Read as automation.runs.failed_count when this connection is the primary workflow-automation source. | count | runs | Zapier |
| zapier.zaps.runs | Total Zap runs reported to Roiva's Zapier webhook in the month. Read as automation.runs.count when this connection is the primary workflow-automation source. | count | runs | Zapier |
| zapier.zaps.successful_runs | Successful Zap runs reported to Roiva's Zapier webhook in the month. Read as automation.runs.successful_count when this connection is the primary workflow-automation source. | count | runs | Zapier |

## AWS
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| aws.cost.service_spend | One AWS service's unblended cost for the month; the service is in the observation's dimensions. Feeds cost entries through the initiative's service mappings. | currency | USD | AWS |
| aws.cost.total_spend | AWS's cost total spend for the month. | currency | USD | AWS |

## Azure
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| azure.cost.service_spend | One Azure service's cost for the month; the service is in the observation's dimensions. Feeds cost entries through the initiative's service mappings. | currency | USD | Azure |
| azure.cost.total_spend | Azure's cost total spend for the month. | currency | USD | Azure |

## Databricks
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| databricks.cost.product_spend | Databricks list-price spend for the month on one product (billing_origin_product: MODEL_SERVING, JOBS, SQL, ...). | currency | USD | Databricks |
| databricks.cost.total_spend | Databricks list-price spend for the month, from system.billing.usage priced at system.billing.list_prices. Read as cloud.cost.total_spend when this connection is the primary cloud cost source. | currency | USD | Databricks |

## Brex
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| brex.card.spend | What the Brex card was charged in the month, in USD. A card is a payment rail rather than a provider billing for its own service, so this is not counted in provider-billed AI spend - a charge to a connected provider is already in that provider's own bill. | currency | USD | Brex |

## Looker
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| looker.looks.field_value | The monthly value of one numeric column of one Look; the Look and the column are in the observation's dimensions. Roiva cannot infer a unit from a Look, so the type is count unless a person overrides the definition. | count | — | Looker |

## Ramp
| Key | What it measures | Type | Unit | Fed by |
| --- | --- | --- | --- | --- |
| ramp.card.spend | What the Ramp card was charged in the month, in USD. A card is a payment rail rather than a provider billing for its own service, so this is not counted in provider-billed AI spend - a charge to a connected provider is already in that provider's own bill. | currency | USD | Ramp |
