Building a Maintenance Retainer Clients Actually Renew
Project revenue is a treadmill. Here's how to structure a support retainer that's genuinely worth paying for, priced so it doesn't quietly lose you money.
Project work has a structural problem. Every January you start at zero.
You finish a build, invoice it, and then you need the next one. Good year, bad year, the treadmill doesn't stop. And the client you just delivered for β the one who trusts you most and knows your work β walks away and becomes a stranger you'll cold-email in eighteen months.
Retainers fix that, but most agency retainers are badly built. They're either so vague the client can't tell what they're paying for, or so generous the agency loses money quietly for a year before noticing.
Why the vague retainer fails
"Ongoing support and maintenance β $1,500/month."
The client has no idea what that buys. So one of two things happens.
Either they use nothing, notice they used nothing, and cancel. Or they treat it as unlimited access and send you forty requests a month, and you're now doing $6,000 of work for $1,500 while resenting a client you used to like.
Both outcomes end the relationship. The vagueness caused both.
What a good retainer contains
Make it concrete. Someone should be able to read it and know exactly what they get.
The stuff that happens whether or not they ask. This is the backbone, and it's what justifies the fee in a quiet month:
- Hosting and uptime monitoring
- Security updates and dependency patching
- Backups, and periodic restore testing
- SSL and domain renewal management
- Performance checks
- A monthly summary of what was done
A defined block of work time. A specific number of hours per month for changes, fixes, and small features. Specific, not "as needed."
A response commitment. Not a full SLA with penalties unless you're at that scale, but something real: "critical issues within 4 business hours, everything else within 2 business days." Clients value this more than almost anything else on the list, because their real fear is being ignored when something breaks.
Rollover, with a limit. Unused hours roll to next month, capped at one month's worth. This is the single change that most improves how a retainer feels to a client. Without it, an unused month feels like theft. With an uncapped rollover, they bank six months and hand you a nightmare in July.
What's not included. New features beyond the block, redesigns, third-party costs. State it plainly so the conversation happens now, not during an awkward invoice dispute.
Pricing it so it survives
Two mistakes, in opposite directions.
Pricing off hours alone. The always-on work β monitoring, patching, backups β has real value even in a month where nobody asks for anything. If you price purely per hour, a quiet month looks like a waste to the client and they cancel.
Not tracking actual time. You need to know what each retainer really consumes. Not to bill by the minute, but because a retainer that's consistently running double its hours needs a conversation, and you can't have that conversation without data.
A structure that works: a base fee covering the always-on work, plus an included block of hours, with a clear rate for anything beyond it. The client sees value in quiet months and you're protected in busy ones.
Review pricing annually. Costs go up, scope creeps, and a retainer priced three years ago is almost certainly losing you money now.
Make the work visible
The biggest reason retainers get cancelled is invisibility. Nothing broke, so it looks like nothing happened.
That's the paradox: the better you do this job, the less the client notices.
So show them. A short monthly note β what you patched, what you monitored, the uptime figure, anything you fixed before they saw it. It takes ten minutes and it's the difference between renewal and "what are we actually paying for?"
If you have a client portal, put it there. If not, an email is fine. The format matters far less than the fact of it.
The upgrade conversation
A retainer isn't just recurring revenue. It's a standing relationship with someone who already trusts you.
That's where the next project comes from. You're in their systems every month, so you see the problems before they do. "I noticed your checkout is losing people on mobile β want me to look at it?" is a much easier sell than any proposal you'll write cold.
Agencies that treat the retainer as a low-effort maintenance chore miss this entirely. The retainer is the relationship. The projects are what it produces.
Selling it at the right moment
Sell it at handoff, not six months later.
At handoff the client is happy, the work is fresh, and they're anxious about being alone with something they don't understand. That anxiety is real and the retainer genuinely solves it.
Frame it as continuity rather than insurance: "we stay on, keep it patched, and you have someone who knows this codebase when you need a change." That's the honest pitch and it's more compelling than a list of scary things that might happen.
Make it the default in your proposal β included, with an opt-out β rather than an upsell they have to choose. Far more clients keep it.
The number that tells you it's working
Track what portion of your revenue is recurring.
If it's under 20%, every quarter starts from nothing. Getting to 30 or 40% changes how the business feels: payroll is covered before you win anything new, and you can turn down bad-fit projects because you're not desperate.
That's the real benefit. Not the margin on any single retainer β the fact that you get to be choosy.
We build and maintain web applications for US agencies under their brand, including ongoing support. See how we work.