Be seen. Be heard. Be found.
We Took the Client Anyway. Here's What It Cost Us.
Every agency has one of these stories.
A cautionary tale for web agencies and developers who've ever pushed down a gut feeling to close a deal — and the hard lessons we're still applying today.
Every agency has one of these stories. The project that, in hindsight, had disaster written all over it from the first call. You pushed through anyway, did the work, and somewhere between the third round of "can we just change one small thing" and the client insisting the whole thing was your fault, you found yourself wondering how you got there.
This is ours. We're sharing it not to vent, but because we genuinely believe that if more agencies talked honestly about this stuff, fewer of us would keep learning these lessons the hard way.
How it started: the prospect who came back
They'd approached us before. We went through the whole discovery process, put together a quote, and they didn't go with us. That's cool — it happens. Months later, they came back around. They'd shopped the market and, after considering their options, decided they wanted to work with us after all.
It sounds flattering. It wasn't. Looking back, it was the first red flag we missed — or more honestly, the one we acknowledged and then ignored. A client who shops around, can't commit, and eventually circles back isn't necessarily a client who now believes in your value. Sometimes they're a client who couldn't find a cheaper option they trusted, and you're now the default.
There was another dynamic at play that we underestimated: generational expectations. This client operated in a way where assumptions filled the gaps between conversations. No matter how much we documented, no matter what we put in writing, there was a persistent belief that things "should just work" in whatever way they had imaged— even if that image only lived with them. It created a communication gap we never fully closed.

The scope that quietly grew legs
The project was an e-commerce build on Shopify. Clear brief. Accepted quote. Agreed deliverables. And then, gradually, the edges started to blur.
It wasn't one big moment — it rarely is. It was the slow accumulation of small things. A "can we just add" here, a "we assumed that meant" there. Each one felt minor in isolation. Together, they added up to a project that bore increasingly little resemblance to what we'd scoped.
Then came the technical surprise. The client requested a change to how a unique matrix of calculated deposits would work on the site. On the surface — to them — it seemed like a small configuration tweak.
In practice, it required a level of customisation that the platform and the app we'd quoted simply couldn't support. We'd scoped a common percentage-based deposit solution using a Shopify app that did exactly that. What they now wanted was a granular, custom-logic deposit system — a fundamentally different build.
The gap between "I want X" and "I want X to work exactly like this specific thing I've visualised" is where most scope disputes are born. The client wasn't lying when they agreed to the original scope — they genuinely didn't know yet that what they wanted was something different and only shared it well into the project.
We explained the issue clearly. We explained it again. We advised them on what was achievable. We suggested similar pathways. The downstream delays and complications told a different story.

The content problem nobody talks about enough
If there's one thing that kills Shopify builds faster than scope creep, it's client-supplied content going sideways. We'd agreed from the start that the client would provide product imagery. This was an e-commerce site — product photography isn't optional, it's the whole point.
Midway through the build, they changed their minds. Not just about some images — they started removing product imagery from the plan altogether. For an online store. We raised this as strongly as we could without crossing into "we told you so" territory. We still believe that decision will be a material factor in how the site performs once it's live.
But here's the thing: we had no contractual mechanism to enforce the content brief. The scope said they'd supply it. There was no clause that defined what happened if they didn't, or changed their mind, or supplied something entirely different to what was discussed. That's on us.
"If the client doesn't deliver their part, you need a contract that says so clearly — not a conversation that assumes goodwill."
How it ended: blame, bad faith, and a decision to walk
Things deteriorated. The client began attributing failures — delays, unmet expectations, feature gaps — to us, despite the trail of change requests and ignored advice behind them. The calculated deposit feature became a particular flashpoint. Their position was that we'd agreed to deliver it.
Our position was that we'd agreed to deliver a specific app-based solution, and what they were now demanding was a custom build we'd never scoped or priced.
They offered to settle at 50% of the outstanding amount. We accepted it — not because we were in the wrong, but because the alternative was continuing to work with a client who wouldn't hear us. Some battles aren't worth winning if the cost is your team's energy, your reputation, and months of your calendar. We believe their site will struggle. We genuinely hope we're wrong.
But without a client who takes advice, the best-built platform in the world will underperform.
So what do we do differently now?
The survival guide: what we've changed
Interview before you quote
A quote process is not just a pricing exercise — it's a discovery exercise. Before you open a calculator, spend real time understanding how seriously the client is taking this project. Ask who's making decisions. Ask what success looks like to them. Ask what's happened with their previous digital projects. You're not being nosy; you're doing due diligence. The answers will tell you more than any brief document will.
Make your contract do the heavy lifting
We now require signed acknowledgement of all briefing materials — not just the quote. The client must confirm they've read and understood the scope, including what's explicitly out of scope. Content deliverables are listed with deadlines. Failure to supply agreed materials triggers a formal process, not a polite email. Yes, some clients will baulk at this level of rigour. Good. You've just saved yourself a project.
Trust the red flags you already notice
We knew. In that first re-engagement conversation, something didn't sit right. We talked ourselves out of it because the project was there and the revenue was real. The red flags worth watching aren't exotic or hard to spot — they're the feelings you notice and then ignore. A client who shopped around and came back. A prospect who haggles on price before understanding the value. Someone who talks more than they listen in early conversations. Pay attention to these. They don't always mean walk away, but they do mean proceed with extra rigour.
Know when to let a project go
This one's uncomfortable but important. There are clients you cannot help — not because you lack the skills, but because the relationship dynamic makes good work impossible. When a client won't take advice, when they change decisions and then deny they've changed them, when every communication becomes adversarial — the project is already lost. The question is just how much it costs you before you acknowledge that. Accepting 50% and closing the relationship was, in retrospect, the right call. We made it later than we should have.
The uncomfortable truth about vetting
Proper client vetting will cost you some work. A more rigorous intake process, a more detailed contract, a harder set of questions before you quote — these things will occasionally cause a prospect to go elsewhere. That's the trade-off, and it's a real one, especially for smaller agencies where every project matters.
But here's the maths we now use: one bad project doesn't just cost you the margin on that job. It costs you the staff hours spent managing conflict instead of building. It costs you the opportunity cost of every other project those hours could have gone to. It costs you the mental load that lingers long after the final invoice. When you add that up, the project you "lost" because your contract was too thorough is looking pretty good.
We're not claiming to have this perfectly figured out. We're still refining our process, still finding the line between thorough and off-putting, still learning how to ask the hard questions without killing the relationship before it starts. But we're asking them now. That's new.
If you're reading this and a particular client just came to mind — trust that instinct. It's worth an extra conversation before you send the quote.
SEARCH ARTICLE
SOCIAL MEDIA CHANNELS
RECENT POST:














