All articles

how much to charge for website maintenance

How Much to Charge for Website Maintenance

Learn what website maintenance includes, how to price it (retainer, tiers, hourly), and a step-by-step estimator to quote confidently.

You can price a website project precisely, then lose money every month on “maintenance.” The problem usually isn’t your skill—it’s that maintenance is vague, and vague scope turns into endless updates, emergency fixes, and awkward client expectations.

Below is a maintenance pricing guide you can reuse: define what’s included vs excluded, pick a pricing model, estimate effort based on site complexity and support level, and quote tiered monthly packages with confidence.

Freelancer reviewing a maintenance checklist on a laptop at home office in the evening

What “website maintenance” typically includes (and what to exclude)

Clients say “maintenance” when they really mean a mix of operational tasks and change requests. Your job is to separate the two so you’re not paying for feature work under a “keep it running” retainer.

Included maintenance categories (common scope)

Use these as your base package items:

  • Security updates: CMS core updates, security patches, dependency updates (themes/plugins as applicable).
  • CMS & plugin/theme updates: routine updates to keep the site compatible.
  • Backups: scheduled backups and restore testing (restore testing matters more than “we backup sometime”).
  • Performance monitoring: basic checks (page speed regressions, uptime alerts, error-rate monitoring).
  • Bug fixes (non-feature): fix broken layout/functionality caused by maintenance updates or minor issues.
  • Uptime/monitoring: alerting for downtime, certificate/SSL renewal checks (if your hosting stack requires it).
  • Hosting-related work (limited): things like configuration tweaks, DNS adjustments for small issues—only if it’s clearly part of your service.
  • Content updates (optional, but common): small edits (e.g., swap a hero image, update a paragraph, publish a blog post) if you offer them.

Exclude the “maintenance” clients might request

Make these explicit in your proposal and retainer terms:

  • Feature requests / new functionality (custom modules, new forms, new integrations)
  • Major redesigns or migrations (new theme rebuilds, re-platforming)
  • Large content projects (ongoing copywriting, SEO strategy, bulk blog creation)
  • Third-party chaos (client adds new plugins/themes, then expects you to debug everything)
  • Hosting ownership scope: if the client controls hosting, clarify what you do vs what they do
  • Restore responsibility beyond normal conditions: e.g., you’re not on the hook for restoring after their accidental deletion without a change log or backup availability terms

A good rule: maintenance should keep the site healthy; change requests should improve it. Price them differently.

If you’re unsure which blind spots are costing you time, run a quick self-audit using the Freelance Business Check—maintenance pricing often shows up as “why am I always working after hours?”

Common pricing models (and when each one works)

There isn’t one correct answer, but there is a correct fit for your workflow and the client’s expectations.

1) Hourly

Best for: clients with irregular needs or very unclear change frequency.

Pros:

  • You’re paid for the actual work.

Cons:

  • Clients budget poorly, and small tasks can feel like “you’re billing me for everything.”
  • You must define an hourly rate + what’s billable vs included.

How to make hourly workable:

  • Offer an included baseline (e.g., up to X maintenance tasks/month), then bill hourly after.
  • Use a response-time SLA only if you’re charging for it.

2) Monthly flat retainer (most common)

Best for: ongoing sites where maintenance events are likely.

Pros:

  • Predictable for clients.
  • Predictable for you (if scope is tight).

Cons:

  • Risky if your “included” tasks expand.

To protect margin:

  • Put a cap on included updates/issues (e.g., “up to 2 plugin update cycles + up to 4 bug fixes/month” or “up to 2 hours of support included”).
  • Define what counts as a bug fix vs a feature.

3) Tiered monthly plans (recommended)

Best for: building a menu clients can choose from.

Pros:

  • Clients self-select.
  • You can scale effort with price.

Cons:

  • You must be consistent and disciplined.

A tiered plan usually maps to:

  • monitoring/response level
  • number of updates included
  • content change allowance (if any)
  • included hours for support

4) Per-site vs per-client

Per-site makes sense when clients manage multiple distinct domains that differ in complexity.

Per-client can work if the sites are similar and your support channels are shared—but only if you attach clear “per site” limits.

Common pitfall: per-client pricing becomes de facto per-site pricing with no visibility, because one “small” site quietly needs more time.

Freelancer in a cafe taking notes while mapping maintenance tiers and included tasks

Step-by-step estimator: calculate a monthly maintenance fee

Forget guessing. You can build a simple estimator from three inputs:

  1. baseline maintenance effort (complexity)
  2. change frequency (content/plugins/incoming requests)
  3. support level (response-time + urgency handling)

Step 1: Score site complexity

Create a complexity score based on what actually adds work:

  • CMS type (e.g., WordPress vs headless vs custom)
  • Plugin/theme count (more plugins = more update risk)
  • Custom code (custom overrides break more often)
  • Integrations (forms, CRM, payment gateways, booking systems)
  • Number of environments (staging + production adds time but reduces broken releases)

You can convert this into a practical estimate like:

  • Low: 0–3 plugins + minimal custom code
  • Medium: 4–10 plugins + some custom edits
  • High: 11+ plugins, heavy custom work, or fragile integrations

Step 2: Estimate maintenance “events” per month

Not all months are equal. Think in categories:

  • routine update cycle(s)
  • security patch urgency
  • compatibility issues after updates
  • bug reports from client changes

Then decide the level of included support.

Example event assumptions (qualitative):

  • Low-maintenance sites might see few update-related issues.
  • High-maintenance sites will likely require more “review and fix” time even when updates are straightforward.

Step 3: Decide what support level you’re selling

Define response/handling. Clients don’t just buy updates—they buy reassurance.

A simple SLA ladder:

  • Basic: response within 1–2 business days; scheduled maintenance windows
  • Standard: response within 24 hours; maintenance included; fixes batched
  • Premium: response within a few hours during business days; includes urgent handling and faster turnaround

The moment you promise faster response, you should treat that promise like an additional product—not just a courtesy.

Step 4: Add content change allowance (if you offer it)

If you include small content edits, state the unit:

  • “Up to 5 content changes/month”
  • or “Up to 2 hours of content support/month”

And define what counts as a “change.” A typo fix is different from rewriting a full landing page.

Step 5: Convert effort to price

Use your real billable math:

  • Estimate monthly hours needed for each complexity tier.
  • Multiply by your effective hourly rate (your baseline hourly + overhead + admin + risk).
  • Add a small buffer for the unknown (maintenance always has unknowns).

If you don’t track time yet, start with a conservative estimate based on the last 3 months of your update work, then adjust after 2–3 maintenance cycles.

Sample tiered plans (with clear assumptions)

Here are example tiers you can adapt. The key is not the exact dollar amount—it’s the structure and assumptions clients can understand.

Basic (Keep it healthy)

Assumptions: low complexity, predictable updates, limited content edits.

Includes:

  • monthly maintenance update cycle (CMS + critical plugins/themes)
  • backups (scheduled)
  • basic monitoring (uptime + error checks)
  • up to X bug fixes/month (define X)
  • content changes: up to 5 small edits/month (or 1 hour)
  • support: response within 1–2 business days

Standard (Ongoing support)

Assumptions: medium complexity, occasional issues, some integrations.

Includes:

  • 2 maintenance cycles/month (or one cycle + security follow-up)
  • backups + restore testing (e.g., quarterly or on major updates)
  • performance monitoring (basic reports)
  • bug fixes: up to X/month
  • content changes allowance: up to X hours/month
  • support: response within 24 hours

Premium (Faster turnaround)

Assumptions: high complexity, frequent plugin activity, more urgent client needs.

Includes:

  • scheduled maintenance + faster patching window
  • backups with more frequent restore checks
  • deeper monitoring (regression watch where feasible)
  • higher bug-fix allowance (or more hours)
  • priority support and faster turnaround
  • clear emergency process (see next section)

If you want to avoid underpricing, structure each tier around included hours or included events, not vague promises like “we handle maintenance.”


Desk close-up with a maintenance workflow checklist, calendar blocks, and a laptop showing abstract uptime monitoring concepts

Edge cases that break maintenance pricing (and how to handle them)

Maintenance retainers fail in predictable edge cases. Define them once, and you’ll prevent most disputes.

Emergency fixes

Define what “emergency” means:

  • site down / critical checkout broken
  • security incident / active compromise
  • production environment broken after update

Then define:

  • response window
  • billing rule (included premium support vs emergency hourly rate)
  • cap (e.g., emergencies are handled, but after X hours it’s change-request territory)

Major updates (big migrations, theme rewrites)

If a major update risks breaking layouts, you’re not doing “maintenance”—you’re doing a mini project.

Add a rule:

  • “Major updates require a separate estimate after compatibility assessment.”

You can still include prep work (testing plan), but the risky implementation should be priced.

Feature requests

A maintenance retainer is for keeping the lights on. Feature requests are improvements.

Your policy might be:

  • small UI tweaks within page templates = included up to X
  • anything requiring new functionality/integration = quote separately

Broken builds after updates

This is common and fair to handle—but only if you define responsibility.

Include clauses like:

  • You perform updates in a staging environment when available.
  • If the update breaks production, you fix it under maintenance scope up to X hours.
  • If the client introduced changes or added plugins after the last update, it becomes a change request.

Related reading: How Much to Charge as a Freelancer: Pricing Tools · Freelance Pricing That Works: A Repeatable Method

FAQ: why maintenance rates vary (and what to tell clients)

Use this script to keep conversations clear.

“Why does it cost more for this site than the other?”

Because maintenance effort scales with:

  • number of plugins/integrations
  • custom code and how many places updates can break
  • support expectations (response time)
  • how often the client makes changes

“What exactly am I paying for each month?”

You’re paying for:

  • routine updates and security patching
  • backups and monitoring
  • defined bug-fix bandwidth
  • a response commitment so small problems don’t spiral

“Can you just handle any request I send?”

No—maintenance is for defined upkeep. If you ask for new functionality, it becomes a change request and we’ll price it with a quick estimate.

“What if you need time to test updates?”

Testing is part of preventing breakage. Your plan should include a standard testing window, and major updates are quoted separately.## A closing checklist you can paste into your maintenance proposal

  • What’s included: security, updates, backups, monitoring, bug fixes, defined content edits
  • What’s excluded: new features, major redesigns, migrations, bulk content, client-driven plugin changes
  • Your pricing model: hourly/retainer/tiered
  • Your tier assumptions: site complexity + included hours/events
  • Your SLA: response time and emergency handling
  • Your edge-case rules: major updates, broken builds after updates, feature requests

If you do those things, you’ll be able to quote a monthly maintenance range that feels fair to clients—and sustainable for you.

If you want a simpler way to align scope, communication, and recurring billing without everything living in spreadsheets and email threads, tools like Jolix can help you centralize proposals, contracts, invoicing, and client portal updates in one place.

Website Maintenance Pricing: What to Charge — Jolix