<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Lean Grid Co. | Spreadsheet Templates]]></title><description><![CDATA[Lean Grid Co. | Spreadsheet Templates]]></description><link>https://leangridco.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6accced6b99eea45b98b76b5/9bf1c14c-8d89-4cea-ab03-7163a6a17db1.png</url><title>Lean Grid Co. | Spreadsheet Templates</title><link>https://leangridco.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Sat, 17 Oct 2026 16:59:24 GMT</lastBuildDate><atom:link href="https://leangridco.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[How to Build an Inventory Tracker with Automatic Reorder Alerts in Google Sheets]]></title><description><![CDATA[When I worked in the production area of a packaging plant, stock was counted by hand and we usually found out an item was missing when the line stopped. This is the spreadsheet I wish we had. It works]]></description><link>https://leangridco.hashnode.dev/how-to-build-an-inventory-tracker-with-automatic-reorder-alerts-in-google-sheets</link><guid isPermaLink="true">https://leangridco.hashnode.dev/how-to-build-an-inventory-tracker-with-automatic-reorder-alerts-in-google-sheets</guid><category><![CDATA[google sheets]]></category><category><![CDATA[excel]]></category><category><![CDATA[Productivity]]></category><dc:creator><![CDATA[Juan Giles]]></dc:creator><pubDate>Mon, 12 Oct 2026 12:32:08 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6accced6b99eea45b98b76b5/9f51d537-b0ab-41a9-b12b-f1fc96b0a04c.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When I worked in the production area of a packaging plant, stock was counted by hand and we usually found out an item was missing when the line stopped. This is the spreadsheet I wish we had. It works in Excel and Google Sheets, uses only formulas, and an optional script emails you every morning.</p>
<h2>1. Two tables, not one</h2>
<p>The mistake most people make is typing the current stock directly. Instead, keep:</p>
<ul>
<li><p>An <strong>Inventory</strong> sheet: Code, Item, Category, Unit, Opening stock, Min stock, Unit cost</p>
</li>
<li><p>A <strong>Movements</strong> sheet: Date, Code, Type (IN/OUT), Quantity, Note</p>
</li>
</ul>
<p>Every delivery or consumption is a new row in Movements. You never overwrite a number, so you always know why stock changed.</p>
<h2>2. Stock IN and OUT with SUMIFS</h2>
<p>In the Inventory sheet the columns are: A Code, B Item, C Category, D Unit, E Opening stock, F Stock IN, G Stock OUT, H Current stock, I Min stock, J Unit cost, K Stock value, L Status. For the item in row 2:</p>
<pre><code class="language-plaintext">Stock IN:  =IF($A2="","",SUMIFS(Movements!$D:$D,Movements!$B:$B,$A2,Movements!$C:$C,"IN"))
Stock OUT: =IF($A2="","",SUMIFS(Movements!$D:$D,Movements!$B:$B,$A2,Movements!$C:$C,"OUT"))
</code></pre>
<p>The <code>IF($A2="","",...)</code> part keeps empty rows clean.</p>
<h2>3. Current stock and value</h2>
<pre><code class="language-plaintext">Current stock: =IF($A2="","",E2+F2-G2)
Stock value:   =IF($A2="","",H2*J2)
</code></pre>
<h2>4. The reorder alert</h2>
<pre><code class="language-plaintext">Status: =IF($A2="","",IF(H2&lt;=I2,"Reorder",IF(H2&lt;=I2*1.5,"Low","OK")))
</code></pre>
<p>"Reorder" means you are at or below your minimum. "Low" gives you a warning band (up to 1.5× the minimum) so you can order before it's urgent. Add conditional formatting: red for Reorder, amber for Low.</p>
<h2>5. Avoid typos with dropdowns</h2>
<p>Use data validation for Category, for Code in the Movements sheet (pointing to the Inventory codes) and for Type (IN/OUT). Most stock errors come from a code typed slightly differently.</p>
<h2>6. A small dashboard</h2>
<pre><code class="language-plaintext">Items tracked:     =COUNTA(Inventory!A2:A201)
Total stock value: =SUM(Inventory!K2:K201)
Items to reorder:  =COUNTIF(Inventory!L2:L201,"Reorder")
Items low:         =COUNTIF(Inventory!L2:L201,"Low")
</code></pre>
<h2>7. Optional: a daily low-stock email (Google Sheets)</h2>
<p>With Apps Script (Extensions → Apps Script), you can read the Status column, collect the Reorder and Low items and send them with <code>MailApp.sendEmail</code>. Then a time-driven trigger runs it every morning. The key part:</p>
<pre><code class="language-javascript">const items = values.filter(r =&gt; r[11] === 'Reorder' || r[11] === 'Low');
MailApp.sendEmail({ to: Session.getEffectiveUser().getEmail(),
  subject: 'Low stock alert: ' + items.length + ' item(s)', htmlBody: html });
ScriptApp.newTrigger('sendLowStockReport').timeBased().everyDays(1).atHour(8).create();
</code></pre>
<h2>Free template</h2>
<p>If you'd rather not build it from scratch, the complete file (Excel + Google Sheets, with dashboard, dropdowns and the email script) is free, pay what you want: <a href="https://gileson2.gumroad.com/l/inventory-tracker?utm_source=hashnode">https://gileson2.gumroad.com/l/inventory-tracker?utm_source=hashnode</a></p>
<p>The code is also on GitHub: <a href="https://github.com/JuanGiles260/inventory-tracker-sheets">https://github.com/JuanGiles260/inventory-tracker-sheets</a></p>
<hr />
<p><em>I'm Juan, an industrial engineering student from Bolivia. I build spreadsheet templates for small businesses at Lean Grid Co. Questions about the formulas? Ask in the comments.</em></p>
]]></content:encoded></item></channel></rss>