owndle.start free →

// portfolio ops

google sheets vs a domain tracker: when your spreadsheet stops scaling.

a spreadsheet is a genuinely good domain inventory below about ten domains at one registrar. here is exactly where the line is, and the three failures no amount of spreadsheet craft can fix.

published 4 August 2026

below roughly ten domains at a single registrar with auto-renew on, a spreadsheet is fine and you should not buy anything.

that is the honest threshold, not a sales-page concession. a sheet costs nothing, works offline, has no vendor, and does exactly what you tell it. most people asking whether they have outgrown one have not. this is about where the line falls and what breaks when you cross it, because the transition is not announced.

what a spreadsheet is genuinely good at

  • it is free and it is yours. no subscription, no export process, no question about what happens if a company folds or triples its price.
  • the schema is whatever you want. custom columns, arbitrary notes, a column for the client who owes you money. every hosted tool hands you its schema and most will never add yours.
  • arithmetic is trivial. `=SUM()` down a renewal price column gives you the annual figure most people have never seen; `=A2-TODAY()` gives days-to-expiry. those two do a surprising amount of the job.
  • everyone can already use it. no onboarding, no colleague login, no seat to pay for.

if you want the columns and formulas done properly, the spreadsheet template has the full build. do that before considering anything paid.

the three things a spreadsheet structurally cannot do

these are not skill problems. no amount of formula work, conditional formatting or Apps Script fixes them, because they stem from one property: a spreadsheet stores what you told it, and never goes and looks.

it cannot update an expiry date from the registry. the date in your sheet is a photograph of the day you typed it. renew for two years and forget to edit the cell, and it now confidently shows a date wrong in the reassuring direction. move a domain elsewhere and the old row survives with the old registrar and old price. registries publish current expiry, status codes and nameservers continuously over RDAP — the sheet has no mechanism to ask. you can re-check by hand, but "by hand, quarterly, for ninety rows" is the failure mode rather than the fix.

it cannot notice that auto-renew failed. this is the one that loses domains. a card expires, the charge declines, the retry fails, the notice lands in a promotions tab. your auto-renew column still says "on" and the expiry column still shows a date months away, because both record your intention rather than the registrar's behaviour. a spreadsheet is incapable of being surprised. why auto-renew fails has the mechanics, and most people treat auto-renew as a guarantee rather than an instruction that can silently fail.

it cannot tell you a renewal price changed. you filled the price column in march. in september the registrar raises it, or the registry raises the wholesale rate and everyone follows. your sheet reports last spring's market with total confidence. the number that matters most — the gap between what you pay and the best available — is the one that goes stale fastest. checking one TLD against the live price tables takes a minute; checking ninety rows quarterly is not something anyone does twice.

all three fail silently, and all three fail in the direction that makes you feel fine. a sheet never tells you it has gone stale. it keeps displaying the last true thing it knew.

the signals you have crossed the line

any two of these and the spreadsheet is a liability rather than a record:

  • more than one registrar. once domains live in two accounts the sheet is the only thing joining them, and the least reliable component in the system.
  • you cannot immediately say which account holds a given domain. the most under-recorded field, and the one that causes panic at exactly the wrong moment.
  • auto-renew is "unknown" for any row. an honest and common value. treat it as "off" until you have looked.
  • you have stopped updating it. the real tell. a sheet nobody edited in four months is a historical document, not an inventory.
  • somebody else depends on these domains. clients, an employer, a live business. a lapse is no longer your own annoyance.
  • you do not know the annual total. if you cannot state the number, the sheet is not doing the job it was built for.

what a tracker adds, specifically

the honest framing: a tracker is a spreadsheet that goes and looks, plus something that shouts.

registry data on a schedule. expiry dates, status codes, nameservers and the accredited registrar, pulled from the registry rather than from memory, so the inventory stops rotting. import is a paste, a CSV or a sync.

alerts that arrive without being asked. staged notifications at 90, 30, 7 and 1 days, from infrastructure running whether or not you have opened anything. that is the difference between monitoring and checking, and the whole of expiry monitoring. a rule turning a cell amber only helps somebody who opened the file.

a price catalogue to compare against. your sheet holds what you pay. it cannot hold what everyone else charges, which is the number that turns an inventory into an audit — one annual cost, a flag on everything overpriced, a per-year saving for moving it. that gap is renewal arbitrage.

what a tracker does not do better

custom fields, arbitrary notes, the column you invented for your own odd situation. a tracker gives you its schema, and if your portfolio needs bespoke taxonomy the sheet wins there and probably always will.

it also costs money, which a sheet does not. owndle is free for ten domains and paid plans run from £9 a month — real money for something you could approximate with a file you already have.

the hybrid nobody admits to

plenty of people run both, and it is not a failure of commitment. the tracker holds the live facts — what exists, when it expires, what it costs, what the market charges. the sheet holds the judgement: keep/sell/drop, whose client it is, the note about the verification record that breaks if you transfer it.

facts that change on their own should be fetched; facts only you know should be typed. the mistake is using a spreadsheet for the first category, which is what most people default into and the reason domains lapse.

the threshold, stated plainly

stay on the spreadsheet with under about ten domains, all at one registrar, all on auto-renew, on a card nowhere near expiring, with nobody else depending on them. in that shape the three failures are survivable and a subscription solves a problem you do not have.

move when domains span registrars, when anyone else's business depends on one, when you cannot state your annual total, or when you have already had a near miss. one lapsed domain costs more than several years of any tracker, and the redemption fee is the least pleasant way to learn where the line was.

questions people actually ask.

is a spreadsheet good enough for tracking domains?

Below about ten domains at one registrar, with auto-renew on and nobody else depending on them, yes — and a subscription would be solving a problem you do not have. It stops being adequate once domains span registrars, once anyone else's business depends on one, or once you can no longer state your total annual renewal cost.

when should I stop using a spreadsheet for domain management?

When any two of these are true: domains live at more than one registrar, you cannot say which account holds a given domain, auto-renew status is unknown for any row, you have stopped updating the file, or clients depend on these domains. The clearest signal is a sheet nobody has edited in months — that is a historical document, not an inventory.

why can't a spreadsheet track domain expiry properly?

Because it stores what you typed and never goes and looks. It cannot pull the current expiry date from the registry, so a renewal or a transfer leaves the row silently wrong. It cannot detect that auto-renew failed, since it records your intention rather than the registrar's behaviour. And it cannot know a renewal price changed after you filled the cell.

what should a domain record keeping system include?

Domain, registrar, which account holds it, expiry date, auto-renew state, the renewal price you will actually be charged, the cheapest alternative price, nameservers, what the domain is for, and a keep/sell/drop decision reviewed annually. The last one matters most — a domain with no decision attached gets renewed forever by default.

can I automate a domain spreadsheet instead of paying for a tracker?

You can, with a script calling RDAP on a schedule and writing expiry dates back into the sheet. That fixes one of the three gaps. It will not price renewals against a cross-registrar catalogue, and alerting still depends on infrastructure you maintain — which fails silently, at which point the thing it was going to warn you about is exactly what you miss.

// stop checking one at a time

every domain you own, one dashboard.

Owndle imports your portfolio from every registrar, shows what each domain costs to renew against the cheapest alternative, and alerts you at 90, 30, 7 and 1 days before expiry. Free for ten domains.

start free — 10 domains

// no card · magic-link sign-in · alerts at 90/30/7/1 days