Web Agency Monitoring: 30-Client Retainer Playbook
How a web agency manages 30 client retainers with Miterl: webhook maintenance windows, white-label status pages, and engineer-led investigation on Pro.
The team and assumptions
This use case follows a fictional 10-person web agency, "Agency A," based in Tokyo and Osaka. They primarily build and maintain corporate websites for SMBs. Their portfolio: 30 active clients, 90 production sites under maintenance contracts at ¥30,000–100,000 per month per client.
Until recently, their "uptime monitoring" was effectively a phone call from the client saying "the site is down." This use case walks through what changed in the three months after they adopted Miterl, ending with a model where monitoring and incident investigation became a sellable line item rather than an unpaid burden.
Three pain points before adoption
1. Clients told them about outages first
Off-the-shelf monitoring SaaS catches downtime, but doesn't investigate root cause. Engineers had to dig through logs at 2 AM themselves — and clients usually called before they finished investigating. Trust quietly eroded with each incident, and renewal conversations got harder.
2. Deploy-time false alerts trained the team to ignore alerts
Major CMS upgrades (WordPress, Movable Type) and server migrations triggered DOWN alerts during planned work. Slack would buzz at 2 AM, and the team would shrug it off as "yeah, that's the deploy." A culture of "ignore the channel" set in, and real incidents started getting buried.
3. Monthly reports and incident write-ups were assembled by hand
"Last month's uptime was 99.95%" took an engineer 3–4 hours every month, with a different format per client and no template to reuse. Every incident triggered another from-scratch Word document. Pure unpaid overhead.
Three reasons Miterl made the cut
| Concern | What worked |
|---|---|
| Engineer-led incident investigation | Pro plan: 3 cases/month included, with NDA-backed server-internal access |
| Maintenance windows | One webhook call from the deploy script |
| White-label | From Standard: hide "Powered by Miterl", custom domain — ship it as Agency A's own service |
The single biggest unlock was replacing late-night log digging with a next-business-morning investigation report. Miterl's investigation desk runs weekdays 10:00–19:00 JST (Standard: first response within 4 business hours, Pro: within 2). Late-night work stopped landing on Agency A's own people, which paid for the subscription on engineer-retention alone.
Operational playbook
1. One Workspace per client
Agency A separates each client into its own Workspace. Project managers receive viewer access to their assigned Workspaces only; engineers get member access for monitor-rule edits. Onboarding/offboarding became trivial — flip permissions, no SQL surgery.
For a quick cross-client health check, the on-call engineer pulls every monitor's status in a single API call each morning instead of clicking through 30 dashboards.
# Morning health check: list every monitor's current status
curl -s "https://miterl.com/api/v1/monitors?per_page=100" \
-H "Authorization: Bearer YOUR_API_KEY" \
| jq -r '.data[] | "\(.status)\t\(.name)"'
2. Webhook-based maintenance windows in CI/CD
Each Workspace mints a maintenance webhook token. The deploy script wraps real work between START and END calls — works equally well in GitHub Actions, Bitbucket Pipelines, or self-hosted Jenkins.
# Before deploy
curl -X POST https://miterl.com/api/v1/webhooks/maintenance/$MITERL_TOKEN/start \
-H "Content-Type: application/json" \
-d '{"duration_hours": 1, "name": "Deploy v1.2.3"}'
# Real deploy steps
./deploy.sh
# After deploy
curl -X POST https://miterl.com/api/v1/webhooks/maintenance/$MITERL_TOKEN/end
Monitoring is paused for the whole window. If the deploy runs long, the duration_hours cap auto-resumes monitoring — no risk of leaving a site silently unmonitored if the END call is forgotten.
3. Hand investigations to Miterl's engineers
Agency A added an SLA clause to the maintenance contract: first client contact within 1 hour during business hours, by the next business morning for overnight and weekend incidents. Miterl pushes alerts into a #oncall Slack channel; the on-call engineer makes the first contact and decides next steps, then opens an investigation request to Miterl (3/month on Pro, weekdays 10:00–19:00 JST, first response within 2 business hours).
Miterl's engineers come back with a root-cause and remediation report (PDF). Agency A re-brands it with their own logo and forwards it to the client. Late-night investigation work moves from your engineer's keyboard to a next-morning report — that change alone reduced engineer churn risk significantly.
4. On-call drills
You can't validate your alert routing or the on-call playbook without real incidents. Drill mode fires simulated incidents on a schedule — Agency A runs one drill per month. New hires reach independent on-call rotation within 3 months. Drills never appear on public status pages, so they're safe to run during business hours.
5. Automated monthly reports and incident write-ups
On the first of each month, every Workspace generates a monthly uptime report as a shareable URL / PDF, branded with Agency A's logo and colours. Format is consistent across clients. Engineering effort dropped from 3 hours/month to 15 minutes. Incident reports are auto-generated too — the "writing the post-mortem in Word" task is gone.
White-label: ship it as Agency A's own service
From the Standard plan you can erase Miterl's brand from everything client-facing:
- Replace logo and brand colour with Agency A's
- Hide the "Powered by Miterl" mark
- Publish the status page on a custom domain like
status.client.com(one CNAME on the client's DNS)
Clients see Agency A's maintenance service. Miterl's existence as a tool stays internal. Built for the resell model.
Cost model
Agency A picked the Pro plan (¥49,800 / month). Pro includes 100 monitors, 1-minute intervals, all notification channels (incl. LINE, SMS, Webhook), 3 investigation cases per month with NDA-backed server-internal access, and priority support.
90 sites on Pro = about ¥553 per site per month in raw cost.
Bundle "24/7 automated monitoring + next-business-day investigation report" into the maintenance contract at ¥4,000 / month per client:
- 30 clients × ¥4,000 = ¥120,000 / month of new revenue
- Less Pro subscription ¥49,800 = ¥70,200 / month of net margin
You're not selling "monitoring." You're selling "we detect issues before your clients do, investigate root cause, and report it back under our own brand." That's a different, much more durable line item.
A pitch you can copy
"Your current maintenance contract covers incident response, but in practice you usually notice the issue before we do. We'd like to flip that with a 24/7 automated monitoring + business-hours investigation add-on — ¥4,000 / month — that catches SSL expiry, missing keywords, slow pages, and (when something does break) hands you a root-cause report from our engineers, not just a 'site is down' alert. Incidents detected overnight are picked up first thing the next business morning."
Bring last year's incident count, average time-to-detection, and a rough estimate of revenue lost during downtime. Concrete numbers close deals.
Related reading
- Miterl Documentation — monitor types, notification setup, API reference
- Features for agencies — agency-specific positioning and pricing
- Practical guide — three-step adoption playbook from 5 minutes to half a day
- Pricing — Free / Standard / Pro tiers
- All use cases — playbooks for other industries
- Set Up Monitoring Alerts for Slack, Chatwork, and LINE — route downtime alerts to the channels your team already uses
- How to Add Website Monitoring to Your Maintenance Contracts — bundle monitoring into your retainer pricing
- Sign up for Miterl — start a free trial with no credit card required