{"id":55,"date":"2026-07-05T20:39:34","date_gmt":"2026-07-05T20:39:34","guid":{"rendered":"https:\/\/wisegrid.co\/blog\/capacity-planning-template\/"},"modified":"2026-07-05T20:39:34","modified_gmt":"2026-07-05T20:39:34","slug":"capacity-planning-template","status":"publish","type":"post","link":"https:\/\/wisegrid.co\/blog\/capacity-planning-template\/","title":{"rendered":"Capacity Planning: A Template Your Team Will Actually Keep Updated"},"content":{"rendered":"<p><em>By <a href=\"\/blog\/author\/ryan-kramer\/\">Ryan Kramer<\/a>, founder of Wisegrid. Last updated July 2026.<\/em><\/p>\n<p>Capacity planning is the practice of comparing the hours your team actually has (availability) against the hours the work actually needs (demand), person by person, week by week, so you can see overload before it becomes a missed deadline. The math is simple. The hard part is that the numbers change every week, and most capacity spreadsheets are updated twice and then quietly abandoned.<\/p>\n<p>This guide gives you the template, the demand vs availability method behind it, a worked example with real numbers, and the honest answer to the staleness problem: the plan has to read from the same place the work is tracked, or it will always drift.<\/p>\n<blockquote>\n<p><strong>Key takeaways<\/strong> \u2013 <strong>Capacity planning is two numbers per person per week:<\/strong> available hours and allocated hours. Everything else is presentation. \u2013 <strong>Nobody has 40 available hours.<\/strong> Meetings, admin, and interruptions take their cut first; plan against 70 to 80 percent of nominal hours. \u2013 <strong>Utilization above 100 percent is not a plan<\/strong>, it is a schedule slip you have chosen not to look at yet. \u2013 <strong>The template below works in any spreadsheet.<\/strong> Copy it as-is. \u2013 <strong>Staleness is the real enemy.<\/strong> A capacity plan maintained by hand next to the task list is double data entry, and double data entry always loses.<\/p>\n<\/blockquote>\n<nav class=\"wg-toc\" aria-label=\"Table of contents\"><div class=\"wg-toc-eyebrow\"><span class=\"lp-dot\" aria-hidden=\"true\"><\/span> On this page<\/div><ul>\n<li><a href=\"#what-capacity-planning-actually-is\">What capacity planning actually is<\/a><\/li>\n<li><a href=\"#the-math-availability-vs-demand\">The math: availability vs demand<\/a><\/li>\n<li><a href=\"#the-capacity-planning-template\">The capacity planning template<\/a><\/li>\n<li><a href=\"#a-worked-example\">A worked example<\/a><\/li>\n<li><a href=\"#how-to-run-the-process\">How to run the process<\/a><\/li>\n<li><a href=\"#the-mistakes-that-break-capacity-plans\">The mistakes that break capacity plans<\/a><\/li>\n<li><a href=\"#a-capacity-plan-that-updates-itself\">A capacity plan that updates itself<\/a><\/li>\n<li><a href=\"#faq\">FAQ<\/a><\/li>\n<\/ul><\/nav>\n<h2 id=\"what-capacity-planning-actually-is\">What capacity planning actually is<\/h2>\n<p>Strip away the terminology and capacity planning answers three questions on a rolling basis:<\/p>\n<ol>\n<li><strong>How many productive hours does each person have<\/strong> in each upcoming week, after meetings, time off, and holidays?<\/li>\n<li><strong>How many hours of committed work does each person carry<\/strong> in that same week, across every project they touch?<\/li>\n<li><strong>Where do those two numbers collide<\/strong>, and what are we moving?<\/li>\n<\/ol>\n<p>A note on terms: <strong>resource planning<\/strong> (or resource management) is the broader discipline of deciding who works on what; <strong>capacity planning<\/strong> is its quantitative core, supply vs demand in hours. In practice small teams use the terms interchangeably, and the template below serves both.<\/p>\n<p>The per-person, per-week resolution matters. Team-level capacity (\u201cwe have 200 hours\u201d) hides the actual failure mode, which is one specific person being at 140 percent while a teammate sits at 60. Overload is always individual.<\/p>\n<h2 id=\"the-math-availability-vs-demand\">The math: availability vs demand<\/h2>\n<p><strong>Availability<\/strong> for a person in a given week:<\/p>\n<pre><code>availability = working days\n             x hours per day\n             x focus factor\n             - time off and holidays<\/code><\/pre>\n<ul>\n<li><strong>Working days x hours per day<\/strong> is the nominal week, usually 5 x 8.<\/li>\n<li><strong>Focus factor<\/strong> accounts for the recurring overhead of being employed: standing meetings, email, admin, interruptions. For most delivery roles it is 0.7 to 0.8. Managers and leads can drop to 0.5 or lower; be honest here or every downstream number is fiction.<\/li>\n<li><strong>Time off<\/strong> includes vacation, public holidays, and known part-time arrangements (a 0.6 FTE has a 0.6 multiplier on the whole formula).<\/li>\n<\/ul>\n<p>So a full-time IC with a 0.75 focus factor has 30 plannable hours in a normal week, not 40. A person taking two days off has 18.<\/p>\n<p><strong>Demand<\/strong> for that person in that week is the sum of estimated hours from every task assigned to them whose dates touch that week, across all projects. A task estimated at 20 hours spanning two weeks contributes 10 to each (or split proportionally to working days if the span is uneven).<\/p>\n<p><strong>Utilization<\/strong> is the ratio:<\/p>\n<pre><code>utilization = demand \/ availability<\/code><\/pre>\n<p>Read it with thresholds, not decimals:<\/p>\n<div class=\"wg-table-wrap\"><table>\n<thead>\n<tr>\n<th>Utilization<\/th>\n<th>Reading<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Under 60%<\/td>\n<td>Under-allocated; capacity to pull work forward<\/td>\n<\/tr>\n<tr>\n<td>60 to 85%<\/td>\n<td>Healthy; there is room to absorb the unplanned<\/td>\n<\/tr>\n<tr>\n<td>85 to 100%<\/td>\n<td>Fully loaded; any surprise causes slippage<\/td>\n<\/tr>\n<tr>\n<td>Over 100%<\/td>\n<td>Overloaded; something on the list will not happen on time<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>The purpose of the plan is to make the \u201cover 100%\u201d cells visible two to four weeks before they arrive, when the fix is cheap (move a task, shift a start date, trade an assignment) instead of expensive (miss a date, burn a weekend).<\/p>\n<h2 id=\"the-capacity-planning-template\">The capacity planning template<\/h2>\n<p>One table, one row per person, one block of columns per week. This structure works in any spreadsheet or grid tool.<\/p>\n<div class=\"wg-table-wrap\"><table>\n<thead>\n<tr>\n<th>Column<\/th>\n<th>What goes in it<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Team member<\/td>\n<td>One row per person<\/td>\n<\/tr>\n<tr>\n<td>Role<\/td>\n<td>For staffing decisions when you need to swap assignments<\/td>\n<\/tr>\n<tr>\n<td>Nominal hours<\/td>\n<td>Contracted hours per week (40, or fewer for part-time)<\/td>\n<\/tr>\n<tr>\n<td>Focus factor<\/td>\n<td>0.5 to 0.8; agreed per role, revisited quarterly<\/td>\n<\/tr>\n<tr>\n<td>Time off (hrs)<\/td>\n<td>Vacation and holiday hours in this week<\/td>\n<\/tr>\n<tr>\n<td><strong>Available (hrs)<\/strong><\/td>\n<td>nominal x focus factor \u2013 time off<\/td>\n<\/tr>\n<tr>\n<td>Project A (hrs)<\/td>\n<td>Estimated hours committed to this project this week<\/td>\n<\/tr>\n<tr>\n<td>Project B (hrs)<\/td>\n<td>\u2026one column per active project<\/td>\n<\/tr>\n<tr>\n<td>Other \/ support (hrs)<\/td>\n<td>Tickets, maintenance, the unplannable-but-inevitable<\/td>\n<\/tr>\n<tr>\n<td><strong>Allocated (hrs)<\/strong><\/td>\n<td>Sum of the project columns<\/td>\n<\/tr>\n<tr>\n<td><strong>Utilization<\/strong><\/td>\n<td>allocated \/ available<\/td>\n<\/tr>\n<tr>\n<td>Status<\/td>\n<td>OK \/ Full \/ Over, driven by the thresholds above<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>Repeat the block for each of the next 4 to 6 weeks. Beyond six weeks, plan at lower resolution (person-weeks per project per month); estimates that far out do not deserve hourly precision.<\/p>\n<h2 id=\"a-worked-example\">A worked example<\/h2>\n<p>A five-person studio, one week, three active projects:<\/p>\n<div class=\"wg-table-wrap\"><table>\n<thead>\n<tr>\n<th>Team member<\/th>\n<th>Role<\/th>\n<th>Nominal<\/th>\n<th>Focus<\/th>\n<th>Time off<\/th>\n<th>Available<\/th>\n<th>Acme site<\/th>\n<th>Beta app<\/th>\n<th>Support<\/th>\n<th>Allocated<\/th>\n<th>Utilization<\/th>\n<th>Status<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Maya<\/td>\n<td>Design lead<\/td>\n<td>40<\/td>\n<td>0.6<\/td>\n<td>0<\/td>\n<td>24<\/td>\n<td>12<\/td>\n<td>8<\/td>\n<td>2<\/td>\n<td>22<\/td>\n<td>92%<\/td>\n<td>Full<\/td>\n<\/tr>\n<tr>\n<td>Jonas<\/td>\n<td>Developer<\/td>\n<td>40<\/td>\n<td>0.75<\/td>\n<td>0<\/td>\n<td>30<\/td>\n<td>20<\/td>\n<td>14<\/td>\n<td>4<\/td>\n<td>38<\/td>\n<td>127%<\/td>\n<td>Over<\/td>\n<\/tr>\n<tr>\n<td>Priya<\/td>\n<td>Developer<\/td>\n<td>40<\/td>\n<td>0.75<\/td>\n<td>8<\/td>\n<td>22<\/td>\n<td>6<\/td>\n<td>8<\/td>\n<td>2<\/td>\n<td>16<\/td>\n<td>73%<\/td>\n<td>OK<\/td>\n<\/tr>\n<tr>\n<td>Sam<\/td>\n<td>PM<\/td>\n<td>40<\/td>\n<td>0.5<\/td>\n<td>0<\/td>\n<td>20<\/td>\n<td>8<\/td>\n<td>6<\/td>\n<td>2<\/td>\n<td>16<\/td>\n<td>80%<\/td>\n<td>OK<\/td>\n<\/tr>\n<tr>\n<td>Elena<\/td>\n<td>Developer<\/td>\n<td>32<\/td>\n<td>0.75<\/td>\n<td>0<\/td>\n<td>24<\/td>\n<td>0<\/td>\n<td>10<\/td>\n<td>4<\/td>\n<td>14<\/td>\n<td>58%<\/td>\n<td>OK<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>The table does its job instantly: Jonas is at 127 percent while Elena sits at 58, and both numbers were invisible in the project plans, because each project\u2019s plan only showed its own slice of Jonas. The fix is equally visible: move roughly 8 hours of the Acme build from Jonas to Elena, and both land in the healthy band. That reassignment conversation, held two weeks early, is the entire return on investment of capacity planning.<\/p>\n<h2 id=\"how-to-run-the-process\">How to run the process<\/h2>\n<ol>\n<li><strong>Set availability once, correct it weekly.<\/strong> Nominal hours and focus factors are near-static; time off changes weekly. Pull vacation dates into the sheet before each planning pass.<\/li>\n<li><strong>Review one fixed time per week.<\/strong> Fifteen minutes, same slot, scan the Status column for the next four weeks. Over cells get resolved in the meeting: move work, move dates, or consciously accept the risk.<\/li>\n<li><strong>Resolve overloads by trade, not by hope.<\/strong> \u201cIt\u2019ll probably be fine\u201d means the schedule slips silently. Every Over cell should end the meeting as a moved assignment, a moved date, or a named, accepted risk.<\/li>\n<li><strong>Watch the chronically under-allocated too.<\/strong> Repeated sub-60 percent weeks usually mean invisible work is being done off-plan, or the estimates are padded. Both are worth knowing.<\/li>\n<li><strong>Recalibrate focus factors quarterly.<\/strong> If everyone runs \u201c80 percent utilized\u201d on paper while working overtime in reality, the focus factor is wrong, and the plan is lying politely.<\/li>\n<\/ol>\n<h2 id=\"the-mistakes-that-break-capacity-plans\">The mistakes that break capacity plans<\/h2>\n<ul>\n<li><strong>Planning at 100 percent of nominal hours.<\/strong> The most common error and the most fatal. A plan that assumes 40 plannable hours is 25 percent oversubscribed on day one.<\/li>\n<li><strong>Ignoring meetings and support load.<\/strong> If recurring overhead is not in the model (via focus factor or an explicit column), every week ends mysteriously behind.<\/li>\n<li><strong>Team-level totals.<\/strong> \u201cThe team has 120 spare hours\u201d is compatible with two people drowning.<\/li>\n<li><strong>One-time snapshots.<\/strong> A capacity plan built for the quarterly kickoff and never touched again is decoration by week three.<\/li>\n<li><strong>Double data entry.<\/strong> This is the structural one. If assignments and dates live in project sheets while the capacity plan is a separate spreadsheet, every change must be typed twice. Nobody sustains that, so the plan drifts from reality, then quietly dies, usually with \u201cthe spreadsheet is out of date anyway\u201d as the epitaph.<\/li>\n<\/ul>\n<p>Everything on that list except the last is a discipline problem. The last one is a tooling problem, and no amount of discipline fixes it for long.<\/p>\n<h2 id=\"a-capacity-plan-that-updates-itself\">A capacity plan that updates itself<\/h2>\n<p>The durable fix for double entry is to compute the plan from the work instead of maintaining it beside the work. Wisegrid\u2019s resource heatmaps (<a href=\"\/for\/resource-planning\">resource planning tour<\/a>) do exactly the demand-vs-availability math above, live, across up to 30 sheets at once: each task row\u2019s assignee, dates, and effort fold into per-person, per-day allocated hours, compared against each person\u2019s availability profile (working days, hours per day, part-time fractions, holidays, and time-off blocks), with over-capacity days flagged automatically. Update a task\u2019s dates or owner in the project sheet and the heatmap already reflects it; there is no second spreadsheet to keep honest, and the rollup can sit on a shared <a href=\"\/features\/dashboards\">dashboard<\/a> next to your project status.<\/p>\n<p>The setup walkthrough, from effort columns to availability profiles to reading the heatmap, is in the companion guide: <strong><a href=\"https:\/\/wisegrid.co\/guides\/capacity-planning\">Live capacity planning in Wisegrid<\/a><\/strong>.<\/p>\n<h2 id=\"faq\">FAQ<\/h2>\n<h3 id=\"what-is-the-difference-between-capacity-planning-and-resource-planning\">What is the difference between capacity planning and resource planning?<\/h3>\n<p>Resource planning is the broad discipline of assigning people to work; capacity planning is its numeric core, comparing available hours to demanded hours per person per period. This template covers the capacity half, which is the half that catches overload early.<\/p>\n<h3 id=\"what-utilization-should-i-target\">What utilization should I target?<\/h3>\n<p>For delivery roles, 60 to 85 percent of available hours (which are themselves 70 to 80 percent of nominal hours). Targeting higher leaves no slack for the unplanned work that always arrives, which converts every surprise directly into a slipped date.<\/p>\n<h3 id=\"how-far-ahead-should-i-plan-capacity\">How far ahead should I plan capacity?<\/h3>\n<p>Four to six weeks at per-person, per-week resolution, and a coarser monthly view beyond that. Near weeks are for resolving concrete overloads; far months are for hiring and staffing decisions.<\/p>\n<h3 id=\"how-do-i-estimate-demand-for-tasks-without-hour-estimates\">How do I estimate demand for tasks without hour estimates?<\/h3>\n<p>Use coarse buckets (small = 4, medium = 8, large = 16 hours) rather than skipping the exercise. Capacity planning tolerates rough estimates well because errors average out across a week; it does not tolerate missing ones.<\/p>\n<h3 id=\"does-this-work-for-agile-teams\">Does this work for agile teams?<\/h3>\n<p>Yes, with a substitution: if you plan in story points per sprint, velocity already is your capacity model at the team level. The per-person hours view remains useful for people split across multiple teams or projects, which is exactly where sprint-level velocity goes blind. For the risk side of delivery planning, pair it with a <a href=\"\/blog\/raid-log\">RAID log<\/a>.<\/p>\n<hr>\n<h3 id=\"stop-maintaining-the-spreadsheet-about-your-other-spreadsheets\">Stop maintaining the spreadsheet about your other spreadsheets<\/h3>\n<p>Put the template above into practice once, then let the heatmap compute it from your real project sheets every day after. Free to start.<\/p>\n<p><strong><a href=\"\/signup\">Start free \u2192<\/a><\/strong> \u00b7 <a href=\"https:\/\/wisegrid.co\/guides\/capacity-planning\">Live capacity planning guide \u2192<\/a> \u00b7 <a href=\"\/for\/resource-planning\">Resource planning in Wisegrid \u2192<\/a><\/p>\n<hr>\n<blockquote>\n<p><strong>About the author<\/strong> <strong><a href=\"\/blog\/author\/ryan-kramer\/\">Ryan Kramer<\/a><\/strong> is the founder of Wisegrid, a higher-capacity Smartsheet alternative with cross-sheet resource heatmaps, availability profiles, and portfolio dashboards included in the normal $9 and $19 tiers. He writes about planning systems that survive contact with real teams. <a href=\"\/blog\/author\/ryan-kramer\/\">More from Ryan \u2192<\/a><\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>By Ryan Kramer, founder of Wisegrid. Last updated July 2026. Capacity planning is the practice of comparing the hours your team actually has (availability) against the hours the work actually needs (demand),\u2026<\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-55","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/wisegrid.co\/blog\/wp-json\/wp\/v2\/posts\/55","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wisegrid.co\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wisegrid.co\/blog\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/wisegrid.co\/blog\/wp-json\/wp\/v2\/comments?post=55"}],"version-history":[{"count":0,"href":"https:\/\/wisegrid.co\/blog\/wp-json\/wp\/v2\/posts\/55\/revisions"}],"wp:attachment":[{"href":"https:\/\/wisegrid.co\/blog\/wp-json\/wp\/v2\/media?parent=55"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wisegrid.co\/blog\/wp-json\/wp\/v2\/categories?post=55"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wisegrid.co\/blog\/wp-json\/wp\/v2\/tags?post=55"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}