Technote

Development workflow Practical

Series What to know before you hire a developer Part 6 of 8

What belongs in a maintenance agreement

If you pay a monthly fee and cannot say what you get for it, the agreement is missing scope and response times. Four clauses make it workable for both sides.

Maintenance agreements fail in two ways. Either there is no agreement at all, so every incident is renegotiated from scratch, or there is a monthly fee and nobody can say what it buys. The second is more common and lasts far longer.

The fix is four clauses written in plain sentences: scope, response times, reporting and exit.

1. Scope — included and excluded

Maintenance generally divides into three layers. Copying that structure straight into the agreement makes every later conversation faster.

Three layers of maintenance — separate billing gets more natural as you go down

Upkeep repeats on a schedule, so a fixed fee suits it. Response is unpredictable but belongs inside the agreement anyway, because the middle of an outage is the worst possible moment to negotiate a price. Change is more honest kept separate; pushing new features into a fixed fee eventually leaves someone short.

One misconception is worth naming here. WordPress is not unstable because it updates often. Frequent updates mean problems get fixed when they are found, which is characteristic of software that has lasted. The risk sits not in the tool but in a site that has stopped following those updates, and a maintenance agreement exists precisely to prevent that state.

2. Response times — time to what, exactly

“We respond quickly” is not a clause. Write two separate times: time to respond (acknowledging that someone has seen it) and target time to restore (getting back to normal). They are entirely different commitments.

Then add severity levels. A site that will not load and a typo on one page cannot carry the same promise. Three levels is usually enough.

The same team responds better simply for having levels defined

Write down the channel too: where to report, what the working hours are, and what happens outside them. If there is no out-of-hours cover, say so — expecting cover that does not exist is the worst of the available states.

3. Reporting — is there a record?

This clause changes the character of the whole arrangement. Once a month, even a single page, there should be a record of what was updated and what was checked. A record narrows down causes when something later goes wrong and, just as importantly, makes the fee visible.

A minimum report contains: the updates applied this month, whether backups are being created and are restorable, and anything found but not yet actioned along with the reason.

4. Exit — what you receive when it ends

The clause nobody enjoys drafting and everybody needs. Agree the handover scope in advance: backups, credentials and documentation delivered within how many days, and whether that work carries a separate fee. The handover list from the previous part transfers over almost word for word.

A supplier who proposes this clause themselves is worth trusting. Writing down how the relationship ends is a statement that they do not intend to retain clients by making leaving difficult.

For a worked example of how ongoing monitoring and updates can be packaged, see our InfraGuard passes, and if a one-off overhaul has to come first, the optimization program covers that.

Next part

With the shape of the agreement decided, the next question is who to work with. The next part covers freelancers and agencies — and the deciding factor is not cost.

More on this topic

All technotes

Development workflow Practical

Turning taste arguments into rule checks

"It feels a bit cramped" can be neither argued with nor fixed. Spacing off the scale, colour off the palette, contrast below threshold, missing states — four rules…

Designers 9 min read

Development workflow Practical

Do not swap everything at once

A full swap makes every problem appear at the same moment — which means none of them can be attributed. So you switch one template at a time.

Designers 6 min read

Development workflow Practical

Adding an SCSS build, and whether to commit the output

WordPress themes are expected to deploy without a build step, which leads to the opposite conclusion from ordinary application code — and to its own costs.

Developers 7 min read

₩270,000 · Join the program