Every agency knows the feeling: a project ships, the invoice clears, then the quiet panic of “what’s next?”. Project revenue is addictive when it arrives and exhausting when it does not. The fix is not working harder — it is building recurring revenue that turns the pipeline into a bonus instead of a lifeline.
At CODE TỐT, a Vietnamese WordPress agency, recurring revenue now covers a meaningful share of our monthly costs — built by productizing care plans, disciplining retainers, and stop giving hosting away. Here is the playbook, the numbers, and the mistakes we made.
Why Recurring Revenue Matters
Retainer revenue represents 21–30% of a web agency’s total profit, and agencies that push recurring services (SEO, hosting, maintenance) can lift that to 31–40% while keeping client retention at 80–90%, per BusinessDojo’s retainer economics analysis. WP Engine puts it simply: recurring revenue transforms an agency from a one-off vendor into a stable, trusted partner. For us it was cultural: we stopped pricing in panic.
Three Layers of Recurring Revenue
We run three complementary layers, each with different margins:
- Care plans (maintenance) — updates, backups, uptime monitoring, and a monthly health report. The cheapest, easiest sell, and the natural follow-up to every build.
- Retainers (dev hours) — a block of hours for improvements and small features, for clients who always ask for “small changes”.
- Hosting — managed hosting wrapped into the plan. As Kinsta’s agency playbook notes, bundling hosting into a broader package turns a cost center into a value story.
How We Package Care Plans
Packaging matters more than pricing. A vague “maintenance” offer is impossible to compare; named tiers make the decision feel safe. Pressable’s research on agency recurring revenue recommends exactly this. Our tiers (USD/month):
| Plan | What’s included | Price |
|---|---|---|
| Starter | Updates, backups, uptime alerts | $49 |
| Growth | Starter + monthly health report, 2 dev hours | $149 |
| Partner | Growth + 8 dev hours, priority SLA, strategy call | $399 |
Tiers create a natural upgrade path and price the outcome — a site that never breaks — not the effort. We dig deeper in our guide to the economics of WordPress maintenance retainers.
Rules That Keep Retainers Profitable
- Cap included hours, bill the rest. An uncapped retainer is a subscription to scope creep.
- Never discount to win the first month. Offer a three-month minimum with a written scope instead.
- Review the plan annually. Every renewal is a chance to raise price with added value.
- Never give hosting away. Make it a line item — clients respect what they pay for.
The same discipline powers our productized service model, where fixed scope and price replaced hourly guessing.
Automation Is the Margin
A care plan is only profitable if it does not eat a developer’s week. We automate aggressively — a small PHP array keeps our plans honest:
$plans = [
'starter' => ['price' => 49, 'hours' => 0],
'growth' => ['price' => 149, 'hours' => 2],
'partner' => ['price' => 399, 'hours' => 8],
];When a site needs nothing, the retainer is pure margin; when it needs something, the hours are already paid for.
Key Takeaways
- Recurring revenue can grow from 21–30% to 31–40% of profit with 80–90% retention.
- Stack three layers: care plans, dev retainers, and managed hosting.
Still living project to project? Convert your last three happy clients to a care plan this month. Want a partner who has already made these mistakes? Talk to our team — we would rather grow your site than sell you another rebuild.


