Workflow basics6 min readUpdated 2026-08-01

Rental property maintenance log template for small landlords

A copyable maintenance log template for landlords with 1–20 units: the columns that matter, a filled example, and the habits that keep it alive.

A maintenance log has one job: when anyone asks “what’s happening with the sink in 2A?”, the answer is in front of you in ten seconds — what was reported, when, what’s been done, and what happens next. It is not your accounting system, and it is not a legal file. Trying to make one document do all three jobs is why most landlord logs die by month two. Below is a template that does the one job well, a filled example, and the small habits that keep it honest.

The core template: one row per issue

Copy nine columns into a spreadsheet (or rule up a notebook page the same way): number, reported date, unit, issue, via, status, owner, next action, follow-up. The columns, and why each earns its place:

  • # — a running number, so “the sink issue” and “the other sink issue” can’t blur together.
  • Reported — the date the first message arrived. This is the column that tells you how long things actually take.
  • Unit — the unit or property, not the tenant’s name. Vendors think in addresses.
  • Issue — one specific line: “bathroom sink drips from cold handle,” not “plumbing.”
  • Via — text, email, or call. Tells you where the original conversation lives when you need to re-read it.
  • Status — pick from a fixed list: New, In progress, Scheduled, Waiting, Done — confirmed. A fixed list matters; freeform statuses rot into “sort of handled?”
  • Owner — who moves it next: you, a named vendor, or the tenant (if you’re waiting on photos or an access window).
  • Next action — the single most valuable column. The next physical step, not the goal: “confirm Thursday window with tenant,” not “fix sink.”
  • Follow-up — the date you’ll chase it if nothing has happened. Every open row needs one.

The same template, filled

Four rows show the shape. Notice the third one: a routine item scheduled deliberately for later is fine — as long as the row exists and has a follow-up date. That’s the difference between “batched” and “forgotten.”

  • #14 · Jun 3 · 2A · Bathroom sink drips (cold handle) · Text · Scheduled · Rivera Plumbing · Confirm Thu 1–3 window with tenant · follow-up Jun 5
  • #15 · Jun 4 · Maple St · Fridge not cooling · Call · In progress · Me · Chase appliance repair quote · follow-up Jun 6
  • #16 · Jun 6 · 2B · Torn bedroom window screen · Email · New · Me · Batch with next 2A visit · follow-up Jun 20
  • #13 · May 28 · 1C · Garbage disposal jammed · Text · Done — confirmed

The issue diary: record updates chronologically

A table shows current state; it hides the story. For each issue, keep a dated line-by-line diary — a notes column, a second sheet, or indented lines under the row. Issue #14’s diary: Jun 3 — tenant text: drip from cold handle, photo received. Jun 3 — acknowledged; asked whether constant or only when running. Jun 4 — tenant: constant. Called Rivera Plumbing; offered Thu 1–3. Jun 5 — tenant confirmed window; dog will be in the bedroom. Jun 6 — fixed (replaced cartridge). Asked tenant to confirm. Jun 7 — tenant confirmed. Status → Done — confirmed.

Six lines, whole story. The diary earns its keep when an issue runs six weeks instead of four days, when a tenant says “I told you about this months ago,” or when a new plumber asks what the last one tried. Log tenant updates and your decisions — “chose repair over replacement, quote was $210 vs $780” is exactly the line you’ll want next year.

Keep money fields separate

Add vendor, cost, invoice link, and paid date if you like — but put them in separate columns at the far end, or on a second tab. Two reasons.

Different rhythm. Repairs move daily; invoices arrive weeks later. If a row can’t close until the receipt is filed, your operational log stalls on bookkeeping.

Different job. The log answers “what’s happening”; your books answer “what did it cost.” This template is deliberately not an accounting record or a legal file — keep proper invoices for taxes, and if a dispute is brewing, ask a local attorney what documentation your state expects rather than assuming the log covers it.

Two closing rules that keep the log honest

Close only on confirmation. “Contractor says done” is a status; “tenant confirms it works” is a close. Add nothing to the template for this — just refuse to write Done — confirmed until the tenant has actually said so. Unverified completions are where next quarter’s “it’s leaking again” comes from.

Flag recurrences instead of re-logging blindly. Same issue, same unit, within about 90 days? Don’t just open a fresh row — link it to the old one (“#18, recurrence of #13”) and treat the pattern as the problem. A disposal jammed twice is a usage conversation or a replacement decision, not a third identical service call. Recurrence links are how a log starts paying for itself.

Where to keep it — and where any log breaks

Paper works to about three units. A spreadsheet works well beyond that — and filtering to “status is not Done” gives you a ready-made weekly review list. Ten minutes, once a week: what’s open, what has no next action, which follow-up date has passed.

But every standalone log shares one structural weakness: it points at conversations it can’t contain. The row says “tenant confirmed” — the confirmation itself lives in an SMS thread on your phone, next to a photo in your email and a call you half-remember. The log and the conversation drift apart, double-entry gets tedious, and tedium is what actually kills logs.

That gap is the specific thing Tenvo closes for text-first landlords: every tenant text or email becomes a threaded ticket — the conversation and its status in one place — with an automatic receipt to the tenant and a daily digest that works like the filtered review list above. It’s $29/month, built for 1–20 units, and it does communication only — you’d still keep the money columns wherever you keep your books. If your log keeps dying at the copy-paste step, that’s the step to remove.