---
title: "The Signed-In Customer Nobody Checked Before Launch"
canonical: https://dxdev.com/blog/front-door-only-worked-for-strangers/
datePublished: 2026-08-25
---
The new front door for a stats section went live with a call to action selling a trial, and it went to every visitor. It looked right in every browser we checked. It was wrong for one kind of visitor we hadn't checked, the person who already had an account.

## What we believed when we shipped it

The page solved a separate, real problem. The stats glossary pages earned real search and AI-answer traffic, but they had no footer, no call to action, and no analytics at all. They opted out of the site's usual template entirely. The fix was a visitor-facing block at the top: a pitch, cross-links to related pages, and a tracking call finally wired up so we could see whether anyone used it.

Whether a signed-in customer should see something different was an open question on ship day. It went out as a decision still needed from the designer, not a release blocker. We shipped the visitor side, wrote the logged-in case down as deferred, and moved to the next ticket.

## What was actually true

The deferred decision wasn't the only gap. The tracking call labeled every visit "visitor," so the one thing the feature existed to measure couldn't separate a stranger from an existing customer. And nothing on the page checked login state, so a customer who already ran a site with us got the identical "sign up" pitch. That is more than a cosmetic miss. It tells a customer who trusts us with their site that we don't recognize them.

It surfaced when someone signed in and checked the live page directly. The trial pitch was still there. Our release note had called the logged-in case a deferred decision, but not plainly enough, so on the live page it read like a bug that had slipped through instead of a known open gap.

The first part of the fix was mechanical. Check whether the visitor is signed in. If so, show their own message and a button to their own site's admin instead of the outside pitch. The tracking label got fixed in the same pass.

## The fix we wrote was also wrong

The design called for two buttons on the logged-in version, and neither named a page that existed yet. Our first pass worked around that. We wrote our own single button and our own copy, fast, to close the gap. It shipped, and it was wrong too. It wasn't broken, but it wasn't what the approved design called for. A missing destination doesn't license rewriting someone else's copy.

We reverted our version entirely and shipped the designer's exact wording and both buttons. Then we verified it in a real signed-in session on the live page against the original mockup, word for word.

That still wasn't the end. Both buttons were labeled for features that don't have a dedicated page of their own, so each landed on a real, working admin page, just not the one its label promised. Rather than send logged-in customers to a mismatched page while that got sorted out, we hid the whole block from anyone signed in until there's a real page for the buttons to point to. Visitors who aren't signed in still get the original pitch, the cross-links, and the tracking. Customers see nothing there for now, which beats a label that promises one thing and lands on another.

## Four releases in one day

[Four releases went out the same day](/everyday-ai/one-page-for-one-imagined-visitor/) to get from "works for a first-time visitor" to "doesn't say the wrong thing to an existing customer."

1. The visitor-only version.
2. A split by login state, with the tracking label fixed in the same pass.
3. A revert to the correct design, after our own version missed it.
4. The block hidden from customers, once its buttons turned out to land on the wrong admin page.

Each was checked live before the next. None of it was in the original plan. All of it came from building one landing page for one imagined visitor and only checking, after it was live, whether the site's actual mix of visitors matched that picture.

Before a customer-facing page goes live, check it as a signed-in customer as well as a stranger. Write any deferred decision down plainly so it isn't mistaken for a missed bug. And if a design points to a page that doesn't exist yet, hold the block back instead of rewriting the copy or sending people somewhere else.
