{"id":434,"date":"2026-10-13T23:48:44","date_gmt":"2026-10-13T23:48:44","guid":{"rendered":"https:\/\/fasthire.com\/blog\/?p=434"},"modified":"2026-10-13T23:48:44","modified_gmt":"2026-10-13T23:48:44","slug":"hiring-dashboard-spreadsheet","status":"publish","type":"post","link":"https:\/\/fasthire.com\/blog\/hiring-dashboard-spreadsheet\/","title":{"rendered":"How to build a hiring dashboard in a spreadsheet"},"content":{"rendered":"<p class=\"wp-block-paragraph\">You can build a useful hiring dashboard in a spreadsheet in about two hours. Use one tab for raw candidate data, one tab for definitions, and one tab for summary tables that update with formulas. Keep one row per candidate per role, record the date of each stage, and read the results monthly.<\/p>\n\n<div class=\"wp-block-group has-text-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-495e7ac5 wp-block-group-is-layout-constrained\" style=\"color:#20283A;background-color:#F1EFE8;padding-top:1.25rem;padding-right:1.5rem;padding-bottom:1.25rem;padding-left:1.5rem\"><p class=\"wp-block-paragraph\"><strong>Key takeaways<\/strong><\/p><ul class=\"wp-block-list\"><li>A spreadsheet is enough for a team that hires fewer than about 30 people a year. After that, manual entry becomes the problem.<\/li><li>Use three tabs: Data, Definitions and Dashboard. Never type into the Dashboard tab.<\/li><li>Record dates, not statuses. Dates let you calculate every time metric.<\/li><li>Use drop-down lists for source, stage and decline reason to keep the data clean.<\/li><li>Protect personal data: limit access, avoid sensitive fields and delete on schedule.<\/li><\/ul><\/div>\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"630\" src=\"https:\/\/fasthire.com\/blog\/wp-content\/uploads\/2026\/10\/hiring-dashboard-spreadsheet-diagram.png\" alt=\"x\" class=\"wp-image-433\" srcset=\"https:\/\/fasthire.com\/blog\/wp-content\/uploads\/2026\/10\/hiring-dashboard-spreadsheet-diagram.png 1200w, https:\/\/fasthire.com\/blog\/wp-content\/uploads\/2026\/10\/hiring-dashboard-spreadsheet-diagram-300x158.png 300w, https:\/\/fasthire.com\/blog\/wp-content\/uploads\/2026\/10\/hiring-dashboard-spreadsheet-diagram-1024x538.png 1024w, https:\/\/fasthire.com\/blog\/wp-content\/uploads\/2026\/10\/hiring-dashboard-spreadsheet-diagram-768x403.png 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/figure>\n\n<h2 class=\"wp-block-heading\">When a spreadsheet is the right tool<\/h2>\n\n<p class=\"wp-block-paragraph\">A spreadsheet suits a small team, a new hiring process, or a pilot before you pay for software. It is easy to change, everyone knows how to read it, and it forces you to decide what you want to measure. It works less well when several recruiters edit the same file, when volume reaches hundreds of applicants per role, or when you need an audit trail. At that point, see our guide on <a href=\"https:\/\/fasthire.com\/blog\/choose-recruiting-software\/\">choosing recruiting software<\/a> if it is available, or use the questions in the section on moving on below.<\/p>\n\n<p class=\"wp-block-paragraph\">Treat this dashboard as a way to learn what you need. The metrics themselves are explained in <a href=\"https:\/\/fasthire.com\/blog\/recruitment-metrics-to-track\/\">eight recruitment numbers worth tracking<\/a>. This guide shows how to build them.<\/p>\n\n<h2 class=\"wp-block-heading\">Step 1: Design the Data tab<\/h2>\n\n<p class=\"wp-block-paragraph\">One row equals one candidate applying to one role. If the same person applies to two roles, make two rows. Use these columns.<\/p>\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Column<\/th><th>Type<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Candidate ID<\/td><td>Number<\/td><td>Use a code such as C-0001. Do not use names in reports.<\/td><\/tr><tr><td>Role ID<\/td><td>Text<\/td><td>A short code, such as CS-2026-01<\/td><\/tr><tr><td>Source<\/td><td>Drop-down<\/td><td>Career page, job board, referral, agency, outreach, event, other<\/td><\/tr><tr><td>Date applied<\/td><td>Date<\/td><td>The day the application arrived<\/td><\/tr><tr><td>Date screened<\/td><td>Date<\/td><td>The day the screening decision was recorded<\/td><\/tr><tr><td>Date first call<\/td><td>Date<\/td><td>Leave blank if no call<\/td><\/tr><tr><td>Date interview<\/td><td>Date<\/td><td>The date of the first interview<\/td><\/tr><tr><td>Date decision<\/td><td>Date<\/td><td>The day the final decision was made<\/td><\/tr><tr><td>Date offer<\/td><td>Date<\/td><td>Leave blank if no offer<\/td><\/tr><tr><td>Date accepted<\/td><td>Date<\/td><td>Leave blank if declined or no offer<\/td><\/tr><tr><td>Outcome<\/td><td>Drop-down<\/td><td>Declined at screening, declined after call, declined after interview, offer declined, hired, withdrew<\/td><\/tr><tr><td>Decline reason code<\/td><td>Drop-down<\/td><td>Missing a must-have, withdrew, accepted other offer, pay, other<\/td><\/tr><tr><td>Hiring manager response days<\/td><td>Number<\/td><td>Days between request and reply for this candidate<\/td><\/tr><tr><td>Outcome sent date<\/td><td>Date<\/td><td>The day the candidate was told<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<p class=\"wp-block-paragraph\">Keep names, emails and CVs in your applicant system or a separate protected folder. The dashboard needs dates and codes, not personal details. This also lowers your data protection risk. The UK Information Commissioner&#8217;s Office gives guidance on <a href=\"https:\/\/ico.org.uk\/for-organisations\/uk-gdpr-guidance-and-resources\/employment\/recruitment-and-selection\/\" target=\"_blank\" rel=\"noopener\">recruitment and selection<\/a>, and the US Equal Employment Opportunity Commission explains record-keeping duties on its page on <a href=\"https:\/\/www.eeoc.gov\/employers\/recordkeeping-requirements\" target=\"_blank\" rel=\"noopener\">recordkeeping requirements<\/a>.<\/p>\n\n<h2 class=\"wp-block-heading\">Step 2: Add data validation<\/h2>\n\n<p class=\"wp-block-paragraph\">Most spreadsheet errors are typing errors. Use data validation to restrict what can be entered.<\/p>\n\n<ol class=\"wp-block-list\"><li><strong>Drop-down lists<\/strong> for Source, Outcome and Decline reason. In Google Sheets, use Data, then Data validation, then Drop-down. In Excel, use Data, then Data Validation, then List.<\/li><li><strong>Date rules<\/strong> for every date column, so text such as &#8220;next Tuesday&#8221; is refused.<\/li><li><strong>A check column<\/strong> that flags rows where a later date is earlier than a previous date. Example formula: =IF(AND(H2&lt;&gt;&#8221;&#8221;,H2&lt;D2),&#8221;Check&#8221;,&#8221;&#8221;).<\/li><li><strong>Frozen header row<\/strong> and a filter, so people can sort without breaking the table.<\/li><li><strong>A named range or table<\/strong> for the full data area, so formulas extend as you add rows.<\/li><\/ol>\n\n<h2 class=\"wp-block-heading\">Step 3: Write the Definitions tab<\/h2>\n\n<p class=\"wp-block-paragraph\">This tab has three columns: Metric, Start event and end event, and Rule for missing data. Write them in plain language. Examples are below.<\/p>\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Metric<\/th><th>Definition<\/th><th>Missing data rule<\/th><\/tr><\/thead><tbody><tr><td>Time to hire<\/td><td>Date accepted minus Date applied, in calendar days<\/td><td>Exclude rows with no acceptance<\/td><\/tr><tr><td>Time to first response<\/td><td>Outcome sent date or first call date (whichever is earlier) minus Date applied<\/td><td>Exclude rows with neither<\/td><\/tr><tr><td>Stage conversion<\/td><td>Count in the next stage divided by count in the current stage, for one role<\/td><td>Show &#8220;n\/a&#8221; if the current stage has fewer than 5 people<\/td><\/tr><tr><td>Offer acceptance rate<\/td><td>Count with Date accepted divided by count with Date offer<\/td><td>Show &#8220;n\/a&#8221; if fewer than 5 offers<\/td><\/tr><tr><td>Manager response<\/td><td>Average of Hiring manager response days, by manager<\/td><td>Exclude blanks<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<h2 class=\"wp-block-heading\">Step 4: Build the Dashboard tab<\/h2>\n\n<p class=\"wp-block-paragraph\">The Dashboard tab contains only formulas. Never type numbers into it. Below are formulas that work in both Google Sheets and Excel. Replace the ranges with your own. Row 2 onward holds data, and columns follow the table above.<\/p>\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Number<\/th><th>Example formula<\/th><th>Plain meaning<\/th><\/tr><\/thead><tbody><tr><td>Applicants for a role<\/td><td>=COUNTIFS(Data!B:B,A2)<\/td><td>Count rows with this Role ID<\/td><\/tr><tr><td>Hired for a role<\/td><td>=COUNTIFS(Data!B:B,A2,Data!K:K,&#8221;Hired&#8221;)<\/td><td>Count rows with the outcome &#8220;Hired&#8221;<\/td><\/tr><tr><td>Offers made<\/td><td>=COUNTIFS(Data!B:B,A2,Data!I:I,&#8221;&lt;&gt;&#8221;)<\/td><td>Count rows with an offer date<\/td><\/tr><tr><td>Offer acceptance<\/td><td>=IFERROR(COUNTIFS(Data!B:B,A2,Data!J:J,&#8221;&lt;&gt;&#8221;)\/COUNTIFS(Data!B:B,A2,Data!I:I,&#8221;&lt;&gt;&#8221;),&#8221;n\/a&#8221;)<\/td><td>Accepted divided by offers<\/td><\/tr><tr><td>Median time to hire<\/td><td>Use a helper column on Data: =IF(J2&lt;&gt;&#8221;&#8221;,J2-D2,&#8221;&#8221;) then =MEDIAN(helper range)<\/td><td>Middle value, not distorted by one slow hire<\/td><\/tr><tr><td>Applicants by source<\/td><td>=COUNTIFS(Data!C:C,&#8221;Referral&#8221;)<\/td><td>Count rows with that source<\/td><\/tr><tr><td>Stage conversion, screening to call<\/td><td>=IFERROR(COUNTIFS(Data!B:B,A2,Data!F:F,&#8221;&lt;&gt;&#8221;)\/COUNTIFS(Data!B:B,A2,Data!E:E,&#8221;&lt;&gt;&#8221;),&#8221;n\/a&#8221;)<\/td><td>Candidates with a call date divided by candidates with a screening date<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<p class=\"wp-block-paragraph\">Add one pivot table for each of these views: applicants and hires by source, outcomes by role, and average manager response days by manager. Pivot tables take two minutes to build and refresh with one click.<\/p>\n\n<h3 class=\"wp-block-heading\">Charts that help<\/h3>\n\n<ul class=\"wp-block-list\"><li><strong>A funnel table, not a fancy chart.<\/strong> List the stages in order with counts and percentages. It is easier to read than most funnel charts.<\/li><li><strong>A simple bar chart of median days between stages.<\/strong> The tallest bar shows where candidates wait.<\/li><li><strong>A line of applicants per week for each open role.<\/strong> This shows when an advert slows down.<\/li><li><strong>A table of open roles with days open and next action.<\/strong> Add a column with the owner.<\/li><\/ul>\n\n<h2 class=\"wp-block-heading\">Step 5: Set a routine<\/h2>\n\n<p class=\"wp-block-paragraph\">A dashboard that nobody updates is worse than none, because it looks accurate. Agree on three habits.<\/p>\n\n<ol class=\"wp-block-list\"><li><strong>Update within one working day.<\/strong> Whoever changes a candidate&#8217;s stage also enters the date. It takes ten seconds at the moment and an hour a week later.<\/li><li><strong>Check the Check column every Friday.<\/strong> Fix errors before they reach the Dashboard.<\/li><li><strong>Review once a month.<\/strong> Use the agenda in the metrics guide. Write actions in a text box under the numbers.<\/li><\/ol>\n\n<h2 class=\"wp-block-heading\">A fictional example<\/h2>\n\n<p class=\"wp-block-paragraph\">This example is invented to show how to read the dashboard. A small team has three open roles in one quarter: a customer support agent, an office coordinator and a bookkeeper. After two months the Dashboard shows the following.<\/p>\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Role<\/th><th>Applicants<\/th><th>Reached interview<\/th><th>Offers<\/th><th>Accepted<\/th><th>Median days, application to decision<\/th><\/tr><\/thead><tbody><tr><td>Customer support agent<\/td><td>96<\/td><td>8<\/td><td>2<\/td><td>2<\/td><td>19<\/td><\/tr><tr><td>Office coordinator<\/td><td>41<\/td><td>6<\/td><td>1<\/td><td>0<\/td><td>24<\/td><\/tr><tr><td>Bookkeeper<\/td><td>14<\/td><td>3<\/td><td>1<\/td><td>1<\/td><td>12<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<p class=\"wp-block-paragraph\">What can the team learn? The office coordinator role has one offer that was declined. The decline reason column says &#8220;pay&#8221;. That is one case, not a pattern, but it is enough to check the pay range against the advert. The customer support role has a high number of applicants and 8 interviews, so the team could ask whether the screening criteria are clear enough. The bookkeeper role has few applicants, so the team could check the advert and the channels. The numbers do not give the answer. They tell you where to look.<\/p>\n\n<h2 class=\"wp-block-heading\">Privacy and fairness rules for the spreadsheet<\/h2>\n\n<ul class=\"wp-block-list\"><li><strong>Limit access.<\/strong> Share the file only with people who need it, and remove access when people leave the team.<\/li><li><strong>Avoid sensitive fields.<\/strong> Do not add columns for age, ethnicity, health or similar details to the same sheet. If you need monitoring data for fairness checks, collect it where the law allows, keep it separate, and follow the guidance of your country.<\/li><li><strong>Use codes.<\/strong> Candidate IDs let you discuss patterns without exposing names in meetings.<\/li><li><strong>Delete on schedule.<\/strong> Decide how long you keep rows, and delete or anonymise them when the period ends. See your country&#8217;s rules. In the EU and UK, data protection law requires you to keep personal data only as long as needed. The European Data Protection Board publishes <a href=\"https:\/\/www.edpb.europa.eu\/our-work-tools\/general-guidance\/guidelines-recommendations-best-practices_en\" target=\"_blank\" rel=\"noopener\">guidance on the GDPR<\/a>.<\/li><li><strong>Do not use the sheet to decide about people.<\/strong> It shows process patterns. A person must make each hiring decision, using evidence from the CV and interview.<\/li><\/ul>\n\n<h2 class=\"wp-block-heading\">When to move beyond the spreadsheet<\/h2>\n\n<p class=\"wp-block-paragraph\">Signs that you have outgrown it: more than two people need to edit at once and overwrite each other; you hire more than about 30 people a year; you need to send messages from the same place; you must show who changed what and when; or you spend more than an hour a week fixing data. At that point, write down your needs first. A list of the questions to ask vendors is in our recruiting software guide when it is published. Your Data tab columns become your list of required fields.<\/p>\n\n<p class=\"wp-block-paragraph\">FastHire is being built for the screening step in that process. It shows each job requirement next to the exact CV passage that supports it, so reviewers can check the evidence quickly. FastHire is coming soon. It does not rank, score or reject candidates. People make every decision.<\/p>\n\n<h2 class=\"wp-block-heading\">Common spreadsheet problems and fixes<\/h2>\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Problem<\/th><th>Cause<\/th><th>Fix<\/th><\/tr><\/thead><tbody><tr><td>Numbers change when someone sorts the data<\/td><td>Formulas use fixed row numbers<\/td><td>Use whole-column references or a named table<\/td><\/tr><tr><td>The same source appears under three names<\/td><td>Free-text entry<\/td><td>Replace with a drop-down list and clean the old rows once<\/td><\/tr><tr><td>Median time looks too low<\/td><td>Rows without an acceptance date are counted as zero<\/td><td>Use helper columns that return blank text when the date is missing<\/td><\/tr><tr><td>Two people overwrite each other&#8217;s changes<\/td><td>One shared file, no rules<\/td><td>Agree one owner per role, or use version history and review it weekly<\/td><\/tr><tr><td>Nobody trusts the dashboard<\/td><td>Errors were found once and never explained<\/td><td>Keep a short change log on the Definitions tab with date and reason for each fix<\/td><\/tr><\/tbody><\/table><\/figure>\n\n<h2 class=\"wp-block-heading\">A 30-minute handover note<\/h2>\n\n<p class=\"wp-block-paragraph\">If the person who built the dashboard leaves, the file must still work. Write a one-page note and store it on the Definitions tab. The note should say who owns the file, where the master copy is, which columns people may edit, how to add a new role, how often the data is checked and who to ask for help. Add three screenshots: the Data tab, the Dashboard tab and the drop-down list settings. Test the note by asking a colleague to add a new role and a new candidate using only the note. Every place where they hesitate is a place to improve it.<\/p>\n\n<p class=\"wp-block-paragraph\">Finally, run a yearly clean-up. Archive the previous year into a separate protected file, remove personal data you no longer need, and start a new Data tab with the same columns. This keeps the sheet fast and respects your retention rules.<\/p>\n\n<h2 class=\"wp-block-heading\">Frequently asked questions<\/h2>\n\n<h3 class=\"wp-block-heading\">Should I use Excel or Google Sheets?<\/h3><p class=\"wp-block-paragraph\">Either works. Google Sheets is easier for several people editing at once. Excel is better for large files and offline work. Choose the one your organisation already supports and secures.<\/p>\n\n<h3 class=\"wp-block-heading\">How many rows can a spreadsheet handle?<\/h3><p class=\"wp-block-paragraph\">Both tools can handle tens of thousands of rows, but they become slow and hard to check well before that. If you pass a few thousand rows, consider a database or an applicant system.<\/p>\n\n<h3 class=\"wp-block-heading\">Should I include candidate names in the sheet?<\/h3><p class=\"wp-block-paragraph\">Not in the dashboard. Use IDs and keep the link between IDs and names in a protected place. This limits the harm if the sheet is shared by mistake.<\/p>\n\n<h3 class=\"wp-block-heading\">How do I count time when a role is paused?<\/h3><p class=\"wp-block-paragraph\">Write a rule in the Definitions tab, for example &#8220;the clock pauses while the role is paused&#8221; and add pause start and end columns. Whatever you choose, apply it to all roles.<\/p>\n\n<h3 class=\"wp-block-heading\">Can I build this without formulas?<\/h3><p class=\"wp-block-paragraph\">Yes. Pivot tables can produce most of the counts. Formulas are needed only for medians and some conversion rates.<\/p>\n\n<h2 class=\"wp-block-heading\">Related guides<\/h2><ul class=\"wp-block-list\"><li><a href=\"https:\/\/fasthire.com\/blog\/recruiters\/\">Hiring guides for recruiters and HR teams<\/a><\/li><li><a href=\"https:\/\/fasthire.com\/blog\/recruitment-metrics-to-track\/\">Recruitment metrics: eight numbers worth tracking<\/a><\/li><li><a href=\"https:\/\/fasthire.com\/blog\/time-to-hire-vs-time-to-fill\/\">Time to hire vs time to fill: what each one measures<\/a><\/li><li><a href=\"https:\/\/fasthire.com\/blog\/screening-at-volume\/\">Screening at volume: a process for 500 applications<\/a><\/li><li><a href=\"https:\/\/fasthire.com\/employers\">All hiring guides for employers<\/a><\/li><li><a href=\"https:\/\/fasthire.com\/blog\/choose-recruiting-software\/\">How to choose recruiting software: 25 questions to ask every vendor<\/a><\/li><li><a href=\"https:\/\/fasthire.com\/blog\/ats-compliance-checklist\/\">Applicant tracking system compliance checklist: GDPR and US records<\/a><\/li><!-- fh-related-end --><\/ul>\n\n<p class=\"wp-block-paragraph\"><em>This is general information, not legal advice.<\/em><\/p>\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\"><div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/fasthire.com\/#waitlist\">Join the waitlist<\/a><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Build a hiring dashboard in Excel or Google Sheets: columns, drop-downs, formulas, a monthly review routine and privacy rules.<\/p>\n","protected":false},"author":1,"featured_media":432,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-434","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-recruiters"],"_links":{"self":[{"href":"https:\/\/fasthire.com\/blog\/wp-json\/wp\/v2\/posts\/434","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fasthire.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fasthire.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fasthire.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fasthire.com\/blog\/wp-json\/wp\/v2\/comments?post=434"}],"version-history":[{"count":4,"href":"https:\/\/fasthire.com\/blog\/wp-json\/wp\/v2\/posts\/434\/revisions"}],"predecessor-version":[{"id":619,"href":"https:\/\/fasthire.com\/blog\/wp-json\/wp\/v2\/posts\/434\/revisions\/619"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fasthire.com\/blog\/wp-json\/wp\/v2\/media\/432"}],"wp:attachment":[{"href":"https:\/\/fasthire.com\/blog\/wp-json\/wp\/v2\/media?parent=434"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fasthire.com\/blog\/wp-json\/wp\/v2\/categories?post=434"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fasthire.com\/blog\/wp-json\/wp\/v2\/tags?post=434"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}