A retainer priced for 10 hours becomes a 30-hour month when every Slack "quick favour" lands in the same bucket. The fix is not working faster — it is an hours-cap clause in the SOW, a short task-category list, and a written path for anything over the cap.
Save the four emails below as Gmail templates. Replace the [BRACKETS] once per client and reuse.
1. Put the cap in the SOW (not in chat)
From the OpsPack VA niche guide, typical deliverables to list:
- [N] hours/month of support in listed task categories
- Inbox and calendar management during agreed hours
- Weekly written status update
- Shared task tracker maintained daily
- Monthly hours report
Write these into Out of scope:
- Tasks outside listed categories (e.g. bookkeeping, design, ads management)
- Work outside agreed hours / weekends
- Urgent same-hour requests unless on a priority plan
- Paid tools and subscriptions
- Rollover of unused hours (unless stated)
Hours-cap clause to paste into the services agreement (from the same guide — brackets are yours to fill):
Hours cap: VA will notify Client at [80]% of monthly hours. Hours beyond the cap require Client approval and are billed at $[RATE]/hour.
Unused hours: Unused hours [expire at month end / roll over up to [N] hours for one month].
And the SOW baseline:
Included: up to [N] hours per calendar month across the task categories listed in Schedule A. Hours are logged weekly and shared in the monthly hours report. Work requested after the cap is reached is out of scope until a written overage quote is approved.
2. Task categories beat vague "VA support"
Retainers drift by task-creep, not by revision rounds. Keep 5–8 categories in Schedule A. A new category triggers a scope review — not a free add. Hours over the cap need written approval.
Line items that keep the quote honest:
| Item | Pricing model |
|---|---|
| Monthly retainer (N hours) | monthly |
| Additional hours | per hour, 15-min increments |
| Priority / rush add-on | monthly |
| Onboarding + SOP setup | flat |
| Project work (outside retainer) | quoted separately |
3. Four emails when hours are about to blow
Approaching 80% of the monthly cap
Subject: Heads-up — [RETAINER / MONTH] hours at ~[XX]% of cap
Hi [NAME],
Quick status on our [MONTH] retainer ([HOURS CAP] hours / month): we’ve used about [HOURS USED] hours (~[XX]%), with roughly [HOURS REMAINING] hours left before the cap.
To keep priority work inside the retainer, I suggest we:
- Finish
[IN-SCOPE ITEMS]with the remaining hours - Park or schedule
[LOWER-PRIORITY ITEMS]for next month - Or approve a small overage block if
[URGENT ITEM]can’t wait
Reply with your preference and I’ll plan the rest of the month against the cap.
Thanks,
[YOUR NAME]
At the monthly cap
Subject: [RETAINER] — monthly hour cap reached for [MONTH]
Hi [NAME],
We’ve hit the [HOURS CAP]-hour cap for [MONTH] on [RETAINER].
Anything new from here is outside the included block. Options:
- Pause new requests until
[NEXT BILLING DATE] - Swap scope — drop/defer
[ITEM]so I can take[NEW ITEM]inside remaining/next-month hours - Overage — I’ll send a short quote for the extra hours at
$[RATE]/hr
I won’t start unpaid overflow work until you pick a path. Happy to jump on a 10-minute call if useful.
Thanks,
[YOUR NAME]
Overage quote
Subject: Overage quote — [HOURS] hrs on [RETAINER] ([MONTH])
Hi [NAME],
As discussed, here’s the overage for work beyond the [HOURS CAP]-hour retainer:
- Work:
[SHORT DESCRIPTION] - Hours:
[QUOTED HOURS] - Rate:
$[RATE]/hr - Total:
$[AMOUNT] - Timing:
[START / DELIVERY WINDOW]
Reply approved (or tweak the hours) and I’ll start. Payment terms: [NET 7 / due on invoice / same as retainer].
Thanks,
[YOUR NAME]
Decline unpaid overflow ("quick favour")
Subject: Re: [REQUEST] — needs an overage or next-month slot
Hi [NAME],
Thanks for sending [REQUEST]. We’re at (or past) the included hours for [MONTH], so I can’t take this as unpaid overflow without blowing the retainer.
Happy to help via either:
- Overage at
$[RATE]/hr — I can send a 1-line quote today - Next month — first priority when the
[NEXT MONTH]block resets on[BILLING DAY]
Which do you prefer? I’ll hold on the work until you choose so nothing gets lost.
Thanks,
[YOUR NAME]
For the classic “it’s just one quick change” message that arrives before you are near the cap, the VA kit’s triage reply still applies — pause, confirm whether it fits the current round, or send options (trade scope, move the date, add a fee, or defer).
4. Rollover: say none, or say the rule
Default that keeps arguments short: unused hours expire at month end unless the client pays for a banked-hours add-on. Silence here is how “unused hours” become a dispute in month three.
5. One kit link
Want the VA-ready proposal, SOW, services agreement, scope-creep emails and niche guide in one ZIP?
→ https://opspack.vercel.app/kits/client-contract-kit-virtual-assistants ($19)
Also: https://opspack.vercel.app/kits · free page https://opspack.vercel.app/client-tracker
Tracking hours against the cap in Notion: https://opspack.vercel.app/kits/freelancer-retainer-hours-notion ($15)

