Web Development Contract Template — The Complete Guide
Web development projects go wrong in predictable ways: scope creep, missing assets, endless revisions, and the classic “can you just add one more thing?” A solid contract prevents all of them.
What makes web dev contracts different
Generic freelance contracts miss several web-specific scenarios. Your contract needs to handle:
- Browser and device compatibility requirements
- Third-party integrations and API dependencies
- Hosting, domain, and DNS responsibilities
- CMS training and handover
- Post-launch maintenance (or explicit lack thereof)
- Performance benchmarks (load time, Core Web Vitals)
Essential clauses for web developers
1. Technical specification
Go beyond “build a website.” Your scope should specify:
- Number of pages or templates
- Tech stack (Next.js, WordPress, Shopify, etc.)
- Responsive breakpoints (mobile, tablet, desktop)
- Browser support (modern browsers, IE11+ if you hate yourself)
- Third-party services included (analytics, forms, payment processing)
- Content — who provides it, in what format, by when
2. Design approval process
Define when the client signs off on designs and what happens after sign-off. Changes to approved designs should be treated as change requests with additional cost.
Two rounds of design revisions is industry standard. After sign-off, development begins — going back to design is a change request.
3. Milestone payments
For projects over £2,000, use milestones:
- 30% on contract signing (deposit)
- 30% on design approval
- 30% on development completion
- 10% on launch
Tie each payment to a deliverable, not a date. If the client delays feedback, they delay their own timeline — not your payment.
4. Content and assets clause
“The Client shall provide all copy, images, logos, and brand guidelines within 5 working days of request. Failure to provide content by the agreed date may delay the project timeline.”
Add a content deadline that's at least 2 weeks before launch. Websites that launch late almost always launch late because of missing content.
5. Hosting and domain
Clarify who owns the hosting account and domain. Best practice: the client owns both, and you get temporary access during development. This avoids the messy situation where a freelancer holds a client's domain hostage.
6. Post-launch support
Be explicit. Either include a support period (“30 days of bug fixes for issues present at launch”) or state clearly that post-launch support is a separate engagement.
Define what counts as a “bug” vs a “feature request.” A broken contact form is a bug. Adding a blog section is not.
7. Source code and IP
Custom code transfers to the client on final payment. But be clear about what you retain:
- Your pre-existing frameworks and libraries
- Third-party code (which has its own licence)
- The right to use the project in your portfolio
The change request process
This is the clause that saves web developers the most money. Any work outside the agreed scope requires:
- Written request from the client
- Your assessment of time and cost
- Written approval before work begins
Without this process, “can you just...” becomes unpaid work. With it, every change is documented, quoted, and paid for.
Generate a web development contract
Contract Kit includes a specialised Web Development Agreement with all these clauses. Answer a few questions, download PDF.
Create contract →