Journal
Structure

A decision page is not a contact form

September 8, 2026 · 4 min read

A client made nineteen decisions on a page I built for him. The page recorded none of them. What that taught me about where a decision actually has to live.

I built a client a page to make decisions on. Nineteen decisions, laid out clean, each one with two links. Run it, or hold it.

He used it exactly the way it was designed. He went through the page item by item, made a call on every single one, and finished. Then I went looking for his answers and there were none. Not late, not partial. None.

The links were mailto links. Every click had opened his mail client and sent a separate message. Thirteen emails out of one page in one sitting, subject lines running Clip 1 through Clip 13, landing in an inbox next to everything else that arrives in an inbox. The page itself had recorded nothing, because a mailto link is not a form. There was nothing behind it to record with.

Why this is worse than it sounds

The dangerous part is that it works.

His answers arrived. Nothing bounced, nothing errored, no red box appeared anywhere. From his side the page did its job. From my side, thirteen emails landed. If you were watching either end you would have said the system was fine.

What was missing was a record. One object, in one place, holding what he decided. Instead the decisions were spread across an inbox in whatever order the messages happened to arrive, with no way for anything else to read them and no single thing anyone could point at.

Which is how a client ends up being asked a question he has already answered. Someone working from what had been recorded, rather than from what had been sent, drafted him a note asking which clips to pull. He had told us thirteen times.

There is no more expensive thing a client page can do. Every other failure costs time. That one costs the client's belief that you are keeping track.

The rule now

Every client decision page collects its answers in one recorded form. One page, one form, one submission, one row, one alert. A mailto link is acceptable only as a visible fallback sitting beside a working form. Never as the mechanism.

The rebuild took an afternoon. All nineteen decision blocks became radio pairs inside a single form, with an optional note on each, a free text box at the end, one name field, one submit button and a branded thank you page. The media on the page was mirrored down and redeployed unchanged so nothing was lost. The original version is kept as a backup, because the point is to learn from it rather than to pretend it never shipped.

The check that should have existed

Ask the hosting the question directly. How many forms does this site have.

If a page asks a client to decide something and the answer is zero, that is the same defect, whatever the page looks like. I now run that check against every client page, not only the one that failed.

And there is a second half to it that is easy to skip. A form that exists and records answers is still useless if nobody is told when an answer arrives. Notification email is a per site setting, not something a deploy switches on. Until it is set and confirmed on screen, a client's answer can sit unread indefinitely, which puts you back at the original problem with extra steps.

So launching a decision page has three parts, not one. The form exists. The form records. Somebody gets told.

What this is really about

There is a version of this essay that is about a specific mistake with links, and that version is not very interesting.

The version that matters is about where a decision lives. Most client work does not stall because the work is wrong. It stalls because the decision about the work is loose in the world, sitting in an inbox, or in somebody's memory of a call, or in a message that was forwarded to the wrong thread. Nobody is at fault and everybody is waiting.

Structure is what turns a decision into an object. Once it is an object it has a place, a time, an author and a status, and everything downstream can read it. Until then it is a rumor with good intentions.

What I would check tonight

If you have a client or a stakeholder approving your work, find the last three approvals and ask where they are.

Not roughly. Precisely. Can you open the thing that holds them, in under a minute, and see who said yes to what and when. If the answer involves searching an inbox, or asking someone, or scrolling a chat, then your approvals are not recorded. They are remembered. Remembering is a system that fails silently and then blames a person.

Give the decision a home. It is a smaller job than it sounds, and it is the one that stops the expensive failures.

That is the gap I close.