Seven minutes on /work/ and no hire button: the problem wasn't the copy

The GA4 segment collapsed to one user.

I’d filtered for Upwork referrals, desktop, returning visitors. The expectation was a small cohort: a handful of people doing preliminary research before reaching out. One person came back. Thirteen-plus sessions. Seven straight minutes on /work/. Two courses. Several other pages. No hire, no contact, no message.

The session trail reads like someone doing due diligence on a supplier they’ve already decided they want. They never asked for a quote. That gap is the whole problem.

What the data was actually saying

Seven minutes on /work/ is not a low-engagement number. That’s someone reading. Case studies, positioning, evidence of capability. All of it was holding attention for longer than most articles on the web do. The copy was working.

What the page wasn’t doing was closing.

The first instinct, on seeing the session data, was to improve the copy. More social proof, tighter positioning, better headline above the fold. That instinct was wrong. A seven-minute dwell time tells you the copy is working. More of the same copy solves a different problem.

The real problem was structural. The page ended. That was it. No next step, no mechanism to act, no route from “I’ve read everything here” to “I want to start a conversation.”

I spent years in retail before writing any software professionally. The framing I reach for: a sales floor without a till is an exhibition. You can browse for seven minutes, read every label, admire every item, and then leave. Not because you didn’t want to buy, but because there was nowhere to pay. The till is not persuasion. It’s transaction. Remove it and you haven’t made the experience more elegant; you’ve made it frictionless in the wrong direction.

A portfolio site has the same failure mode. Excellent case studies, compelling positioning, strong evidence of capability, and then the page ends. That ending is a choice. In most portfolio sites, it’s an unconsidered one.

The fix

The hire strip closes /work/: an ink-inversion panel with a blood left rule, a volt availability pulse, and a single action: start the conversation. No additional copy above the strip. No repositioning of the page. The content was already doing its job; it just needed a close.

Out of scope: A/B testing the strip against alternatives, optimising the strip copy, multi-step CTAs. The strip is the first iteration. It ships and we observe.

How I found the signal

Without the segment, the problem was invisible. The site had visitors. The site had session duration. Neither aggregate number told me one person had come back thirteen times without converting.

The segment was the diagnostic step. Filter by referral source, filter by device, filter by returning visitor. The segment collapsed to one user, and at that resolution the behaviour is legible: this person knew what they were looking for, came back to check, and found no mechanism to proceed.

Standard analytics views don’t show this. Averages obscure it. A single high-intent user in a low-traffic portfolio site registers as noise in aggregate: one more session in a bucket that already had reasonable numbers. The segment work existed to answer a specific question: what are the Upwork people doing? The answer was a case study of one, which is its own kind of clarity.

The segment took about twenty minutes to build. The signal it produced drove the whole week of work.

The rest of the funnel

The hire strip was the last piece. The session analysis revealed gaps the whole way up.

Homepage. Launches had no front door. /security/ was buried in the footer and a /work/ intro link. Nothing on the homepage indicated recent activity or current availability. A returning visitor couldn’t tell, from the top of the page, whether the site reflected active work or a dormant profile. The What’s New band now sits directly under the hero, blood-top border, recent work listed in ship order. The front page funnels. It didn’t before.

Contact page. The “Note on timelines” read as a rejection letter. Original copy, paraphrased: not taking rushed work, two weeks minimum, probably not the right person if timelines are tight. Written as a quality signal. Read through the eyes of a prospect who’s just spent seven minutes on /work/ and is ready to reach out, it’s a door closing in their face. The note is now a statement of how I work, with the minimum lead time named as a professional commitment rather than a deterrent.

Security. /security/ didn’t exist as a public surface. The internal security-by-design documentation sat in an internal folder with no public route: threat models, pentest reports, dependency scans, none of it reachable. A client doing due diligence can’t find what doesn’t exist. The page is now live: philosophy, working method, the approach to software architecture as a security discipline. It’s there as a discussion topic for the kind of client conversation where this matters. Not a trophy case, not a compliance checklist.

What didn't change

The core /work/ copy. Seven minutes is evidence it was working.

The visual structure of /work/ above the hire strip. Same case study format, same section order.

The rate or availability detail. That’s for the conversation, not the page.

What I'd do earlier next time

Build the segment on day one of any traffic analysis, not after noticing an interesting referral source in the top-line report.

The Upwork referral had been visible for months. So had the reasonable session duration. In aggregate, that looked like normal portfolio-site behaviour: traffic without an obvious conversion problem. The segment showed it was one person making a deliberate, repeated decision to return without finding a clear path to hire. Those are different problems with different fixes. One of them has a fix at all.

Aggregate metrics hide intent. Segments reveal it. Twenty minutes to build one. The cost of not building it was months of data that was visible but not pointing at the actual problem.

State after the week

  • Homepage: What’s New band, front door for recent work
  • /work/: hire strip, the till
  • /contact/: timelines note rewritten as signal, not filter
  • /security/: public, philosophy and working method visible to due diligence

If the anonymous visitor returns, there’s a route to act. Whether they take it is the next data point.

All writing