Tag: Small Business

  • How to Track Inventory in Google Sheets

    To track inventory in Google Sheets, use three tabs instead of one list of quantities. An Items tab describes what you stock and when to reorder it. A Movements tab records every receipt, sale, loss, and count correction as a new row. A Stock tab calculates what’s on hand from those movements, and flags anything at or below its reorder point. Nobody types a quantity into the Stock tab, so as long as people add rows and corrections instead of changing old ones, the history stays intact.

    Why One “Quantity on Hand” Column Fails

    The common first attempt is a list of products with a quantity column that people update by hand. It works for a few weeks, then breaks in predictable ways:

    • You can’t tell what happened. If a count drops from 12 to 8, the sheet doesn’t say who took the four, when, or whether they were sold, spoiled, or lost.
    • Formulas and formatting get overwritten. Anyone typing in the wrong cell can wipe out a calculation without noticing.
    • You can’t see usage. Without dated movements, you can’t work out how fast something sells or when you’ll run out.

    The fix is to keep two kinds of records apart. Master records describe things that change rarely, such as the item list and supplier lead times. Transaction records log events as they happen. The balance is always calculated from the transactions, never typed.

    The Three Tabs at a Glance

    TabWhat it holdsWho types in it
    ItemsOne row per product: cost, supplier, usage, lead time, reorder pointYou, when products change
    MovementsOne row per stock eventWhoever receives, sells, or counts stock
    StockCalculated balances and reorder flagsNobody (formulas only)

    If you’d rather start from a working version, copy the inventory template. It has the three tabs, the formulas, the dropdowns, and the reorder flag already built, with made-up example data and room for 199 items. Before you use it, follow “Clear the Example Data Before You Start” below. The rest of this article explains how each part works so you can build it or adapt it.

    Tab 1: Items

    Make a tab named Items with these columns in row 1:

    ColumnHeaderWhat goes in it
    ASKUA short unique code, such as PKG-001. Never reuse one.
    BItemThe plain-English name
    CCategoryPackaging, supplies, finished goods
    DUnitThe one base unit you count, buy, and use this item in: each, roll, kilogram
    EUnit costWhat you last paid per base unit
    FSupplierWho you buy it from
    GAverage daily useHow many base units you use or sell per day, as an estimate to start
    HLead time (days)Days from placing an order to having it in hand
    ISafety stock (days)Extra days of use to cover late deliveries and busy spells
    JReorder pointCalculated, see below

    The reorder point

    A reorder point is the stock level at which you should place an order. A common way to set it is to cover the use during the supplier’s lead time, plus a safety buffer:

    Reorder point = average daily use × (lead time + safety days)

    In the sheet, with row 2 as the first item, cell J2 holds:

    =IF(A2="","",G2*(H2+I2))

    Copy it down the column, as far as you expect to have items (the template does this to row 200). The IF leaves the cell blank for empty rows.

    Pick one base unit per SKU and use it everywhere: in every movement, in daily use, and in unit cost. If you buy mailer boxes by the case of 12 but use them one at a time, log a delivery of one case as 12 each and divide the case price by 12 for the unit cost. Mixing cases and pieces in the same item quietly corrupts the balance, the value, and the reorder point.

    Here is a made-up example. A business uses 10 mailer boxes a day. The supplier takes 7 days to deliver, and the owner wants 5 days of cushion. The reorder point is 10 × (7 + 5) = 120 boxes. When stock reaches 120 or fewer, it’s time to order.

    Daily use is the weakest number in this formula, because at first it’s a guess. The Stock tab below shows the real use from your own movements, so you can correct the estimate after a month or two.

    Tab 2: Movements

    Make a tab named Movements with these columns:

    ColumnHeaderWhat goes in it
    ADateWhen the movement physically happened
    BSKUChosen from a dropdown that reads the Items tab
    CMovement typeChosen from a fixed list
    DQuantityA positive number, decimals allowed
    EReferenceOrder number, PO number, or count date
    FLogged byInitials

    Quantity is always positive. The movement type decides whether stock goes up or down. Use this list of seven types. Each starts with IN or OUT:

    • IN – Opening count
    • IN – Purchase received
    • IN – Return to stock
    • IN – Count correction up
    • OUT – Sale or use
    • OUT – Waste or damage
    • OUT – Count correction down

    Start with opening counts. On the day you start, count everything and log one “IN – Opening count” row per SKU, dated that day. That’s the only time you enter a starting balance. After that, the balance is always the sum of movements. If an item has zero stock, skip its opening row; the quantity rule below requires a number above zero. Dates are for things that have physically happened, so log a purchase when it arrives, not when you order it.

    Add the dropdowns

    Dropdowns stop typos like “Tomato” and “Tomatoes” from becoming two items. Select the cells in column B (B2 down to row 1,000), then choose Data, then Data validation. In the Data validation rules panel, click Add rule. Under Criteria, choose Dropdown (from a range) and enter Items!A2:A200. Under Advanced options, leave “If the data is invalid” on Reject the input, then click Done.

    Repeat for column C, using the seven movement types. If you’re building from scratch, first make a fourth tab named Lists, type “Movement types” in A1, and type the seven types in A2 to A8. The template already has this tab. Then use Dropdown (from a range) with Lists!A2:A8. For column D, choose Greater than and enter 0, so nobody enters a negative quantity.

    Select the cells before you click Add rule, and don’t change the “Apply to range” box afterward. When you finish, the rules panel should list three rules, one for each column. If a rule you added earlier disappears, you changed the range of a rule that already existed; add it again. Then test it: type a made-up SKU in column B. Google Sheets should reject it with a message that the entry violates the data validation rules.

    Tab 3: Stock

    Make a tab named Stock. Row 2 holds the formulas for the first item, and you copy that row down.

    ColumnHeaderFormula in row 2
    ASKU=IF(Items!A2="","",Items!A2)
    BItem=IF(A2="","",Items!B2)
    CReceived=IF(A2="","",SUMIFS(Movements!$D:$D,Movements!$B:$B,$A2,Movements!$C:$C,"IN - *"))
    DRemoved=IF(A2="","",SUMIFS(Movements!$D:$D,Movements!$B:$B,$A2,Movements!$C:$C,"OUT - *"))
    EOn hand=IF(A2="","",C2-D2)
    FReorder point=IF(A2="","",Items!J2)
    GStatus=IF(A2="","",IF(E2<0,"CHECK COUNT",IF(E2<=F2,"REORDER","OK")))
    HUnit cost=IF(A2="","",Items!E2)
    IStock value=IF(A2="","",E2*H2)

    The * in "IN - *" is a wildcard, so the formula adds up every movement whose type starts with “IN – “. That’s why the type names matter and why the dropdown is locked to the list.

    Two safeguards sit in the status formula. If on-hand comes out negative, which should be impossible, the status says CHECK COUNT instead of looking fine, because that points to a missed receipt or a typo. The reorder test uses “at or below,” so a count exactly on the reorder point triggers it.

    Make the flag visible

    Select column G, then choose Format, then Conditional formatting. Use Text is exactly REORDER and a soft red fill. Add a second rule for CHECK COUNT with a yellow fill. The Stock tab then shows what needs ordering at a glance.

    What the example shows

    With the template’s made-up data, the Stock tab calculates:

    SKUReceivedRemovedOn handReorder pointStatusStock value
    PKG-001600293307120OK$260.95
    PKG-00230171313.5REORDER$31.20
    LBL-001133105OK$60.00
    INK-0014131.8OK$66.00
    PRD-001400159241126OK$747.10
    PRD-002150678363OK$481.40

    The packing tape has 13 rolls on hand against a reorder point of 13.5, so it’s flagged. Stock value is on-hand quantity times the last unit cost you entered. It’s a working figure for the shop floor, not an accounting valuation, because your accountant may use a different costing method.

    Check your usage estimate

    Two more columns help you test the daily-use guess against reality. They only mean something for an item once you have 28 full days of history for that item, so the template leaves them blank until then. Use these estimates only when every movement for that item has been recorded throughout the last 28 completed days; an older first entry alone does not establish complete logging. In column J, =IF(A2="","",IF(COUNTIF(Movements!$B:$B,$A2)=0,"",IF(MINIFS(Movements!$A:$A,Movements!$B:$B,$A2)>TODAY()-28,"",SUMIFS(Movements!$D:$D,Movements!$B:$B,$A2,Movements!$C:$C,"OUT - Sale or use",Movements!$A:$A,">="&(TODAY()-28),Movements!$A:$A,"<"&TODAY())/28))) gives average daily use over the last 28 completed days, not counting today or any future-dated rows. Column K, =IF(A2="","",IF(N(J2)>0,E2/J2,"")), divides on-hand stock by it to estimate days of stock left.

    The blanks are deliberate, and they are per item. If an item’s first logged movement is only ten days old, dividing by 28 would treat the missing eighteen days as days when nothing sold, so that item stays blank even if other items have a long history. An item with no movements at all also stays blank rather than showing zero. If the real use differs a lot from the number in the Items tab, update the Items tab and the reorder point follows. Because these columns depend on today’s date, the template’s example data (October 1 to 15, 2026) is a finished illustrative period, and the columns will show nothing until you’ve logged 28 days of your own.

    Clear the Example Data Before You Start

    The template comes with made-up transactions. If you leave them in, your real items inherit fictional stock. To start clean:

    1. On the Movements tab, select the data rows from row 2 down to the last example row and press Delete. This clears the contents but keeps the header row and the dropdown rules. Don’t delete the rows themselves.
    2. On the Items tab, type over the example rows in columns A to I with your own items. Leave column J alone; it holds the formula. Clear any leftover example rows below your last item.
    3. Back on Movements, log one “IN – Opening count” row for each item with your real count.
    4. Check the Stock tab. On hand should match what you counted on the shelf for every item before you log anything else.

    How People Use It Day to Day

    Receiving a delivery, selling or using stock, and discarding spoiled goods each add one row to Movements. Here are three made-up rows:

    DateSKUMovement typeQuantityReferenceLogged by
    2026-10-07PKG-001IN – Purchase received200PO-0101JS
    2026-10-08PKG-001OUT – Sale or use90Week 2 shipmentsJS
    2026-10-13PRD-001OUT – Waste or damage4Damaged in storageMK

    If the work is steady, log in batches, such as once a day for sales and at receiving time for deliveries. The point is that every change has a row, a date, and a reason. For high-volume sales, you can total a day’s sales into one row per SKU instead of one per sale.

    Protect the Items and Stock tabs so only you can edit them. Choose Data, then Protect sheets and ranges, and limit editing on the formula cells. Staff then only need access to Movements, where mistakes are visible and correctable. Protection limits who can edit a range; it isn’t a security control, and editors of Movements can still change or delete old rows. Keeping the history intact is a habit: add rows, never rewrite them.

    Count a Few Items Regularly and Fix Differences with a Row

    No sheet matches the shelf perfectly. Items get miscounted, damaged without being logged, or taken. A cycle count catches this without closing the business: count a handful of SKUs on a rotating schedule, and cover everything over a few weeks. How many you count at a time depends on how many items you have and how long a count takes.

    When a count disagrees with the sheet, don’t edit the Stock tab or delete old rows. Add a correction row. If the sheet says 20 and the shelf has 17, log “OUT – Count correction down”, quantity 3, with a reference like “Cycle count 2026-10-15”. If the shelf has more, log “IN – Count correction up” for the difference. The balance fixes itself, and the history keeps the evidence. If corrections for the same item keep going down, that is the clue to look for waste, theft, or an unlogged use.

    What a Spreadsheet Doesn’t Do

    • It doesn’t know about open orders. An item stays flagged REORDER until you log the receipt, even if you ordered it yesterday. Put the PO number in a note column on the Items tab, or mark the row, so two people don’t order the same thing twice.
    • It doesn’t change costs by lot. Unit cost is a single number, so it can’t show first-in, first-out valuation.
    • It tracks one place. Several locations, transfers between them, and lot or expiry tracking need a different design.
    • It doesn’t scan. Entry is by hand unless you add other tools.

    Stay in Google Sheets until it stops being enough for a specific reason like these, not just because the item count grows. If you outgrow it, look for tools that solve the exact problem: barcode scanning, multi-location transfers, or lot tracking. How much a small business should spend on data tools can help you weigh the cost.

    Connect It to Alerts and Cash

    The REORDER flag appears when someone opens the Stock tab. If you want an email when an item crosses its reorder point, How to set up automatic alerts in Google Sheets covers the options, including a script that emails you once when a number crosses a line. That script checks a number against a minimum, so watching a text status for each item would need an adapted script rather than just new cell references. Orders also have to be paid for, so it helps to put planned inventory purchases into your cash forecast. The 13-week cash flow tracker has a row for vendor and inventory payments.

    Frequently Asked Questions

    How many items can this handle?

    The template has formulas for 199 items (rows 2 to 200), and its dropdowns accept entries down to row 1,000 of Movements. To go past either limit, extend everything together: copy the Items column J formula and the Stock row 2 formulas further down, extend the Stock conditional formatting range, widen the SKU dropdown source (Items!A2:A200), and extend the validation rules on Movements. Performance depends on your file, and Google recommends closed ranges instead of open ones in formulas, so if a large Movements tab gets slow, change the whole-column references to bounded ranges. You can also archive older years to another file after carrying forward a closing count as new opening rows.

    Can several people use it at once?

    Yes. Google Sheets lets several people edit the same file. What matters is the discipline: everyone logs movements in the same way, and only a few people can change the Items and Stock tabs.

    What about returns from customers?

    If the returned item goes back on the shelf, log “IN – Return to stock”. If it can’t be resold, don’t log anything else against stock: the original sale already took that unit out, so logging it as waste would remove it a second time. Say you start with 10, sell 1, and get a damaged return. The balance should stay at 9. Record what happened to the damaged unit in a note or the Reference column of a separate log. Use “OUT – Waste or damage” only for units that are actually counted in stock.

    Does this replace my accounting records?

    No. It tracks quantities for operations. Your accounting records have their own rules for how inventory is valued and reported.

  • How to Get Alerted When Your Numbers Change

    To get alerted when your business numbers change without drowning in noise, follow four rules. Alert only on events that force a decision. Set each line according to the kind of number it watches. Make every alert say what happened, who owns it, what to do, and by when. Then review the whole list regularly, and for any alert nobody acted on, find out why before you remove it.

    Monitoring Is Not Alerting

    Monitoring is a number you can look at when you choose to: a dashboard, a scorecard, a monthly report. Alerting is a number that interrupts you. They do different jobs, and most alert problems start when one is used as the other.

    Anything that can wait until the next review belongs on the scorecard. How many KPIs a small business should track explains why four to seven numbers is enough to watch. An alert list should be much shorter than that. If you're not sure where a number belongs, put it on the scorecard first. You can promote it later.

    Why Alert Systems Decay

    An alert system usually starts with enthusiasm. You set up alerts for everything you'd hate to miss. Within a few weeks the messages arrive daily, people skim them, and somebody builds an inbox rule that files them away. When a real problem finally triggers one, it sits in a folder nobody opens.

    Software makes sending a notification free. Attention is the part that costs something. The fix is not a better tool. It's a smaller list, with a clear reason for each item to be there.

    Industrial plants have dealt with this for a long time. ISA's own explanation of alarm management, built around the ANSI/ISA-18.2 standard, describes rationalization: each alarm is justified, and its consequence, the expected response, and the response time are documented. ISA's overview of alarm rationalization is worth a read. A small business doesn't need that formality, and this article isn't claiming to follow the standard, but the discipline carries over.

    What Deserves an Alert

    Two tests keep the list short. First, does the number help the business make more revenue, run more efficiently, or cost less to operate? If not, leave it off. Second, if it moves, is there a decision someone must make soon, and can they make it? If the answer is "we'll look at it at the monthly review," it's a report.

    Alert Report
    When action is needed Before the consequence arrives, at a deadline set for that risk: minutes for an outage, about a day for a financial check At the next scheduled review
    What it watches A limit you can't cross, or a sharp break from normal Trends and gradual changes
    Who receives it One person who owns the response Leadership and the team
    How often it fires Rarely, by exception On a schedule

    Typical alert material: cash projected to fall below payroll, a product about to run out, a payment system that has stopped working, a key customer's orders stopping. Typical report material: utilization, retention, average ticket, anything you review monthly to see which way it's heading.

    Two Kinds of Line

    A threshold is the line a number crosses to trigger an alert. There are two ways to set one, and they suit different numbers.

    A hard limit comes from what the business must be able to do, not from history. Cash is the clearest case. Your minimum cash level should come from what's due in the coming weeks and how quickly you could collect or borrow, not from last year's balances. Two $15,000 payrolls come to $30,000, but that covers only those two payments. A real floor also has to cover rent, vendors, taxes, and a margin for the forecast being wrong. The 13-week cash flow tracker shows one way to lay that out. Keep in mind that a check on week-end balances can miss a dip in the middle of a week. Inventory works the same way: set the reorder point from lead time and how fast you sell. A dangerously low balance can be common, so history isn't a safe guide here.

    A variation band comes from how much a number normally moves. It suits performance numbers, such as inquiries, conversion rate, gross margin, or on-time delivery. I set these from the business's own history. I look at how much each metric actually moved over the last six to twelve months. Movement inside that normal range I treat as noise. Movement outside it means something changed. And I set the band metric by metric, because metrics differ.

    The numbers below are made up to show why. Take two metrics from the same business.

    Weekly website inquiries Gross margin
    Normal range over 12 months 38 to 58 a week 41% to 43%
    Midpoint 48 42%
    A flat 10% rule fires when it falls below 43.2 37.8%
    Reading that should get attention Well outside the range, such as 20 38%

    A 10% rule would alert on a perfectly normal week of 40 inquiries, which sits 17% under the midpoint but inside the usual range. It would stay silent when gross margin falls to 38%, because that is only 9.5% below 42%. Yet at $80,000 of monthly revenue each margin point is worth $800, so four points is $3,200 a month, or $38,400 a year if it lasted. Same rule, two wrong answers.

    Two cautions apply. First, a steady drift that stays inside the band is still a trend, so keep watching it on the scorecard. Second, if you have no history yet, start with a rough band from your judgment and revise it after a quarter of real data. A first guess is fine as long as you replace it.

    What a Good Alert Says

    An alert that only states a number leaves the work to whoever reads it. Make every alert carry four things:

    1. The condition, in plain words.
    2. The context: how far off, and compared with what.
    3. The owner: one named person or role.
    4. The action and the deadline.

    This is the same conversation a good reporting meeting has: what the numbers mean, who will act on them, and by when. Compare two versions of the same alert.

    Weak: Cash is low.

    Strong: Projected ending cash for the week of Nov 2 is $24,000, which is $6,000 under the $30,000 minimum. Owner: office manager. Next step: confirm which customer payments are due before Nov 2 and follow up on any overdue ones. Report back by Friday noon.

    The strong version needs no meeting to decide who does what. The weak one starts a discussion about whether anyone should worry. The example is made up. In your own alerts, the owner should be a person or a role someone actually holds, not a shared inbox.

    When Silence Is the Problem

    A quiet inbox is weak evidence. It can mean everything is fine, but it can also mean the data stopped arriving, the monitor stopped running, or an alert is already active and is staying quiet on purpose. Keep three questions separate.

    1. Is the data fresh? Did the source refresh recently, with valid values? Use a timestamp for the last successful refresh, not the date of the latest transaction, which can be old for a good reason when nothing happened. A formula like TODAY() or a header with a forecast date doesn't prove anything about freshness.
    2. Is the monitor working? Did the check run recently, and did the message get out? A check inside the job that stopped can't announce that the job stopped. Use a separate backup check, such as a heartbeat message that should arrive and gets noticed when it doesn't. Set its cadence to the risk. Platform failure notifications help with runs that fail, but a missed-run check is needed for a job that never starts.
    3. Is the condition still active? A good alert system sends one message when a number crosses a line, then stays quiet while it remains crossed. No new message can therefore mean a problem that's already been reported, not a healthy number. Know which alerts are active and who has acknowledged them.

    In a spreadsheet, a cell that records when the last successful refresh happened, with a rule that complains when it's too old, is a reasonable design idea. Treat it as a suggestion to try, not a tested recipe.

    Plan for Known Noise

    Some movement is expected and planned: a promotion that lifts inquiries for two weeks, a seasonal slowdown, a price change, a holiday closure. If an alert keeps firing for a reason everyone already knows, people start ignoring it for that reason and then for the next one.

    Handle planned events deliberately, and be careful about which alerts you loosen. For performance numbers, write down the event, the dates, and the temporary band, and name the person who restores the original line. Don't switch off protections for cash, stock, outages, or safety just because the condition is expected. If you have to pause a critical alert, name another way someone will keep watching it and put the restore date on the calendar. A temporary exception with no end date quietly becomes a permanent blind spot.

    Repeated alerts have remedies besides moving the line. For performance alerts where a short delay is safe, require the number to stay across the line for a few checks before it fires. Keep urgent hard-limit warnings prompt. Send one message per problem, not one per check. Let the owner acknowledge it, and escalate to a backup if nobody does. The Google SRE book's chapters on monitoring and practical alerting describe persistence, deduplication, and routing for engineering teams. The owner-and-backup response rule here is a proposed small-business routine.

    Choose the Channel by Urgency

    Match the channel to how fast the response has to be.

    • Email suits checks you want a record of and can act on within the day, such as a morning cash check. It's easy to file and to find later.
    • Team chat suits events a group handles together, such as a new qualified lead that someone needs to pick up.
    • Text message or phone push suits emergencies where you'd want to be interrupted, such as a payment system going offline. If texts fire often, find out why. Either the lines are wrong, or a real problem keeps happening and needs fixing.

    Decide what happens when no one responds. A simple rule is enough: if the owner hasn't acknowledged it by a stated time, the message goes to a named backup. This is also how you tell a missed alert from an unnecessary one.

    Review the List Regularly

    Alert lists need pruning, but pruning is not the same as deleting whatever gets ignored. A quarterly review is a reasonable routine for a small business, not a rule from any standard. Go through each alert and ask three questions.

    1. Did it fire? If not for a long time, is the condition still a real risk? A quiet alert may be doing its job, or it may be watching something that no longer matters.
    2. When it fired, did the owner act before the alert's own deadline? Compare the response with the deadline you set for that risk, not with a universal one. If they didn't act, find out why. The owner may not have seen it, the message may not have been delivered, nobody may have been named, there may be no backup, or the action may not have been possible. Fix that cause. Retire the alert only if the condition no longer needs a timely response, another alert already covers it, or it was only ever information.
    3. Did anyone say it was noisy? Find out what kind of noise it was before you change anything. It could be a real problem that keeps recurring, bad data, the same message sent twice, a number crossing the line and back again within minutes, a message that doesn't say what to do, or the wrong recipient. Move the line outward only when the number's own history supports it, and only for performance numbers. If the breach is real and repeats, that's an operational problem to solve, not a threshold to loosen.

    Keep the list in one place with one row per alert, so the review takes minutes instead of an afternoon.

    Number Line Owner Action Channel
    Projected cash Below the cash floor (payroll plus other dated payments) Office manager Chase receivables Email
    Gross margin Below its 12-month range Operations lead Review job costs Email
    Payment system Offline Owner Switch to backup Text

    The rows are examples. Yours should be short enough that the owner can name every alert from memory.

    Frequently Asked Questions

    How many alerts should a small business have?

    As few as you can defend. A handful is plenty for most small businesses. If you can't say who acts on an alert and what they do, it doesn't belong on the list yet. Either name the owner and action, or move the number to the scorecard.

    Should I alert on a percent change or on a level?

    It depends on the number. Use a level, a hard limit, for cash, stock, and anything with a real floor. Use a variation band for performance numbers that move up and down on their own. A flat percentage for everything is the version most likely to be wrong.

    What if I don't have 6 to 12 months of history?

    Start with a rough band, mark it as provisional, and replace it once you have a quarter of data. Don't wait for perfect history before setting up the few alerts that guard a hard limit.

    How do I set one up in a spreadsheet?

    How to set up automatic alerts in Google Sheets covers the mechanics. This article is about deciding which alerts deserve to exist.

  • How to Set Up Automatic Alerts in Google Sheets

    Google Sheets can email you when something changes, and there are three ways to set it up. Notification settings email you when someone else edits the sheet or submits a form. Conditional notifications email you when a cell changes to a value you choose, but only on certain work or school accounts. A short Apps Script can watch a calculated number, such as the lowest projected cash balance, and it runs on personal and Google Workspace accounts, subject to your permissions and any administrator settings. Start with the simplest method that does the job.

    Decide What the Alert Is For First

    An alert is a message that asks someone to do something. If nobody knows what to do when it arrives, it becomes noise, and people learn to ignore it. Before you set one up, write down the number it watches, the level that counts as a problem, who gets the email, and what that person does next. This article covers the mechanics, not which numbers deserve an alert.

    Also try the free option first: a color that shows up when you open the sheet (Method 3). An email makes sense when nobody opens the sheet often enough to notice the color.

    Method 1: Turn On Notification Settings for Edits and Form Submissions

    This is the built-in option for knowing that something happened in a shared sheet. It needs no code and no special account. The setting applies to you only, and it doesn’t notify you about your own edits.

    1. Open the sheet.
    2. Click Tools, then Notification settings, then Edit notifications.
    3. Under “Notify me when,” choose Any changes are made or A user submits a form.
    4. Under “Notify me with,” choose Email – daily digest or Email – right away.
    5. Click Save.

    Use “right away” when someone is waiting on the update, such as a lead form that a salesperson should answer the same day. Use the daily digest for a sheet your team edits constantly.

    The limit is that these notifications tell you a change happened. They don’t read what the change was, so they can’t tell you that cash dropped below $10,000 or that a stock count hit zero.

    Method 2: Conditional Notifications on Certain Work or School Accounts

    Conditional notifications email you when a cell’s value changes to something you specify. Google says the feature is available only to certain work or school accounts, so a personal Gmail account won’t see it. If your menu has it, setup takes a minute:

    1. Click Tools, then Conditional notifications. You can also right-click a cell.
    2. Click Add rule.
    3. Under “In this column,” pick a column or a custom range.
    4. Click Add condition and set the test, for example, Text is exactly “Completed.”
    5. Under “Then take the following action,” type the email addresses or choose a column that contains them.

    This works well for a status column. A rule on the “Status” column can email the account manager when a row changes to “Overdue.”

    Know the limits before you rely on it:

    • You can add individual Gmail or Google Workspace addresses. Group addresses and non-Google addresses such as Outlook or Yahoo aren’t supported.
    • Emails may not be immediate, and several changes can be combined into one email.
    • Volatile functions recalculate with any change to the sheet, so you may miss changes they produce, especially while the file is closed. Changes that come from outside sources such as Connected Sheets or other documents don’t trigger rules.
    • A change in how a value is formatted (decimal places, for example) doesn’t count.

    If your account doesn’t have the feature, or you need to check a number that’s calculated across a row, use Method 4.

    Method 3: Color the Cell So the Problem Shows Up When You Open the Sheet

    Conditional formatting is not an email, but it takes two minutes and works on every account. For many sheets, it’s enough.

    For the 13-week cash flow tracker, where ending cash is in B14:N14 and the minimum is in A17:

    1. Select B14:N14.
    2. Click Format, then Conditional formatting.
    3. Under “Format rules,” choose Custom formula is and enter =B14<$A$17.
    4. Set a soft red fill with dark red text. Skip the neon colors; people stop seeing them.

    The same approach works for inventory below a reorder point, or a receivable past due: pick the cells, choose Less than or a custom formula, and point it at the cell that holds your limit. The color catches the problem when someone opens the sheet. If you need to be told when no one has opened it, go to Method 4.

    Method 4: Email an Alert With a Short Apps Script

    Apps Script is Google’s built-in scripting tool for Sheets. It’s included with personal and Google Workspace accounts, subject to your account’s permissions and any restrictions your administrator sets on a work account. The script below checks the projected ending cash for all 13 weeks and sends one email when the lowest value falls under your minimum. It’s written for the layout in the cash flow tracker template: a tab named “Cash Flow,” week start dates in B1:N1, projected ending cash in B14:N14, and the minimum cash level in A17. If your sheet is laid out differently, change those references.

    The script is strict on purpose. It needs a real date in every cell of B1:N1, a number in every cell of B14:N14, and a number in A17. If anything else is there, such as an error like #REF!, a blank cell, or text, the script stops with an error message and does nothing else. A broken forecast shouldn’t be mistaken for a healthy one, and it can’t clear a standing alert.

    function checkCashAlert() {
      var lock = LockService.getScriptLock();
      lock.waitLock(30000);
      try {
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var sheet = ss.getSheetByName("Cash Flow");
        if (!sheet) {
          throw new Error('No tab named "Cash Flow".');
        }
        var weeks = sheet.getRange("B1:N1").getValues()[0];
        var ending = sheet.getRange("B14:N14").getValues()[0];
        var minimum = sheet.getRange("A17").getValue();
    
        if (typeof minimum !== "number") {
          throw new Error("A17 must hold a number: the minimum cash level.");
        }
    
        var lowest = null;
        var lowestWeek = null;
        for (var i = 0; i < ending.length; i++) {
          var column = String.fromCharCode(66 + i);
          if (!(weeks[i] instanceof Date) || isNaN(weeks[i].getTime())) {
            throw new Error(column + "1 must be a date.");
          }
          if (typeof ending[i] !== "number") {
            throw new Error(column + "14 must be a number, but it holds: " + ending[i]);
          }
          if (lowest === null || ending[i] < lowest) {
            lowest = ending[i];
            lowestWeek = weeks[i];
          }
        }
    
        var props = PropertiesService.getScriptProperties();
        var alreadyAlerted = props.getProperty("CASH_ALERT_ACTIVE") === "true";
    
        if (lowest < minimum) {
          if (!alreadyAlerted) {
            var weekText = Utilities.formatDate(lowestWeek, ss.getSpreadsheetTimeZone(), "MMM d, yyyy");
            MailApp.sendEmail(
              "you@yourcompany.com",
              "Cash alert: projected balance falls below your minimum",
              "The lowest projected ending cash is $" + lowest.toLocaleString() +
              " in the week starting " + weekText + ". Your minimum is $" +
              minimum.toLocaleString() + ".\n\n" + ss.getUrl()
            );
            props.setProperty("CASH_ALERT_ACTIVE", "true");
          }
        } else if (alreadyAlerted) {
          props.deleteProperty("CASH_ALERT_ACTIVE");
        }
      } finally {
        lock.releaseLock();
      }
    }
    

    To install it:

    1. In your sheet, click Extensions, then Apps Script.
    2. Delete the sample code and paste the script.
    3. Change the tab name ("Cash Flow"), the ranges, and the email address to match your sheet.
    4. Click Save project.
    5. Select checkCashAlert in the function dropdown and click Run.
    6. A box titled “Authorization required” appears, with Cancel and Review permissions buttons. Click Review permissions. Google then opens a separate window where you choose your account and approve access. The script reads your spreadsheet and sends email as you, so expect those two permissions to be listed. Read them before you approve. For a script you wrote or pasted yourself, Google may also warn that the app isn’t verified. After you approve, the run finishes and the execution log at the bottom shows “Execution completed”.

    What the Script Does

    The script first locks the sheet so two runs can’t overlap, then checks the sheet. It finds the lowest ending cash and the week it falls in, and compares that number with your minimum.

    If the lowest number is under the minimum, it sends one email that names the amount, the week, and the sheet link. The week is shown in the spreadsheet’s time zone. It also saves a flag called CASH_ALERT_ACTIVE. While the flag is set, the script stays quiet, so you don’t get the same email every morning while cash stays low. When the lowest number is back at or above the minimum, the script clears the flag, and the next breach sends a new email. If the email can’t be sent, the flag isn’t set, so the next run tries again.

    A quiet script is not proof that cash is fine. The script watches weekend balances only, so a balance that dips below your minimum in the middle of a week and recovers by the weekend won’t trigger it. Use it with the dated payment list described in the cash flow tracker article.

    Test it before you trust it, and don’t schedule anything until the test passes. The test changes your minimum on purpose, so either do it in a copy of your sheet (File, then Make a copy, and check that the script came along under Extensions, then Apps Script; if it didn’t, paste it in again) or write down your real minimum first and put it back at the end.

    1. Write down the number in A17. In any empty cell, enter =MIN(B14:N14) to see your lowest projected ending cash. Call that number L, then delete the cell.
    2. Healthy state. Set A17 to L. Run the script. Nothing should arrive, because a balance equal to the minimum is not a breach. This also clears any alert the script remembered from before.
    3. Breach. Set A17 to a number above L, such as L plus 1,000. Run the script. The email should arrive and name the lowest amount and its week.
    4. Suppression. Run the script again. No second email should arrive.
    5. Recovery and re-breach. Set A17 back to L and run the script, which clears the alert. Set A17 above L again and run it. A new email should arrive.
    6. Bad data. Click one ending cash cell and copy its formula from the formula bar to a safe place. Replace the formula with a word and run the script. It should stop with a red error in the execution log, such as “J14 must be a number, but it holds: oops”, and send nothing. A real error value such as #REF! is reported the same way. Then paste the original formula back, confirm the numbers return, and run the script again to confirm it works.
    7. Put it back. Set A17 to the real minimum you wrote down in step 1 and run the script once more. If your real forecast is below that minimum, the alert stays active; an email is sent only if the flag is not already set.

    Schedule the Script So It Runs Without You

    A script that you have to run by hand isn’t an alert. Set a trigger so Google runs it on a schedule:

    1. In the Apps Script editor, click the Triggers icon (the clock) on the left.
    2. Click Add Trigger (bottom right).
    3. Under “Choose which function to run,” pick checkCashAlert. Leave the deployment on Head.
    4. Change “Select event source” from its default, From spreadsheet, to Time-driven. Set the type of time-based trigger to Day timer and the time of day to 6 am to 7 am. The time zone appears under that choice, for example (GMT-04:00).
    5. Under “Failure notification settings,” change Notify me daily to Notify me immediately, so a run that stops with an error reaches you.
    6. Click Save.

    Google runs the script at some point inside the window you pick and keeps that time consistent from day to day. The window follows the script project’s time zone, which you can see in the trigger dialog and change under Project Settings, in the Time zone box. Your spreadsheet has its own time zone, and the two can differ. The alert email shows the week’s date in the spreadsheet’s time zone.

    A trigger runs as the account of the person who created it. Create it from the account that should own the alert, and recreate it if that person leaves.

    A once-daily check has a blind spot. If a breach starts and ends between two checks, you won’t hear about it. You can add an On Edit trigger to run the check whenever someone changes a cell by hand. It responds to edits made by people, not to changes made by scripts or other programs, and the lock keeps the two triggers from sending duplicate emails. This script checks the cash minimum only; it isn’t a general tool for alerting on text statuses.

    Keep Alerts from Becoming Noise

    Three habits keep an alert useful.

    Latch the alert. The script above sends an email only when the number crosses into a problem, and stays quiet until it recovers. A script that emails every morning while the number stays low trains you to ignore it. The limit of the latch is that cash can keep falling after the first email without a second one, until it recovers above the minimum and falls again. Name one person who owns the follow-up, and what they do when the email arrives.

    Choose the line for the right reason. A cash minimum isn’t a statistical band. Set it from what’s coming: the payroll and fixed payments due in the next few weeks, and how quickly you could collect or borrow if you needed to. For performance numbers such as inquiries or conversion rate, a different rule works. Look at how much the number has moved over the last six to twelve months, treat movement inside that range as ordinary, and set the line outside it. Do this for each number separately, because each moves differently.

    Mind your limits. Google caps how many email recipients an account can send to in a day: 100 on a personal Gmail account and 1,500 on a Google Workspace account, according to Google’s Apps Script quotas, which can change. A morning check that emails one person uses one recipient. These limits are shared across everything the account does with Apps Script, and trial accounts can have lower limits.

    When the Alert Doesn’t Arrive

    A missing email doesn’t prove the numbers are fine. Check these in order:

    • The trigger exists. Open the Triggers page in Apps Script and confirm the entry is there.
    • The script ran. Open the Executions page and look for a run at the expected time. Each row shows whether it was started from the editor or by a time-driven trigger, and whether it completed or failed. A run that stopped on bad data shows as Failed, with the error message the script threw, such as which cell isn’t a number.
    • The names still match. If you renamed the tab or moved the rows, the script stops with an error. Update the references.
    • The sheet has errors, blanks, or text where numbers or dates belong. The script stops and doesn’t email. Fix the cells it names.
    • The email went to spam. Check the spam folder, then mark the message as not spam.
    • The flag is stuck. If the script thinks it already alerted, it stays quiet until the forecast recovers. You can see the flag under Project Settings, in the Script Properties list: CASH_ALERT_ACTIVE with the value true. To reset it, set A17 to your lowest ending cash or below, run the script once, then restore A17 (steps 2 and 7 of the test above).

    When Paid Automation Tools Are Worth It

    Native tools cost nothing, so use them until they stop being enough. Paid automation services make sense when one event has to update several apps at once, such as texting a manager, creating a CRM record, and posting to a team channel. They also make sense when non-technical people have to build and change rules themselves, or when your volume goes past the daily email limits. Prices change, so check current plans before you commit. How much a small business should spend on data tools covers the spending decision.

    Frequently Asked Questions

    Can I set up Google Sheets alerts on a personal Gmail account?

    Yes, with notification settings (Method 1) and Apps Script (Method 4). Conditional notifications are limited to certain work or school accounts. On a work account, your administrator may restrict scripts.

    Do the alerts work when the sheet is closed?

    A time-driven script trigger runs on Google’s servers whether or not you have the sheet open. Notification settings email you about changes other people make while you’re away.

    Does this cost anything?

    No. Notification settings, conditional formatting, and Apps Script are included with your Google account. They do have limits: you have to authorize the script, Apps Script has daily quotas and runtime limits, and a work account can be restricted by an administrator.

    Do I need to know how to code?

    Not to use this script. You change four things (tab name, ranges, email, trigger) and test it. If you change the layout of your sheet later, update the references too.

  • How to Build a Cash Flow Tracker in Google Sheets

    Build a cash flow tracker as a 13-week grid with one column per week, Monday through Sunday. Each column holds beginning cash, cash coming in, cash going out, net cash flow, and ending cash, and each week’s ending cash becomes the next week’s beginning cash. Start from a real bank balance, enter when you expect money to arrive and leave, and the sheet estimates your balance week by week for the next quarter. It shows which week looks tight while you still have time to act.

    Why a Profitable Month Can Still Leave You Short of Cash

    If your books use accrual accounting, your profit and loss statement records revenue when you earn it, and your bank account changes only when money moves. (Cash-basis books record revenue when it arrives, but cash timing still drives the balance.) The gap between profit and cash is where most cash problems start:

    • A customer invoice counts as revenue when you earn it and may not be paid for 30, 45, or 60 days.
    • Inventory and materials can leave your account before the cost shows up in your books, depending on how your books treat inventory.
    • Loan principal payments and owner draws reduce your cash, and neither is an operating expense on the P&L.
    • Payroll, payroll taxes, and other business tax payments go out on fixed dates that have nothing to do with when customers pay. They need dated entries in the tracker; however, your books record them.

    Accounting software tells you what already happened. A cash flow tracker looks forward and estimates your balance from the timing you enter.

    It also makes collections visible. The most reliable fix for slow payers is contact before an invoice is late: set up receivables so reminders go out, or someone talks to the customer, so you know what will lag and aim to keep invoices from drifting past 60 days. The tracker shows what’s left after you’ve done that.

    Why 13 Weeks

    Thirteen weeks is roughly one quarter, and it’s a common horizon in professional cash forecasting. It’s far enough out to see a problem while you can still act on it. The nearer weeks are easier to estimate and easier to correct each week; the further ones are rougher, which is why you refresh the sheet every week. Weekly columns match how cash moves: payroll, rent, and vendor payments land on specific days within specific weeks.

    Set Up the Sheet

    If you’d rather start from a finished version, copy the template, which has the layout, formulas, and color rules already built with made-up example numbers. To build it yourself, open a blank Google Sheet. Put labels in column A and the 13 weeks in columns B through N. Each column covers one week from Monday through Sunday. Enter every amount as a positive number; the formulas do the subtracting. Use these rows:

    RowColumn A labelWhat goes in each week
    1Week startingThe Monday date
    2Beginning cashLast week’s ending cash
    3Customer paymentsInvoices you expect to be paid that week
    4Card and online salesDeposits you expect from your processor
    5Other cash inAnything else that lands in the bank
    6Total cash inSum of rows 3 to 5
    7Payroll and payroll taxesWages, taxes, and benefits
    8Rent and utilities
    9Vendors and inventoryBills you plan to pay that week
    10Loan and tax paymentsPrincipal, interest, and business tax payments due
    11Owner draws and discretionary purchasesMoney you can choose to move
    12Total cash outSum of rows 7 to 11
    13Net cash flowCash in minus cash out
    14Ending cashBeginning cash plus net cash flow

    Then enter these formulas:

    1. B1: type the date of this week’s Monday. In C1 enter =B1+7 and copy it across to N1.
    2. B2: type your bank balance as of the start of that Monday, meaning the balance after Sunday’s transactions have cleared. In C2 enter =B14 and copy it across to N2. That link carries each week’s ending cash into the next week.
    3. B6: =SUM(B3:B5)
    4. B12: =SUM(B7:B11)
    5. B13: =B6-B12
    6. B14: =B2+B13
    7. Copy B6 and B12 through B14 across to column N.

    Type your minimum cash level in cell A17, with the label “Minimum cash” in A16. The next section explains it.

    If you start in the middle of a week, use your current bank balance in B2 and enter only the money that moves after that moment in the first column. Counting a transaction that has already cleared would count it twice.

    Fill In Cash In by When the Money Lands

    Enter each receipt in the week the money reaches your bank, not the week you send the invoice. If a customer on 30-day terms usually pays on day 45, put the payment in the week that contains day 45. Use how each customer actually pays; their terms only show when they’re supposed to.

    For card and online sales, look at the last eight to thirteen weeks of deposits in your bank export and use a typical week, adjusted for anything you know is coming. The business data you already have includes those exports. For retainers and recurring billing, use the billing date plus however long the money takes to settle.

    When you’re unsure about a payment, put it a week later. An early payment costs you nothing, while an assumed one that doesn’t show up can hide a shortfall.

    Fill In Cash Out by When It Leaves

    List each payment in the week it will leave the account. Include the items that don’t appear as operating expenses on the P&L: loan principal and owner draws. Those are the ones that make a profitable business feel short. Business tax payments and payroll taxes belong in the grid on their due dates, however your books record them.

    Rows 10 and 11 keep two kinds of payments apart. Row 10 holds payments you owe on a schedule: loan payments and tax payments. Payroll and payroll taxes in row 7 and rent in row 8 are also fixed. You generally can’t move any of these on your own. A vendor bill in row 9 moves only if the vendor agrees. Row 11 holds the money you can choose to delay, such as an owner draw or a purchase you can postpone. When a week turns red, row 11 is the first place to look.

    Set a Minimum Cash Level and Let Color Warn You

    Pick a floor: the lowest balance you’re comfortable seeing. One starting point is enough to cover two payroll runs. Set yours by how quickly you could collect or borrow if you needed to. Enter the number in A17.

    Then add two color rules to the Ending cash row:

    1. Select B14:N14 and open Format > Conditional formatting.
    2. Choose “Custom formula is” and enter =B14<$A$17. Set the fill to red.
    3. Add another rule with =AND(B14>=$A$17, B14<1.5*$A$17). Set the fill to yellow.

    Red means projected cash at the end of the week is below your floor. Yellow means it’s within 50% above it.

    What the Colors Can’t See

    These rules check each week’s ending balance only. A week can end above your floor and still dip below it in between. Say a week starts at $34,000 and your floor is $30,000. Payroll takes $15,000 out on Tuesday, and an $18,000 customer payment arrives on Friday. The Tuesday balance is $19,000, which is $11,000 under the floor, but the week ends at $37,000 and shows yellow rather than red. The weekly color does not reveal how low cash fell on Tuesday.

    For any yellow week, and any week with a large payment before a large receipt, list the dated payments and receipts for that week on a separate tab, or build a day-by-day view, before you schedule payments. The weekly grid shows you where to look.

    A Worked Example

    The numbers below are made up. A business starts week 1 with $42,000 in the bank and sets its minimum at $30,000. It pays $15,000 in payroll and taxes every other week, and rent of $8,000 comes out in weeks 1 and 5.

    Wk 1Wk 2Wk 3Wk 4Wk 5Wk 6
    Beginning cash$42,000$34,000$43,000$34,000$39,000$24,000
    Total cash in$18,000$15,000$13,000$14,000$12,000$11,000
    Total cash out$26,000$6,000$22,000$9,000$27,000$5,000
    Net cash flow-$8,000$9,000-$9,000$5,000-$15,000$6,000
    Ending cash$34,000$43,000$34,000$39,000$24,000$30,000

    Week 5 turns red. Payroll and rent land in the same week while cash in is the lowest it’s been, and the balance ends $6,000 under the minimum. Standing in week 1, that’s four weeks of notice. Weeks 1 through 4 and week 6 are yellow, and week 6 sits exactly on the floor.

    Four weeks is enough to do something, and the sheet shows what each change does. Asking a vendor to move a $4,000 bill from week 5 to week 6 lifts week 5 to $28,000, which is still $2,000 short. Week 6 falls to the same $30,000 as before, because the bill was delayed, not removed. Pairing the delay with a $2,000 customer payment that you pull in from week 6 to week 5 brings week 5 to exactly $30,000. Nothing in the P&L would have flagged this.

    Update It Every Week

    Pick Monday morning. It takes about 15 minutes, and Monday is when last week is over, and your opening balance is clear.

    1. Duplicate the tab and rename the copy with the date. You’ll use the copies later to compare what you forecast with what happened.
    2. In the live tab, delete the column for the week that just ended (right-click column B, then Delete column). The dates, beginning cash, and ending cash rows will show #REF! across the sheet until you finish the next step.
    3. Type this week’s Monday date in B1 and the bank balance at the start of that Monday in B2. The errors clear, and every week recalculates.
    4. Copy the last column into the next one to add a new week 13. The color rules come along with the pasted column. Then update its amounts.
    5. Revise the next four to eight weeks with whatever you’ve learned: paid invoices, new bills, changed plans.
    6. Look at the colors. If a week is red or yellow, pick one action and a date to take it.

    If you update midweek, don’t delete the current week. Change the amounts you now know and leave the structure alone.

    Mistakes That Make a Cash Flow Tracker Useless

    • Using invoice dates instead of payment dates. This is the most common one. It makes the forecast look healthier than your bank account will.
    • Leaving out cash that never touches the P&L. Loan principal and owner draws are the usual ones.
    • Counting a transaction twice. If you start from today’s bank balance, leave out the money that has already moved.
    • Not updating it. A tracker you refresh every week is worth more than a detailed one you rebuilt once.
    • Treating the forecast as exact. Round to the nearest hundred. The goal is to see which week gets tight, not to predict the penny.

    How Long to Stay in a Spreadsheet

    Stay in Google Sheets until it stops being enough. A sheet like this handles a small business well, and Google Sheets supports several people editing the same file, so shared access alone is no reason to leave. Look at other tools when you hit a specific problem the sheet doesn’t solve, such as pulling bank and accounting transactions in automatically across many accounts or entities, or meeting review and control requirements that a shared spreadsheet can’t. Until then, a disciplined sheet you update every week will do more than software you don’t use.

    Color alone won’t email you. If you want a message when a week goes red, that’s a separate setup. It needs Google’s conditional notifications, which are available only on certain work or school accounts, or a short Apps Script, and both have limits.

    Frequently Asked Questions

    Does a cash flow tracker replace my accounting software?

    No. Accounting software records what happened and produces your P&L and balance sheet. The tracker looks forward at cash timing. You use your accounting records to fill it in.

    How accurate does the forecast need to be?

    Accurate enough to tell you which weeks are tight. Round amounts, put uncertain receipts later, and update weekly. The weeks closest to today will be the most reliable.

    Do I need a template?

    No. The layout above takes about 45 minutes to build, and building it yourself means you know what every row does. If you’d rather not, copy the template and replace the example numbers with yours.

  • How to Track Where Customers Came From for Free

    You can learn where customers come from without paying for attribution software. Use four pieces together: tagged campaign links (UTM parameters) on external links you control, and the referrer and channel reports in the analytics tool you already have. Add a “How did you hear about us?” question on your contact form and in your first conversation, and keep one spreadsheet that records each lead’s source next to its eventual value. The tags and reports provide partial evidence about digital visits. The question can reveal word of mouth and context software misses. The spreadsheet connects those clues to sales records.

    That’s the setup I use: tagged links, the referrer reports in my analytics tools, and a “how did you hear” question. Below is how to set each piece up, how to reconcile them when they disagree, and how to turn the results into decisions.

    Why Expensive Attribution Software Rarely Fits a Small Business

    Attribution software tries to credit each sale to every ad, email, and page visit that led to it. It’s built for businesses with large ad budgets and thousands of transactions a month, where small percentage shifts in spend are worth modeling.

    A small business often has too few comparable sales across channels to justify complex attribution modeling, especially when its sales cycle is long. There is no universal customer-count cutoff; the useful sample depends on the decision and how much data each channel produces. Customers may also arrive through channels software can’t see: a recommendation at dinner, a podcast mention, or a forwarded email. Privacy settings, ad blockers, and people switching between phone and laptop break the trail further.

    My view is to stay on free tools for as long as they cover what you need. For customer sources, they can cover the first useful decisions. Paying for a platform before you’ve tried a disciplined free routine may buy a more expensive version of the same blind spots.

    Piece 1: Tag the Campaign Links You Control

    A UTM parameter is a label added to the end of a web address. When someone clicks the link, your analytics tool reads the label and records where the visit came from. Nothing changes for the visitor; they land on the same page.

    A tagged link looks like this:

    https://example.com/services?utm_source=newsletter&utm_medium=email&utm_campaign=2026_10_newsletter

    Three tags are enough:

    TagWhat it recordsExamples
    utm_sourceWho or what sent the visitnewsletter, linkedin, x, chamber_directory
    utm_mediumThe type of channelemail, social, referral, cpc, print
    utm_campaignThe specific effort2026_10_newsletter, fall_workshop

    Google’s free Campaign URL Builder assembles the link for you: paste the page address, fill in the three fields, and copy the result. Most email tools and link shorteners can also add tags automatically.

    Naming rules that keep the data clean

    • Use lowercase everywhere. Analytics tools treat LinkedIn and linkedin as two different sources, and your report splits in half.
    • Pick underscores or hyphens and use the same one everywhere, never spaces. fall-workshop and fall_workshop are reported as different campaigns.
    • Use standard medium names like email, social, cpc, and referral. GA4 uses the medium to sort visits into channels, and a made-up value like newsletter_blast can land in “Unassigned.”
    • Keep a list. One tab in a spreadsheet with every tagged link, the date, and what it was for. When three people create links, the list is what keeps x from becoming twitter and X_posts by spring.
    • Don’t tag links between pages of your own site. Internal UTM tags can distort campaign or source attribution; they are meant for incoming campaigns.

    Where to use them: newsletters, social posts and profile links, directory listings or partner links you manage, email signatures, and ads where manual tags make sense. Tag external campaign links you control; search results, independent editorial links, and links you cannot edit are outside this routine.

    Piece 2: Read the Referrer Reports You Already Have

    Tagged links only cover links you created. Your analytics tool may record a referring website or app for other visits when the referrer is passed and tracking is allowed. Referrer reports are useful, but they do not identify every source.

    • In GA4: Find the Traffic acquisition report (under Reports → Acquisition in the Life cycle collection). Change the dimension to Session source / medium to see individual sources, or Session campaign to see your tagged campaigns. Other report collections can place it elsewhere.
    • In privacy-focused tools like Umami or Plausible: the referrers or sources panel on the main dashboard, with UTM values usually shown alongside.

    Two things to know about referrer data:

    1. “Direct” is partly a catch-all. It includes people who typed your address, but also visits where the tool couldn’t tell the source, such as links in some messaging apps, documents, and email clients. A large “Direct” number means some of your sources are hidden, not that everyone already knew you.
    2. It shows the last step, not the story. Someone who read your article in March, forgot about it, and searched your name in May shows up as organic search or direct. The analytics are correct about the click and silent about why they came back.

    That second gap is why the next piece matters.

    Piece 3: Ask Customers How They Heard About You

    No tracking code sees a conversation over coffee, a recommendation in a group chat, or a podcast mention. The customer knows. Ask them.

    On the contact form

    Add one field: “How did you hear about us?” Make it an open text box, and make it optional so it doesn’t cost you inquiries.

    An optional open-text field can capture more detail than a fixed dropdown. It also takes time to classify consistently, so choose the format that your team will actually review. A long list of vague options (“Social media,” “Search engine,” “Friend”) can hide a useful name or story.

    • A dropdown records “Social media.” Open text records “Saw your post about month-end reports on LinkedIn, then looked you up.”
    • A dropdown records “Referral.” Open text records “My accountant, Priya, said you’d sorted out her client’s reporting.”

    The second version tells you which post worked and which relationship to thank.

    In the first conversation

    Ask again, in person or on the call, even if they filled in the form: “Before we start, who can we thank for sending you our way?” People often give a fuller answer out loud, and phone inquiries never touch the form at all. If whoever answers the phone doesn’t ask, phone leads have no source.

    Piece 4: One Spreadsheet That Ties Sources to Revenue

    Website analytics generally stops before the final sale. Revenue lives in your sales records. The spreadsheet is where the two meet. A shared Google Sheet or Excel file is enough; a CRM you already pay for works too.

    One row per lead, with these columns:

    ColumnWhat goes in it
    DateWhen they first reached out
    LeadName or company
    Recorded sourceWhat the analytics or UTM tag says (e.g., newsletter / email, google / organic, (direct))
    Stated sourceWhat they told you on the form or the call
    Credited sourceYour decision, from a short fixed list (see below)
    StatusOpen, won, or lost
    ValueContract or first-order value, once known

    The recorded source is the column that needs a deliberate setup. Analytics tools show UTM tags in aggregate reports, not next to an individual lead’s name. If your form tool supports hidden fields, it can pass the UTM values from the page address into the notification email or CRM entry, which fills this column automatically. If it doesn’t, leave the column blank and rely on the stated source rather than guessing.

    Keep the credited source list short so the monthly totals mean something. For most service businesses, five categories are enough: website and content, referrals and word of mouth, direct outreach, partners and community, and paid ads.

    When recorded and stated sources disagree

    They often will. Treat the customer’s answer as one clue about why they remembered you and analytics as one clue about the visit path. Neither is a complete causal history.

    • Recorded source: (direct) / (none)
    • Stated source: “Read your article on dashboard mistakes a few weeks ago, then typed your name in.”
    • Credited source: website and content. The article started it; the direct visit was just how they came back.

    When there’s no stated source, use the recorded one as a working classification. When neither exists, mark it “unknown” rather than guessing. Recorded and stated sources are clues, and a customer’s memory can also be incomplete. Your credited-source column is a consistent management judgment, not proof that one channel caused the sale. A growing “unknown” count is a prompt to check whether the question is being asked and recorded.

    If your inquiries arrive by email, phone, and form, you probably already have most of this information scattered across your inbox and invoicing system. The business data you already have covers pulling it together.

    Tracking Offline Sources for Free

    Print, events, signs, and phone calls need a little more setup, but none of it costs money.

    • A memorable redirect. Set up a short address like yourfirm.com/workshop that forwards to a tagged link (?utm_source=fall_workshop&utm_medium=print). Most website platforms can create redirects without a developer. Put the short address on the flyer or slide, and test it first: open it in a private browser window and confirm the tag is still in the address bar after it forwards.
    • QR codes pointing to tagged links. Static QR codes are free to generate. Test the code before printing, and point it at a page on your site so you control where it goes.
    • A standard phone question. Whoever answers asks the same “who can we thank?” question and records the answer in the spreadsheet.

    The Monthly Source Review

    Once a month, filter the spreadsheet to that month’s leads and total them by credited source: how many leads, how many won, and how much revenue.

    Credited sourceLeadsWonRevenue
    Referrals and word of mouth53$13,500
    Website and content72$6,000
    Partners and community21$4,000
    Paid ads40$0
    Unknown20$0
    Total206$23,500

    Before changing a channel, look at how many leads and sales you actually have, how long they take to close, and what that channel costs in money and time. A month may be enough to spot a broken tracking link but too little to judge a long sales cycle. Choose a review window and a time or spending limit in advance; if a source still produces no useful leads over that window, investigate whether to change or pause it.

    Put the headline numbers on your monthly scorecard: leads and won revenue by source. Keep the underlying recorded and stated sources available so you can revisit a classification when new information appears.

    Free Source-Tracking Checklist

    • External campaign links I control carry consistently named, lowercase UTM tags.
    • I keep a list of tagged links and their naming conventions.
    • I check source / medium or referrer reports monthly.
    • My contact form has an optional, open-text “How did you hear about us?” field.
    • Whoever takes calls asks the same question.
    • Every lead goes in one spreadsheet with recorded, stated, and credited sources.
    • Won deals have a value recorded.
    • I review leads and revenue by source monthly and decide quarterly.

    Frequently Asked Questions

    What are UTM parameters?

    Labels added to the end of a link that tell your analytics tool where the click came from. The three that matter are source, medium, and campaign.

    Do UTM tags affect SEO?

    Not when you use them on links you share elsewhere. Don’t use them on links between your own pages.

    What if customers don’t answer the “how did you hear” question?

    Some won’t. Keep it optional, ask again in the first conversation, and fall back on the recorded source. Mark the rest “unknown” and watch whether that count is growing.

    Is a dropdown ever better than open text?

    When you have a large number of inquiries and need clean categories automatically. Even then, add an “Other (please specify)” option. For most small businesses, open text plus your own credited-source column works better.

    When is paid attribution software worth it?

    When you make repeated budget decisions across several channels, have enough conversion data to evaluate the model’s output, and the expected benefit exceeds the software and operating cost. Test whether the tool answers a decision your free routine cannot.

  • Google Analytics 4 Explained for Business Owners

    Google Analytics 4 (GA4) organizes the interactions your tag is configured to collect as events: page views, certain scrolls and clicks, and form submissions when those events are captured. Most of its interface can wait. Start with Traffic acquisition (where visits came from), Pages and screens (what people viewed), and a check that your most valuable actions are recorded as key events. Key events are a setting and metric used across reports, not a separate report.

    Those are the GA4 views and key-event numbers I check on johnserra.com. The rest of this guide explains how GA4 counts things, where to find the reports in a common menu layout, how to test tracking, and what you can safely skip. The examples use a made-up bookkeeping firm, not a real site.

    Why GA4 Feels Confusing

    If you used the older version of Google Analytics (Universal Analytics, whose standard properties stopped processing data on July 1, 2023, with historical access ending in 2024), you may remember reports built around sessions and pageviews. You opened it, and a dashboard told you how many visits you'd had and which pages they saw.

    GA4 counts differently. Every interaction is an event, and each event has a name:

    • page_view when a page loads
    • scroll when 90% of a page becomes visible, if enhanced measurement is enabled
    • click when someone follows a link to another website
    • form_submit for supported form interactions when enhanced measurement catches them; generate_lead is a separate recommended event that you set up

    Google built it this way so websites and mobile apps could be measured in the same system. The cost for a small business is that GA4 is more flexible and less obvious. Reports you'd expect aren't always on the menu, the vocabulary changed, and some of the most visible features are meant for people who analyze data full time.

    The good news is that you need very little of it.

    A Plain-English Translation Table

    What you might call it What GA4 calls it What it means for you
    Visits Sessions A period of activity on your site by one visitor
    Unique visitors Users (or active users) Distinct browsers or devices, not exactly distinct people
    Pageviews Views (the page_view event) A page loaded
    Goals or conversions Key events An action you've marked as valuable, like a form submission
    Where a visit came from Session source / medium, or session default channel group The site, search engine, or campaign that sent the visit
    Bounce rate Engagement rate (bounce rate is its inverse) Share of visits that showed real interest

    Two of these need a closer look.

    Users aren't people. GA4 counts browsers and devices. Someone who visits on a phone at lunch and a laptop that evening can count as two users. Treat user counts as approximate.

    Engagement replaced the old bounce rate. GA4 counts a session as engaged if it lasted longer than 10 seconds, included a key event, or included at least two page views. Engagement rate is the share of sessions that were engaged, and GA4's bounce rate is simply the rest. A visitor who reads one article for three minutes now counts as engaged, which is closer to how you'd judge it yourself.

    Report 1: Traffic Acquisition (Where Did Visitors Come From?)

    Where to find it in the Life cycle collection: Reports → Acquisition → Traffic acquisition. A property using a Business objectives or customized collection may place the same report elsewhere; use the report library or ask an Editor to add it if it is missing.

    This report answers "which sources are sending visitors, and do any of them produce inquiries?" Each row is a channel. The default grouping is called session default channel group, and for a small business the common rows are:

    • Organic Search: unpaid results from Google, Bing, and other search engines
    • Direct: someone typed your address, used a bookmark, or GA4 couldn't tell where they came from
    • Referral: a link on another website
    • Organic Social: unpaid posts on social platforms
    • Paid Search and Email, if you run ads or send newsletters

    The columns that matter are Sessions, Engaged sessions, and Key events.

    The one habit that changes how you read it: sort by key events, not sessions. GA4 sorts by volume by default, so the channel sending the most visitors sits at the top whether or not those visitors ever contact you.

    Last month, Organic Social sent 900 sessions and 2 key events. Referral, mostly from a local business association's member directory, sent 140 sessions and 6 key events. Sorted by sessions, social looks like the winner. Sorted by key events, the directory listing is doing three times the work with a sixth of the traffic.

    "Direct" deserves some skepticism. It includes typed addresses and bookmarks, but also visits GA4 couldn't attribute, such as links in some apps and private messages. If you share campaign links in newsletters or social posts, tag the links you control with UTM parameters so those visits can be identified. A tagged newsletter link looks like https://example.com/services?utm_source=newsletter&utm_medium=email&utm_campaign=october-update. Google's free Campaign URL Builder assembles these for you. Don't add UTM tags to links inside your own site, because that overwrites the original source of the visit.

    Report 2: Pages and Screens (What Did They Look At?)

    Where to find it in the Life cycle collection: Reports → Engagement → Pages and screens. In other report collections, look for Pages and screens by name.

    This report lists every page on your site with its views, users, and average engagement time. It answers "which pages get attention?"

    Read it with two questions:

    1. Are my commercial pages getting seen by the right visitors? A service page can work without ranking near the top by total views. If it gets few views and few inquiries, check whether visitors can reach it from relevant entry pages.
    2. Which pages deserve a closer look? Average engagement time estimates how long the page was in the foreground. Read it alongside the page's purpose and useful actions; low time alone does not show that the headline failed.

    To see which pages people arrive on, rather than every page they view, use the Landing page report (under Reports → Engagement in the Life cycle collection). Its placement may differ in your property. That report can show key events by landing page, so you can investigate which entry pages lead to inquiries.

    Its most-viewed page is an article on year-end payroll deadlines, with 600 views and no key events. Its "Monthly bookkeeping" service page has 90 views and 5 key events. The article may be drawing readers who have no obvious next step. A short line near the end, linking to the service page, is a better use of an hour than writing another article.

    Check 3: Key Events (Did Anyone Contact You?)

    A GA4 setup without useful key events tells you about visits but little about whether visitors took the actions you care about. Key events connect those actions to the acquisition and page reports above.

    What should count as a key event

    For most small businesses:

    • A completed contact form
    • A click on your phone number (tel: link) from a mobile device
    • A booked appointment, if you use a scheduling tool
    • A purchase, if you sell online

    Pick the two or three actions that genuinely lead to revenue. Marking every click as a key event makes the number meaningless.

    How to mark an event as a key event

    1. With Editor access to the property, go to Admin → Data display → Events.
    2. Find the event, such as form_submit or generate_lead.
    3. Mark it as a key event by clicking the star icon next to it.

    This only works for events GA4 is already recording. GA4's enhanced measurement can record some form submissions automatically, but it doesn't catch every form, and phone clicks usually need an extra tag. It can also fire on the wrong thing, such as a search box or newsletter field. Forms embedded from other tools (HubSpot, Typeform, Calendly) or shown in popups often go unrecorded, so they usually need manual event setup.

    If your event isn't in the list, it may simply not have fired yet, so run the test in the next section first. If it still doesn't appear, the setup is incomplete, and whoever built your site or manages your tags needs to add it.

    A common fallback is a "thank you" page after the form. Don't mark page_view itself as a key event, because that would count every page load. Instead, create a new event under Admin → Data display → Events → Create event that fires only when the page location contains your thank-you page's address (for example /thank-you), and mark that new event as the key event.

    Marking a key event only counts from that day forward. It doesn't backfill earlier data, so set it up before you judge results.

    Where to see them

    Once marked, key events appear as a column in Traffic acquisition and the Landing page report, and in the event reports under Reports → Engagement.

    How to Check That Tracking Works in Two Minutes

    Before trusting any of these numbers, confirm GA4 is recording what you think it is:

    1. Open your website in a private or incognito browser window.
    2. In your normal browser, open GA4 and go to Reports → Realtime.
    3. In the private window, submit a test form or tap your phone link on a mobile device.
    4. Watch the Event count by Event name card in Realtime. Realtime typically updates within minutes; allow for a short delay.
    5. Check that the same event shows up as a key event.

    If Realtime is inconclusive, GA4's DebugView (Admin → Data display → DebugView) shows each event as it arrives from a device in debug mode, and Google Tag Manager's preview mode or Tag Assistant can turn that on.

    If nothing appears after several minutes, investigate before concluding that tracking is broken. Confirm you opened the intended property and data stream, check the site's tag and consent state, and see whether an internal-traffic filter hid your test. A phone on mobile data can help test outside an office filter. If the action still does not appear, inspect the event setup.

    Delete or mark your test submission in whatever system receives the form, so it doesn't count as a real inquiry.

    What to Skip

    GA4 has a lot of features that are useful to someone. For most small businesses, these can wait:

    1. Explore. A drag-and-drop workspace for building custom analyses: funnels, paths, free-form tables. It's powerful and meant for analysts. The standard reports answer the owner's questions.
    2. Watching Realtime. It's useful for testing, as above. As a daily habit, watching who's on your site right now is entertaining and rarely changes a decision.
    3. Predictive metrics and audiences. GA4 can predict purchase and churn likelihood, but only when a site has enough purchase and return history to meet Google's minimums, which most small business sites don't.
    4. Monetization reports, unless you sell online. Service businesses don't have the data these reports need.
    5. Demographics and tech details. Browser versions, screen sizes, and age brackets are occasionally useful for a site redesign. They don't belong in a monthly review.

    A Five-Minute Monthly GA4 Check

    Once a month:

    1. Set the date range to last month and turn on comparison with the preceding period.
    2. Open Traffic acquisition and sort by key events. Note total key events and the top three channels by key events.
    3. Open the Landing page report. Check that your main service pages and best articles are still bringing in engaged visits and key events.
    4. Copy the numbers onto your scorecard. My rule is four to seven metrics, depending on the business, and none that don't move the needle. Choose website numbers that support a decision rather than copying every GA4 card.
    5. Close GA4 until next month, unless you're testing a specific change.

    If your scorecard lives in a spreadsheet, how to build a monthly KPI scorecard shows a layout that holds website numbers alongside the rest of the business.

    Do You Need GA4 at All?

    GA4 is free, detailed, and the default choice. It's also complicated, and it sets cookies, which may mean a consent banner depending on where your visitors are. Simpler privacy-focused tools like Umami and Plausible show pages, sources, and events with far less to learn, and I use Umami on a second site. What matters is that whatever tool you use can show three things: where visitors came from, which pages they landed on, and whether they contacted you.

    If you're using GA4 already, start with the two reports and key-event check above. It costs nothing to use the standard product, and staying with a tool that covers your needs is usually the right call for a small business.

    Frequently Asked Questions

    What happened to conversions in GA4?

    Google renamed them key events in 2024. The term "conversions" now refers to key events used in Google Ads. For your own website reporting, key events are what you want.

    Does GA4 still have bounce rate?

    Yes. GA4 defines bounce rate as the share of sessions that weren't engaged, the opposite of engagement rate. You can add it to reports, but engagement rate tells you the same thing.

    Why don't my GA4 numbers match my other tools?

    Different tools count visitors and sessions differently, ad blockers and consent choices hide some visits from GA4, and each tool handles bots its own way. Use each tool's numbers consistently over time rather than trying to make them agree.

    How long does GA4 keep my data?

    Standard reports keep aggregated data. Explorations are limited by a data retention setting (Admin → Data collection and modification → Data retention) that defaults to two months. Change it from 2 months to 14 months, the longest option in a standard property, if you might use Explore later. The setting doesn't affect standard reports.

    Do I need Google Tag Manager?

    Not for the basics. The GA4 tag and enhanced measurement cover page views, scrolls, outbound clicks, and some form submissions. Tag Manager helps when you need events GA4 doesn't collect on its own, such as phone clicks or a form that enhanced measurement misses.

  • Which Website Metrics Matter for a Small Business

    It depends on what the website is for. If it exists to bring in inquiries, track six measures: inquiries, conversion rate by traffic source, the landing pages that lead to inquiries, engaged visits to commercial pages, cost per inquiry, and page speed. If people use your product on the site, swap the inquiry-specific measures for activation, drop-off, and return rates. Pageviews, impressions, and site-wide time on page can leave the monthly review.

    Six isn’t a magic number. My rule for any business scorecard is four to seven metrics, depending on the business, and no vanity metrics: each one has to move the needle. Website analytics is where that rule gets broken most often, because the tools show you everything by default.

    Why Most Default Analytics Reports Don’t Help

    Analytics tools are built to serve every kind of website, from a local accounting firm to a national retailer with a marketing department. So they show everything they can collect: users, sessions, pageviews, events, devices, cities, browsers, screen resolutions. None of it is wrong. Most of it doesn’t help a small business decide anything.

    The useful distinction is between two kinds of numbers:

    • Vanity metrics look good in a report and require no action. Pageviews went up 12%. Great. What do you do differently on Monday?
    • Commercial metrics track inquiries, customers, and the cost of getting them. When one moves, someone has a reason to act.

    The cost of watching the wrong numbers is quiet. A business can spend months redesigning pages to raise time on site while inquiries slide, and nobody notices because the report everyone looks at went up. The test I use on any metric is whether it helps the business make more revenue, run more efficiently, or cut costs. If it does none of those, it comes off the scorecard.

    If you haven’t looked at what your site already records, start there. Contact form submissions, booking confirmations, and phone logs usually exist before anyone opens an analytics tool. The business data you already have covers how to find them.

    What I Track on My Own Two Sites

    I run two sites that do different jobs, and I’ve only just started measuring both. What follows are the metrics I’m setting up, not results.

    johnserra.com is meant to generate inquiries. It uses GA4. I’m tracking two things: the share of visitors who complete a high-intent action (an assessment or the contact form), and where qualified visitors come from, split by referral and search and broken down by page.

    CareerTalkLab is a product. It’s a community whose members learn from and teach each other to advance in data and software careers, and I measure it with Umami. I’m tracking the share of visitors who start a lesson, completion and drop-off by module, and how many new learners come back on Day 7 and Day 30.

    Both sites get one technical metric: how long the slowest page loads and server responses take, measured at the 95th percentile.

    Those are target measures across two sites, not a combined scorecard or a claim that I already have results. The lists differ because the sites do different jobs. An inquiry site succeeds when a stranger reaches out. A product site succeeds when someone starts using it and comes back. Start with what your site is for, then pick four to seven measures for that site; a generic list of “top website KPIs” skips that step.

    The Five Metrics for a Site That Brings in Inquiries

    1. Key Conversion Actions

    A conversion is an action that moves a stranger into your sales pipeline. Count those, not visits. What counts depends on the business:

    • Professional services and consulting: completed contact forms, booked discovery calls, clicks on your email address.
    • Local trades and service businesses: click-to-call taps, quote requests, requests for directions.
    • Online stores and software: purchases, checkout starts, free trial signups.

    In GA4, you mark these actions as key events (Google’s current name for what it used to call conversions). Other tools call them goals or conversions. If you track nothing else on your website, track the total number of these actions each month and compare it with a target.

    2. Conversion Rate by Traffic Source

    Your overall conversion rate blends every source together and hides where buyers come from. Split it by channel:

    • Organic search: people who found you on Google or Bing, often while describing a specific problem.
    • Direct: visits with no identifiable source. This can include typed addresses and bookmarks, but also links from apps or messages that pass no referrer.
    • Referral: visitors from other websites, such as directories, associations, and partners.
    • Social: visitors from platforms like X or LinkedIn. These often bring attention more than inquiries.
    • Paid: ad clicks, if you run ads. These need the tightest tracking because you pay for every visit.

    Then compare. Here is an example with made-up numbers. A source that sends 500 visits at a 4% conversion rate produces 20 inquiries. A source that sends 5,000 visits at 0.1% produces 5. The smaller source is worth four times as much, and it’s the one a traffic report makes look minor.

    Source data from analytics tools is incomplete. Ad blockers, consent choices, and people who switch devices can break the trail. A “How did you hear about us?” field on your contact form fills some gaps, and tagging campaign links you control with UTM parameters helps identify those visits.

    3. Top Converting Landing Pages

    Visitors can arrive through your homepage, a service page, an article, or a guide. Your landing pages are the entry points; find which ones actually lead to inquiries rather than assuming the homepage does all the work.

    Check two things each month:

    • Which pages bring in the visitors who go on to convert?
    • Does each high-traffic page give visitors a clear next step: a form, a phone number, or a link to the relevant service?

    The common problem is a popular article with no conversions. It brings in the right readers and gives them nowhere to go. The fix is usually a clear next step near the top and bottom of the page, or a link to the service it relates to.

    4. Engaged Visits to Commercial Pages

    Raw traffic mixes useful visits with accidental clicks and visits that end quickly. Engagement is a helpful filter, but it cannot tell you by itself whether a visitor was a qualified buyer or even rule out automated traffic.

    GA4 counts a session as engaged if it lasts longer than 10 seconds, includes a key event, or includes two or more page views. Engagement rate is the share of sessions that meet that bar. Privacy-first tools like Umami don’t use the same definition, so there the practical measure is unique visitors to your commercial pages: services, pricing, about, and contact.

    A large traffic spike with almost no engagement is worth investigating. Check its sources and conversions before calling it a marketing win or deciding what caused it.

    5. Cost per Inquiry

    A website costs money and time. Measure what each inquiry costs you:

    Cost per inquiry = (monthly spend on the site and its marketing + hours spent × your hourly rate) ÷ inquiries that month

    Here’s an example with made-up numbers: a firm spends $200 a month on hosting, tools, and a small ad budget, and someone spends 6 hours a month on content at $50 an hour. That’s $500. With 20 inquiries, each costs $25. If the same firm spent $500 and got 2 inquiries, each would cost $250, and that’s a reason to look at whether the time would go further on direct outreach.

    Count inquiries, not every form submission. Spam and job applicants through the contact form will make the site look cheaper than it is.

    If Your Website Is the Product

    For software, online courses, memberships, and tools, an inquiry isn’t usually the goal. Someone using the product is. Keep two measures from the inquiry scorecard—valuable conversion actions and traffic source—then replace the landing-page, engagement, and cost-per-inquiry measures with:

    • Activation rate: the share of new visitors who take the first real product action, such as starting a lesson, creating a project, or running a first report.
    • Drop-off by step: where people stop in a sequence, whether that’s a course module, an onboarding step, or a checkout page.
    • Cohort return rate: of the people who signed up in a given week, the share who come back on Day 7 and Day 30.

    With speed, that is a six-measure product-site starting scorecard. These are the kinds of measures I’m setting up for CareerTalkLab. They answer the question a product site actually has to answer: do people who arrive start using it, and do they keep using it?

    The Metric Every Site Needs: Speed

    A slow page loses visitors before any other metric has a chance to count them. Measure the slow end, not the average. The 95th percentile (P95) is the time within which 95% of page loads finish. An average of 1.5 seconds can hide a meaningful share of visitors waiting six.

    You don’t need paid tools to start. Google’s PageSpeed Insights and the Core Web Vitals report in Search Console are free and show real-user field measurements when a page or site has enough data. Google reports those values at the 75th percentile, not P95, but for most small business sites that is a good enough place to start. If speed turns out to be a real problem, a real-user monitoring tool can report P95 directly.

    The Cut List: Metrics to Stop Reviewing Every Month

    These don’t need to be deleted from your analytics tool. They just don’t belong on the scorecard you review.

    1. Raw pageviews. Refreshes, back-button clicks, and multi-page wandering inflate them. More pageviews don’t mean more business.
    2. Bounce rate, by itself. Under the old Google Analytics definition, a visitor who read a whole page, found your phone number, and called still counted as a bounce. GA4 now defines bounce rate as the share of sessions that weren’t engaged, which is better, but engagement rate and conversions tell you the same thing more directly.
    3. Site-wide average time on site. Tabs left open and one long visit can skew it, and a longer visit isn’t better if the visitor couldn’t find what they needed.
    4. Social impressions. How many people saw a post on another platform says little about whether they visited your site, let alone contacted you.
    5. Keyword rankings in isolation. Ranking first for a phrase nobody searches, or one that attracts people who will never buy, produces nothing. Rankings matter only when they bring engaged visitors to pages that convert.

    A 15-Minute Monthly Website Review

    Once a month, with your scorecard open:

    1. Record conversions for the prior month against your target.
    2. Check conversion rate for your top three traffic sources. Note any that changed sharply.
    3. Find the top converting landing page and the page with the most engaged visits but the fewest conversions.
    4. Check speed on your two or three most important pages.
    5. Write down one action, with a name and a date. “Add a consultation link to the top article, Sam, by the 15th.” “Fix the phone link that doesn’t work on mobile.”

    The last step is the one that makes the review worth doing. A monthly number nobody acts on is just another report. How to get your team to actually use your reports covers how to run that conversation so the action happens.

    If you use GA4, its Traffic acquisition, Landing page, and event reports can help with this review. Check that the actions you count as inquiries are actually recorded.

    Website Metrics Checklist

    • I know what my website is for: inquiries, sales, or product use.
    • I track the actions that matter as conversions or key events.
    • I can see conversion rate by traffic source, not just overall.
    • I know which landing pages bring in converting visitors.
    • I review engaged visits, not raw traffic.
    • I know roughly what each inquiry costs me.
    • If the site is a product, I track activation, drop-off, and return rate.
    • I check page speed at the slow end.
    • My scorecard has four to seven metrics, and I review it monthly.

    Frequently Asked Questions

    How many website metrics should a small business track?

    Four to seven for each site’s scorecard. An inquiry site can start with the five measures above plus speed. A product site can keep conversions and traffic source, replace the inquiry-specific measures with activation, drop-off, and return, and also watch speed. Cut or combine measures when they don’t lead to a decision. How many KPIs should a small business track explains the wider business-scorecard principle.

    Is bounce rate still important?

    Less than it used to be. GA4 redefined it as the opposite of engagement rate, so looking at both is redundant. Engagement rate and conversions tell you more.

    Do I need Google Analytics?

    No. GA4 is free and detailed, but it’s also complicated. Privacy-first tools like Umami or Plausible are simpler and cover page, referral, and event tracking. What matters is that you can see conversions, sources, and landing pages in whatever tool you use.

    How often should I check website analytics?

    Monthly for the scorecard. More often only when you’re testing something specific, such as a new landing page or a campaign, and you know in advance what number you’re waiting to see.

    What’s a good conversion rate for a small business website?

    It depends on the industry, the offer, and where the traffic comes from, so a generic benchmark won’t tell you much. Your own trailing three-month average is the more useful baseline. Improve against that.

    If you want a second pair of eyes on your scorecard, or help deciding what belongs on it, get in touch.

  • How Much Should a Small Business Spend on Data Tools

    Start with the data tools already included in your office software, and spend more only when a specific reporting problem justifies the added cost. If you use Google Workspace, Sheets and the no-cost version of Looker Studio can cover basic reporting without another software subscription. If you use Microsoft 365, Excel and the free Power BI Desktop can cover local analysis; sharing through the Power BI service usually requires licenses. Pay for more when the likely benefit exceeds the full cost of the change: hours of manual data work every month, reports that arrive too late to act on, or people working from conflicting versions of the same file.

    The rest of this article covers what each level of spending buys and how to tell when you’ve outgrown the level you’re on.

    Why Vendors and Small Businesses See This Differently

    Much of the advice about data tools comes from companies that sell them, and it’s written with larger businesses in mind. A typical recommended setup has four parts: a data warehouse to store everything, a pipeline tool to copy data into it automatically, a transformation layer to clean it, and a business intelligence (BI) tool to show it. Each is billed separately, and the setup needs someone who knows how to run it.

    For a company with large data volumes and a data team, that setup may make sense. A 15-person business should first check whether its existing reports have clear owners, consistent definitions, and a decision attached to each number. New software alone will not establish those habits. A business that pays for a sophisticated stack before sorting them out gets the same unclear numbers, faster and at greater cost.

    The software is also only part of the cost. Setting it up, connecting it to your systems, and keeping it running takes someone’s time, whether that’s yours, an employee’s, or a consultant’s. How much a small business dashboard costs covers the build side.

    Level 1: No Added Cost

    My view is that small businesses should stay at this level as long as possible, and that the right tools depend on which office software you already use.

    If you use Google Workspace

    • Google Sheets holds and shapes the data. Pivot tables, QUERY, and IMPORTRANGE can cover many reporting tasks. Google sets a 10 million-cell file limit, though a practical workbook may become slow well before that limit.
    • Looker Studio turns the sheets into dashboards and shares them with a link. It connects directly to Sheets, Google Analytics, and other Google products, and the standard version is free. Looker Studio Pro adds organizational ownership, team workspaces, and support for teams that need those controls.

    If you use Microsoft 365

    • Excel holds the data, and Power Query, built into Excel, cleans and combines exports from different systems and repeats those steps each month with a refresh.
    • Power BI Desktop is free and builds full dashboards on your computer. Sharing them with others online through the Power BI service requires a paid license for the people publishing and viewing, typically Power BI Pro.

    What this level covers

    With either setup, a business can keep a monthly scorecard, combine exports from its accounting, sales, and operations systems, and build useful reports. Sharing options differ: Looker Studio can share online, while Power BI Desktop reports stay local unless the business uses an appropriate Power BI sharing license or capacity. The work may still include exporting data from each system and updating the spreadsheet each month. Track the time and errors in that routine before deciding whether automation would pay for itself.

    Before spending on anything, take stock of what your systems already give you. The business data you already have covers where to look.

    Level 2: Paying for Specific Gaps

    The first paid step isn’t a new platform. It’s paying for the one or two things your free setup can’t do. Three are common.

    Sharing licenses. In the Microsoft setup, publishers and viewers of shared Power BI reports generally need a Pro license: $14 per user per month as of September 2026, paid yearly. Microsoft 365 E5 and Office 365 E5 include Pro. Large Premium or Fabric capacity can allow free viewers, so check your licensing setup before buying separately.

    Automated connectors. Tools like Coupler.io and Supermetrics copy data from your accounting system, CRM, ad accounts, or e-commerce platform into Sheets, Excel, or a BI tool on a schedule, so nobody has to export it by hand. Pricing usually depends on the number of sources, accounts, and how often the data refreshes. Check current plans before comparing.

    Alerts and scheduled delivery. Automatic emails when a number crosses a threshold, or a report sent every Monday morning. Some of this is free with scripts or built-in features; paid tools make it easier to set up and maintain.

    Consider a made-up example. A 12-person firm on Microsoft 365 has five people who need to view shared dashboards. Five Power BI Pro licenses at $14 each come to $70 a month. It adds one connector to pull accounting data automatically, at a hypothetical $60 a month. Total: $130 a month. If it saves six hours of work each month, compare the value of those hours and the cost of setup and upkeep with the $130 fee. If the reports go unread, it’s $1,560 a year for nothing.

    That last point is the real test at this level. A paid tool is worth it when it solves a problem you can name and measure. It’s a waste when it’s bought in the hope that having better software will make people use the numbers.

    Level 3: A Full Data Platform

    At the top end is the setup vendors often lead with: a cloud data warehouse, automated pipelines from every system, a transformation layer, and a BI platform with detailed permissions. Software costs scale with data volume and users, and the larger cost is the person who builds and maintains it.

    It’s justified when:

    • Data volume outgrows spreadsheets. Transaction, sensor, or event data that no longer performs reliably in the current spreadsheet workflow.
    • Access needs to be controlled row by row. Different managers, locations, or clients should see only their own data, and a shared spreadsheet can’t enforce that.
    • Many systems need to be combined continuously. Not once a month, but daily or hourly.
    • Someone is there to run it. A data analyst or engineer on staff, or a committed outside partner. Without that person, the platform decays: pipelines break, definitions drift, and people go back to their own spreadsheets.

    Adopting this level early is expensive twice over: the subscriptions, and the time and attention taken from sales, delivery, and the rest of the business.

    How to Tell Whether a Tool Is Worth It

    Judge tool spending by what it lets you do, not as a percentage of revenue. Three questions work at any level:

    1. What problem does it solve? Name it. "Our month-end report takes three days to assemble" is a problem. "We should be more data-driven" isn’t.
    2. What does the problem cost now? Hours of staff time, late decisions, errors caught too late, customers or cash lost to something nobody noticed.
    3. Will anyone use the result? A tool that produces reports nobody reads costs its full price and saves nothing. Keep reporting focused on four to seven metrics that each lead to a decision, and the tool has a job to do.

    Compare the value of the improvement with the full cost: licenses, setup, maintenance, and staff time. Test a small purchase first when those numbers are uncertain.

    Signs It’s Time to Spend More

    Stay where you are if:

    • Monthly exports and updates are manageable.
    • The people who need reports can get them from shared files or free dashboard links.
    • You haven’t yet used what your office suite includes. Power Query, pivot tables, and Looker Studio go a long way.

    Consider paying for specific tools if:

    • Reports arrive so long after month end that the numbers are too late to act on.
    • Several people edit the same file and overwrite each other’s work, or keep private copies that disagree.
    • The same exports are copied by hand every week, and mistakes creep in.
    • People who need to see reports can’t, because your free setup can’t share them the way you need.

    Consider a full platform if:

    • The data won’t fit in spreadsheets, access needs row-level control, or systems must be combined continuously, and you have someone to run it.

    Keep a record of slow reports, version conflicts, and repeated manual work. Those observations will make the next software decision easier.

    Frequently Asked Questions

    Is Looker Studio really free?

    The standard version is free to build and share reports. Costs can come from paid third-party connectors for non-Google data, or from Looker Studio Pro for organizational and team features.

    Is Power BI free?

    Power BI Desktop, which builds reports on your computer, is free. Publishing and sharing reports online generally requires a paid license for the people involved, such as Power BI Pro.

    Should a small business use Tableau?

    Tableau may be worth comparing when your team already knows it or has requirements your current tools cannot meet. Include its licensing, deployment, and maintenance costs in the comparison.

    What should a small business spend on data tools as a percentage of revenue?

    There isn’t a useful percentage. Spending should follow specific problems, and for many small businesses the right answer for a long time is nothing beyond what they already pay for their office software.

    What’s more important than the tool?

    Clear definitions, an owner for each number, a regular review, and a short list of metrics that lead to decisions. With those in place, a spreadsheet does a lot. Without them, no tool helps much.

  • A Monthly Reporting Pack Template for Small Business

    A monthly reporting pack for a small business fits in five pages: (1) a summary with your core metrics and what’s off track, (2) financial results against budget, (3) operations and team capacity, (4) sales pipeline and customers, and (5) risks and the decisions leadership needs to make. Keep the layout identical every month so the pack takes hours to produce rather than days, and put supporting detail in an appendix.

    Below is a copyable five-page outline, followed by the layout choices and a monthly production routine. Each page has one job. Fill in the placeholders with your own numbers and remove lines your business does not use. For what belongs on each page, in detail, see What to Include in a Monthly Business Report.

    Why Five Pages

    A monthly pack exists to help people decide what to do next. That means reporting what happened briefly, explaining the variances that matter, and giving the most attention to the choices ahead.

    Five pages is enough for that and short enough to be read before the meeting. Long packs get skimmed or skipped, and the page nobody reads is usually the one that mattered. The limit also forces a useful discipline: when something new wants in, something old has to come out.

    The other rule is sameness. The same pages, in the same order, with the same charts in the same places, every month. Readers learn where to look, and the person producing it copies last month’s file instead of starting over.

    Copy This Five-Page Template

    Each page below is shown as a fillable table. Use the same layout in a document or slide deck: start a new page or slide at each page heading, and keep the bracketed prompts until you have real numbers and decisions to replace them. The five pages are the main pack; supporting detail goes in the appendix.

    Prefer a ready-made file? Copy the template as a Google Doc — File > Make a copy, then fill in your own numbers.

    PAGE 1 — SUMMARY AND CORE METRICS

    Reporting month: [month/year]  |  Books closed: [date]  |  Cash at month end: [amount]

    Core metricActualTargetLast monthOn track / Watch / Off track
    [Metric 1]
    [Metric 2]
    [Add only the metrics needed, up to seven]
    Went wellOff track
    [two or three short results][miss, reason, and owner for each item]

    Main decision: [one sentence; see page 5]

    PAGE 2 — FINANCIAL RESULTS

    LineActualBudgetVariance ($)Variance (%)
    Revenue
    Direct costs
    Gross profit ($)
    Operating expenses
    Operating profit
    Gross marginactual [ ]%; budget [ ]%; variance [ ] percentage points
    Cashopening [ ]; in [ ]; out [ ]; closing [ ]
    Receivablestotal [ ]; past due over 60 days [ ]

    Largest variances: [what changed, why, and whether action is needed]

    PAGE 3 — OPERATIONS AND TEAM

    Output this month / last month / target[ ] / [ ] / [ ]
    Backlog this month / last month[ ] / [ ]
    Current bottleneck and response[ ]
    Quality or rework measure[ ]
    Team workload and capacity risk[ ]
    Headcount changes and open roles[ ]

    PAGE 4 — PIPELINE AND CUSTOMERS

    StageOpportunity countValueExpected timing
    Qualified
    Proposal out
    Won this month
    Pipeline for next quarter / revenue target[ ] / [ ]
    Win rate this month / trailing three months[ ] / [ ]
    Customers gained / lost / active, or repeat purchase rate[ ]

    PAGE 5 — RISKS AND DECISIONS

    Quarterly priorityStatusWhat changedOwner
    [Priority]On track / At risk / Delayed
    Risk or blockerImpactOwnerNext check date
    [Risk]
    DecisionContext and company-specific costRecommendationDecision makerDue date
    [Decision]

    Use the same metric definitions and reporting periods each month. Before sending the pack, check that a figure repeated on two pages matches and that every requested decision has a named decision maker and date.

    Page 1: Summary and Core Metrics

    If someone reads only one page, this is it. It should tell them whether the business is on track and what needs their attention.

    Layout, top to bottom:

    • Header line: the month, the date the books closed, cash at month end.
    • Scorecard table: your four to seven core metrics. One row each, with columns for actual, target, last month, and status. My rule is four to seven, depending on the business, with no vanity metrics.
    • Two short lists side by side: “Went well” and “Off track,” two or three bullets each, one line per bullet.
    • One box at the bottom: the most important decision this month, in one sentence, with a pointer to page 5.

    Here’s what that scorecard might look like for a small services firm, with made-up numbers:

    MetricActualTargetLast monthStatus
    Revenue$168,000$180,000$174,000Off track
    Gross margin41%40%39%On track
    Billable utilization72%75%74%Watch
    Receivables over 60 days$9,500Under $10,000$14,000On track
    Qualified pipeline$410,000$450,000$395,000Watch

    Use words, not only colors, for status. Red and green are hard to tell apart for some readers, and printed packs often end up in black and white.

    The sample statuses are illustrative. Set your own watch and off-track thresholds before using the template, and keep their definitions in the appendix.

    If you keep a monthly scorecard in a spreadsheet, this table is a copy of it. How to build a monthly KPI scorecard shows how to set that up so the numbers carry over each month without retyping.

    Page 2: Financial Results Against Budget

    Every financial number sits next to what you expected.

    Layout:

    • Summary income statement, four numeric columns: actual, budget, variance in dollars, variance in percent. Rows: revenue (split by main business line if you have more than one), direct costs, gross profit, operating expenses, operating profit. Show gross margin as a separate percentage and its variance in percentage points.
    • Cash block: starting cash, cash in, cash out, ending cash. If cash is falling, estimate months of cash remaining at the recent average monthly net cash outflow.
    • Receivables line: total owed, and how much is more than 60 days late.
    • Variance notes: two or three bullets, each explaining one of the largest differences from budget in a sentence.

    One chart, at most: revenue by month for the past twelve months against budget. Twelve months shows seasonality, which a single month hides.

    Keep this page to summary lines. The full income statement, balance sheet, and ledger detail go in the appendix, where anyone who wants them can find them.

    Page 3: Operations and Team

    This page shows whether the business can deliver the work it’s selling. It combines two sections that are often split: operations and team capacity. In a small business they’re usually the same question, since the team is the capacity.

    Layout:

    • Output trend: one chart showing your main measure of delivered work (jobs completed, orders shipped, hours billed) over twelve months.
    • Backlog: committed work not yet delivered, with last month’s figure for comparison.
    • Bottleneck: one sentence naming what’s currently limiting delivery, and what’s being done about it.
    • Quality: one or two measures of rework, errors, or complaints.
    • Team: workload (utilization, overtime, or open work per person), people who joined or left, open roles, and any capacity risk worth naming.

    This page varies most between businesses. A manufacturer tracks throughput and scrap; a consultancy tracks utilization and project backlog; a service company tracks jobs per crew and callbacks. Pick the few measures that tell you whether operations can support next quarter’s plan, and keep them the same from month to month.

    Page 4: Pipeline and Customers

    In a business with a longer sales cycle, this month’s revenue often reflects work sold earlier. This page shows what may be coming next, alongside the timing and size of future revenue targets.

    Layout:

    • Pipeline by stage, as a short table or a simple bar chart: inquiries, qualified opportunities, proposals out, won this month. Show counts and values.
    • Pipeline against target: qualified or weighted pipeline value next to next quarter’s revenue target.
    • Win rate: proposals won as a share of proposals decided, this month and over the trailing three months (monthly win rates swing a lot when the numbers are small).
    • Customers: new, lost, and total active; or, for businesses that depend on repeat purchases, the share of customers who bought again.

    Avoid funnel graphics that look impressive but hide the numbers. A four-row table is easier to read and compare month to month.

    Page 5: Risks and Decisions

    The pack ends with what needs to happen next.

    Layout:

    • Priorities status: the three to five things the business committed to this quarter, each marked on track, at risk, or delayed, with a line of explanation for anything not on track.
    • Risks and blockers: a short list, each with a named owner.
    • Decisions table:
    DecisionContext and costRecommendationWho decidesBy when
    Hire a second project managerBacklog grew for three months; the current manager handles 14 projects against the team’s agreed capacity of 10. Cost: [company estimate]/monthApprove; post the role this monthOwnerOct 15

    Put the recommendation in the table. A decision presented without one tends to get deferred.

    This page sets up the meeting. What makes a reporting conversation useful is an action-oriented discussion about what the numbers mean, who will act on them, and by when. Every row here should leave the meeting with a decision or a date for one.

    The Appendix

    Everything that supports the five pages but doesn’t need to be read by everyone:

    • Full financial statements
    • Detailed receivables aging
    • Department or location breakdowns
    • Project or customer lists
    • Definitions of each metric and where its data comes from

    The definitions page is worth writing once. When someone asks why this month’s utilization differs from another report’s, the answer is already there.

    How to Produce It Each Month

    The goal is to produce the pack in a few hours rather than a few days. That comes from setting up once and repeating the same steps.

    Set up once:

    1. Build the five pages as a template, with every table and chart in place.
    2. Write down where each number comes from: which report, which system, which filter.
    3. Link the scorecard and charts to a spreadsheet where possible, so updating the data updates the pages.
    4. Assign an owner for each page’s numbers and notes.

    Each month:

    1. Close: the books close and the source reports are exported.
    2. Update: paste or refresh the data. The scorecard and charts update from it.
    3. Explain: each page owner writes the variance notes for their page. Keep it to a sentence or two per variance.
    4. Review: one person reads the whole pack for consistency, such as matching numbers on pages 1 and 2 and clear decisions on page 5.
    5. Send: distribute it at least a day before the meeting.

    Save each month’s pack as a separate, dated file. The history is useful, and nobody has to wonder whether the numbers they’re looking at have changed since the meeting.

    Slides or a Document?

    Either works. Choose by how the pack is used.

    • Slides (Google Slides, PowerPoint) suit a pack that’s presented in a meeting and read on a screen. Each page becomes one widescreen slide. The constraint is space: if a page doesn’t fit on one slide, it has too much on it.
    • A document (Google Docs, Word, a PDF) suits a pack that’s read in advance, printed, or sent to a lender or investor. It holds variance notes and tables more comfortably.

    Whichever you choose, send it in advance and expect people to have read it. The meeting then spends its time on the off-track items and the decisions rather than on reading. How to get your team to actually use your reports covers the meeting itself, including a short note each owner of an off-track metric brings.

    Monthly Reporting Pack Checklist

    • Five pages, in the same order every month
    • Page 1: header, four to seven metrics with target and status, went well / off track, main decision
    • Page 2: summary income statement against budget, cash, receivables, variance notes
    • Page 3: output, backlog, bottleneck, quality, team
    • Page 4: pipeline by stage, pipeline against target, win rate, customers
    • Page 5: priorities status, risks with owners, decisions table with recommendations
    • Appendix: statements, detail, and metric definitions
    • Sent at least a day before the meeting

    Frequently Asked Questions

    What’s the difference between a reporting pack and a dashboard?

    A dashboard is live and checked whenever someone wants to. A reporting pack is a fixed monthly snapshot with explanations and decisions. Many businesses use both: the dashboard for day-to-day checks, the pack for the monthly review.

    Can a very small business use a shorter version?

    Yes. A business with a handful of people can often fit pages 1 and 5 on one page and pages 2 through 4 on another. Keep the same order and the same sections.

    Should lenders or investors get the same pack?

    Usually a shorter version: pages 1, 2, and 5, with the appendix available on request. Internal operating detail rarely helps them and can raise questions without context.

    How long should the pack take to produce?

    Once the template and data sources are set up, much of the work is updating numbers and writing short notes. The first few months take longer while you settle the definitions.

  • What to Include in a Monthly Business Report

    A monthly business report should cover six things: a summary with your four to seven core metrics, financial results against budget, operations and capacity, sales pipeline and customers, team capacity, and the decisions leadership needs to make. Each number needs a target or a comparison, and each off-track number needs a short explanation. Everything else, including detailed ledgers and metrics nobody acts on, belongs in an appendix or nowhere.

    The checklist below goes section by section. At the end is a cut list: what to take out.

    What a Monthly Report Is For

    A monthly report answers three questions for the people running the business:

    1. Did we hit our targets?
    2. If not, why not?
    3. What do we need to decide or do next?

    Anything that doesn’t help answer one of those three is a candidate for cutting. Length is a design decision, not a sign of thoroughness. A 30-page pack gets skimmed, and the one number that needed attention gets lost among the ones that didn’t.

    The report also isn’t your accounting package. Financial statements tell you what happened. A useful monthly report adds what’s coming: the pipeline, the capacity, and the choices that need to be made while there’s still time to make them.

    1. The Summary and Core Metrics

    The first page should tell the whole story of the month. If someone reads only this page, they should know whether the business is on track and what needs their attention.

    Include:

    • The period and the basics. Which month, when the books closed, and your cash balance at month end.
    • Your core metrics. My rule is four to seven, depending on the business, and no vanity metrics: each one has to move the needle. Show each with its actual value, its target, and a status (on track, watch, or off track). How many KPIs a small business should track covers choosing them.
    • What went well. Two or three results worth knowing about, stated plainly.
    • What’s off track. The metrics that missed, with a one-line reason for each. Be as direct about misses as about wins; a summary that only reports good news stops being trusted.
    • The main decision. The single most important choice leadership faces this month, if there is one.

    If you already keep a monthly scorecard, this page is mostly a copy of it. How to build a monthly KPI scorecard shows how to set one up in a spreadsheet.

    2. Financial Results Against Budget

    A financial number on its own doesn’t tell you much. $180,000 in revenue is good or bad depending on what you expected. Show every financial line next to a target and a comparison.

    Include:

    • Revenue: actual, budget, and the difference, split by your main lines of business if you have more than one.
    • Gross margin: revenue minus the direct cost of delivering it, as dollars and as a percentage. For a service business, direct costs are mostly the labor that does the work.
    • Operating expenses: the overhead, with any line that moved noticeably called out.
    • Operating profit (or net income, if that’s what your books report).
    • Cash: cash in, cash out, and the ending balance. If cash is falling, estimate how many months the current balance would last at the recent average monthly net cash outflow.
    • Receivables: how much customers owe you, and how much of it is late. Revenue that hasn’t been collected isn’t cash yet.

    Add one or two sentences explaining the biggest variance. “Revenue was $12,000 under budget because two projects slipped into next month” is more useful than another table.

    Here’s what that might look like, with made-up numbers:

    LineActualBudgetVariance
    Revenue$168,000$180,000−$12,000 (−6.7%)
    Gross margin41%40%+1 point
    Operating expenses$52,000$50,000+$2,000 (+4.0%)

    Percentages and percentage points are different things. Revenue that falls 6.7% below budget is a percentage; a margin that goes from 40% to 41% has moved one percentage point. Label them so nobody confuses the two.

    3. Operations and Capacity

    Financials show the result. Operating metrics show how well the business is producing it, and they usually move first.

    Include what fits your business:

    • Output: the main measure of work delivered, such as jobs completed, orders shipped, hours billed, or tickets closed.
    • The bottleneck: the one step, team, or resource currently limiting how much you can deliver. Name it. If the answer changed since last month, say so.
    • Backlog: committed work that hasn’t been delivered yet, and whether it’s growing or shrinking.
    • Quality: rework, errors, returns, or complaints. Whatever you track that shows work having to be done twice.

    Keep it to the few measures that tell you whether operations can support the revenue you’re planning. A manufacturer, a consultancy, and a cleaning company will fill this section very differently, and they should.

    4. Sales Pipeline and Customers

    In businesses with longer sales cycles, this month’s revenue often reflects work sold earlier. The pipeline shows what may be coming next; compare it with the timing and size of future revenue targets.

    Include:

    • Qualified opportunities: how many, and their total value. If you estimate the chance of winning each, show the weighted value too.
    • Win rate: of the proposals decided this month, how many you won.
    • Sales cycle: roughly how long it takes from first contact to a signed agreement, if you track it.
    • New and lost customers: how many started and how many left, or, for repeat businesses, the share of customers who bought again.

    A pipeline that looks thin next to next quarter’s revenue target is the kind of early warning a monthly report exists to give.

    5. Team Capacity

    For most small businesses, people are the highest cost and the main limit on growth.

    Include:

    • Workload: whether the team is running at a sustainable level. For a service business, that’s often utilization (billable hours as a share of available hours). For others, it may be overtime, open work per person, or a simple manager’s assessment.
    • Headcount changes: people who joined or left, and open roles.
    • Capacity risks: a key person leaving, a team stretched thin before a busy season, a skill only one person has.

    This section is often left out, and it’s where hiring decisions should start. A team running over capacity for three months is a decision waiting to be made.

    6. Risks, Blockers, and Decisions

    End the report with what needs to happen next. A report that closes on numbers leaves the next step to chance.

    Include:

    • Risks: a large contract up for renewal, a supplier problem, a regulatory change, a customer that accounts for too much revenue.
    • Blockers: anything internal that’s stopping progress, such as a system problem, a missing approval, or two teams waiting on each other.
    • Decisions needed: a short table. Each row is one decision, the options, a recommendation, who decides, and by when.

    When I think about what makes a reporting conversation useful, it’s an action-oriented discussion about what the numbers mean, who will act on them, and by when. This section is where the report sets that conversation up. How to get your team to actually use your reports covers running the meeting, including a short off-track note each metric owner brings.

    What to Leave Out

    A good report is defined as much by what isn’t in it. When deciding whether a metric earns a place, I check whether it helps the business make more revenue, run more efficiently, or cut costs. If the honest answer is no, it goes.

    Take out:

    • Detailed ledgers and trial balances. Your accountant needs them. The leadership team needs the summary. Put them in an appendix if someone asks.
    • Vanity metrics. Social followers, impressions, and website traffic with no link to inquiries. They go up and down without anyone needing to act.
    • Numbers without context. A metric with no target, no prior period, and no trend can’t tell anyone whether to worry.
    • Every metric you can produce. If a number has sat on the report for six months without anyone acting on it, remove it and see whether anyone notices.
    • Unsettled arguments. Work out disagreements about what a number means before the report goes out, not in the margins of it.
    • Long narrative. One or two sentences per variance. If the explanation needs a page, it needs a separate conversation.

    Removing things is harder than adding them, because everything on the report was once someone’s good idea. Review the contents every quarter and cut anything that hasn’t earned its place.

    Monthly Business Report Checklist

    • A one-page summary with four to seven core metrics, each with a target and status
    • Wins and misses, stated plainly
    • Revenue, gross margin, operating expenses, and profit against budget
    • Cash position and receivables
    • A sentence or two on the largest variance
    • Output, bottleneck, backlog, and quality
    • Pipeline, win rate, and customers gained and lost
    • Team workload, headcount changes, and capacity risks
    • Risks, blockers, and a decisions table with owners and dates
    • Nothing without a target or comparison; no vanity metrics

    Frequently Asked Questions

    How long should a monthly business report be?

    Short enough that people read it before the meeting. A five-page starting point is a summary, financials, operations and team capacity together, pipeline and customers, then risks and decisions. Add detail only where the reader needs it to make a decision.

    Who should get the monthly report?

    The people who make decisions from it: owners, partners, and department leads. Lenders and investors often need a shorter version focused on financial results, cash, and risks.

    When should the monthly report go out?

    As soon after month end as the numbers are reliable. The later it arrives, the less time there is to act on it. If closing the books takes weeks, send the operating and pipeline sections early and follow with the financials.

    Should the report include forecasts?

    A short outlook helps: expected revenue for the next month or quarter, based on the pipeline and backlog. Label it as an estimate and compare it with what actually happened the following month.

    What’s the difference between a monthly report and a dashboard?

    A dashboard is something people check whenever they want. A monthly report is a fixed snapshot with explanations, sent at a set time, so decisions are made from the same numbers.