Metric

What is time to hire, and how do you measure it in Metabase?

Time to hire is an HR and recruiting metric you can track in Metabase once ATS or HRIS data is synced into a database. Time to hire measures how long a candidate takes to move from entering your recruiting process to accepting an offer. It is a candidate or application lifecycle metric, not a requisition lifecycle metric.

TL;DR — Define the event timestamps and denominator once, report counts next to rates, and segment only when sample size and privacy rules support it.

How is time to hire defined?

  • Typical definition: application_created_at to offer_accepted_at.
  • Alternative definition: first candidate contact to offer accepted, if sourcing starts before application.
  • Report median and p90 because hiring duration is right-skewed.
  • Segment by role family, seniority, department, source, recruiter, and location when safe.

What data does it need?

  • Applications with candidate, job, source, recruiter, and application_created_at.
  • Offers with offer_extended_at and offer_accepted_at.
  • Stage history when you want to break time to hire into process steps.
  • Role attributes such as department, location, level, and hiring manager.

SQL pattern

Time to hire in MetabasePostgreSQL
SELECT
  date_trunc('month', offer_accepted_at) AS month,
  COUNT(*) AS accepted_offers,
  percentile_cont(0.5) WITHIN GROUP (
    ORDER BY EXTRACT(EPOCH FROM (offer_accepted_at - application_created_at)) / 86400.0
  ) AS median_time_to_hire_days,
  percentile_cont(0.9) WITHIN GROUP (
    ORDER BY EXTRACT(EPOCH FROM (offer_accepted_at - application_created_at)) / 86400.0
  ) AS p90_time_to_hire_days
FROM modeled_applications
WHERE offer_accepted_at IS NOT NULL
GROUP BY 1
ORDER BY 1;

Pitfalls

Confusing it with time to fill.→ Time to hire starts with the candidate or application. Time to fill starts with the requisition.
Reporting the average only.→ A few long searches skew the mean. Use median and p90.
Ignoring still-open applications.→ Accepted offers are settled outcomes; open cohorts should be shown separately as aging work.

Where this metric applies

Dashboards

Integrations

Metrics

Analytics

FAQ

What is a good time to hire?
It depends heavily on role family, seniority, location, and market. Compare against your own history and roles of similar complexity before setting targets.
Should rejected candidates be included?
No for the standard accepted-offer time-to-hire metric. Use stage aging or time-to-disposition for rejected candidates.