Question

How should we calculate time-to-fill, time-to-hire, offer-to-join ratio and cost-per-hire consistently?

Zuna Answer
4 Views

Executive Summary To calculate these metrics consistently, you need two things: (1) a single, agreed definition for each metric (especially what counts as “filled/hired/accepted”), and (2) consistent date logic (when you start/stop the clock, and which roles/candidates are included). Below is a practical measurement standard you can implement across recruiters, hiring managers, and HR ops.

Key Recommendations

  1. Create one “Recruiting Metrics Dictionary” (definitions + inclusion/exclusion rules) and lock it for at least one full quarter.
  2. Use consistent event timestamps:
  • Requisition created (or job posted)
  • Candidate applied / sourced
  • Interview start (optional)
  • Offer extended
  • Offer accepted
  • Joining date (employee start date)
  1. Use the same denominator for cost metrics (per role vs per hire) and choose “Accepted offers” vs “Joined employees” as your reporting base.

Below are clear formulas and the most common, CFO-friendly choices.

A) Time-to-Fill (TTF) Purpose: How long it takes to fill a role with an actual start/confirmed hire.

Recommended definition (most consistent):

  • Start timestamp: Requisition “opened” date (or job posted date—pick one and stick to it)
  • End timestamp: Employee “start date” (joining date) for that role
  • Unit: days per filled position

Formula:

  • Time-to-Fill (TTF) for role i = (Start date of hired employee i) – (Requisition opened date i)
  • Time-to-Fill for a period = Average (or Median) TTF across all roles filled in that period

Inclusion rules (choose one and document):

  • Recommended: Include only roles that are fully filled (to avoid inflating TTF with open roles).
  • If you must report “work in progress,” create a separate metric like “Open role aging” and don’t mix it into TTF.

Aggregation:

  • Average TTF can be skewed by outliers. Consider reporting BOTH:
  • Median TTF (primary)
  • 75th percentile (or Average) (secondary)

B) Time-to-Hire (TTH) Purpose: Measures recruiting cycle speed from candidate-offer process standpoint (often from first candidate movement). There are multiple accepted approaches.

Two standard options—pick one:

Option 1 (Candidate-based, best for funnel performance):

  • Start timestamp: Date of first “qualified” candidate submission (or first shortlisting completion)
  • End timestamp: Offer accepted date (or joining date)
  • Note: This is usually “Time-to-Offer” + “time to acceptance,” depending on your end timestamp.

Option 2 (Role-based, simple for operations):

  • Start timestamp: Job posted date / requisition opened date
  • End timestamp: Offer accepted date (or joining date)
  • This overlaps with TTF if end is joining date—so if you use Option 2, keep a clear distinction:
  • TTH ends at Offer Accepted
  • TTF ends at Joining Date

Recommended for clarity:

  • Time-to-Hire (TTH) = from Requisition opened/job posted to Offer Accepted

Formula:

  • TTH for role i = (Offer accepted date for hired candidate i) – (Requisition opened/job posted date i)
  • Period TTH = Average/Median TTH across roles with accepted offers in that period

Important:

  • Define what you mean by “Offer accepted”:
  • “Offer acceptance recorded by HR system”
  • vs “Candidate confirms via email”

Pick the first for consistency.

C) Offer-to-Join (O2J) Ratio Purpose: Measures offer acceptance and candidate commitment (and signals issues in salary banding, candidate experience, notice period friction, or offer competitiveness).

Recommended definition:

  • Numerator: Number of offers accepted and resulted in a start (joined) within the measurement window
  • Denominator: Number of offers accepted (or offers extended—pick one consistently)

Best practice (ratio should reflect conversion from accepted offer to join):

  • Numerator: Joined candidates whose offer was accepted for the same role cycle
  • Denominator: Total accepted offers

Formula:

  • Offer-to-Join Ratio = (Number of offers accepted that resulted in a join) / (Number of offers accepted)

Example interpretation:

  • 0.85 = 85% of accepted offers become actual joins

Timing approach (to avoid misclassification):

  • If someone accepts today but joins after your reporting month ends, you may report:
  • “Committed O2J (within X days)” (e.g., within 60/90 days)
  • Or maintain a “lag-adjusted” O2J tracked over a rolling window

Choose one approach so the metric doesn’t constantly appear to fall just because people haven’t started yet.

D) Cost-per-Hire (CPH) Purpose: Total recruiting cost efficiency per hire.

You need to decide the “cost buckets” and the “hire unit” (joined employee vs accepted offer).

Recommended:

  1. Define hire unit as Joined employee start date (most CFO-auditable and tied to business value)
  2. Use total recruiting cost for the period
  3. Allocate to hires (not to offers)

Cost buckets to include (common):

  • External recruiter / agency fees
  • Job advertising / sourcing platform fees
  • Background checks, medicals (if standard for all hires)
  • Interview travel (only if you want it in-scope; be consistent)
  • Recruiter labor cost (HR/recruiting team payroll) — optional but recommended for “true cost”
  • Hiring manager time is usually excluded from CPH unless you’re doing a full cost model

Formula:

  • Cost-per-Hire (CPH) = Total Recruiting Spend in period / Number of Hires in period

Where “Hires” = number of employees who joined in that period (not offers accepted unless you’re purposely reporting “cost per accepted offer”)

Consistency rule for multi-role hires:

  • If one candidate is offered multiple positions (rare but possible), count them once based on the final joined role.
  • If you track multiple locations/business units, allocate costs to the correct requisition/BU.

Operational Setup (How to ensure consistency)

  1. Build a metric “start/stop” event map
  • Requisition opened/job posted
  • Candidate qualified/shortlisted (if you use it)
  • Offer extended
  • Offer accepted
  • Start date
  1. Pick one denominator policy for each metric
  • TTF/TTH: roles/hired candidates that reached the “end event” (avoid mixing open roles)
  • O2J: accepted offers
  • CPH: joined hires
  1. Use median + percentiles, not only averages
  • For TTF/TTH, median is more stable for leadership reporting.
  1. Standardize across geographies and hiring types
  • If you have internal mobility, campus hiring, and lateral hiring, either:
  • Create separate metrics by hiring type, or
  • Ensure each hiring type uses the same event logic and is tagged correctly.
  1. Report a small set of diagnostic companion metrics
  • Without this, faster hiring can mask quality issues. Consider also tracking:
  • Offer acceptance rate (offers accepted / offers extended)
  • % withdrawn after offer accepted (early leavers before start)
  • Drop-off reasons (top 3-5)

Immediate Next Steps

  1. Draft your “Recruiting Metrics Dictionary” (1-page) with:
  • Definitions + start/end timestamps
  • Inclusion/exclusion rules
  • How to handle open roles and offer lag
  1. Confirm where your system of record is:
  • ATS for offer/acceptance timestamps
  • HRIS for start dates
  1. Run a 30-day pilot report and validate with your recruiters/hiring managers:
  • Ensure metrics match their lived experience (within reason)
  1. Lock reporting cadence (weekly for ops dashboards; monthly/quarterly for leadership).

Quick Clarifying Questions (only if you want tighter alignment)

  1. Do you want these metrics anchored to “job posted” or “requisition opened” as the start date?
  2. For Time-to-Hire, should the end event be “Offer Accepted” or “Joining Date”?
  3. For Cost-per-Hire, do you want to include recruiting team labor cost or only third-party/external costs?

If you need help implementing these recommendations or would like expert guidance tailored to your organization, the team at Zunavish would be happy to assist.