What is offer acceptance rate, and how do you measure it in Metabase?
Offer acceptance rate is an HR and recruiting metric you can track in Metabase once ATS or HRIS data is synced into a database. Offer acceptance rate is the share of extended offers that candidates accept. It shows whether compensation, role fit, process quality, and close strategy are working after a team decides to hire.
What does an offer acceptance rate chart look like in Metabase?
Chart accepted offers over settled offers per month as a line, and read the upward drift as comp bands and close process improving together. A dip like March's often means offers went out under an outdated comp band or into a hot competing market — segment by role family before treating it as a process failure.
How is offer acceptance rate defined?
- Offer acceptance rate = accepted offers / extended offers.
- Use extended offers as the denominator, not all applications or all verbal conversations.
- Separate declined, expired, rescinded, and pending offers.
- Cohort by offer extended date, and caveat recent pending offers.
What data does it need?
- Offers with extended_at, accepted_at, declined_at, status, candidate, job, department, and location.
- Compensation band, level, source, recruiter, and hiring manager where safe and permissioned.
- Decline reason if collected consistently.
- Candidate start date to distinguish accepted offers from starts.
SQL pattern
SELECT
date_trunc('month', offer_extended_at) AS month,
COUNT(*) FILTER (WHERE status IN ('accepted', 'declined', 'expired')) AS settled_offers,
COUNT(*) FILTER (WHERE status = 'accepted') AS accepted_offers,
ROUND(
100.0 * COUNT(*) FILTER (WHERE status = 'accepted')
/ NULLIF(COUNT(*) FILTER (WHERE status IN ('accepted', 'declined', 'expired')), 0),
1
) AS offer_acceptance_rate_pct
FROM modeled_offers
WHERE offer_extended_at >= CURRENT_DATE - INTERVAL '12 months'
GROUP BY 1
ORDER BY 1;