Almost every ‘the price changed halfway through’ story on a web project traces back to the same root cause: the scope was described in a sentence, not a list. ‘A modern website for my business’ can mean a five-page brochure site or a twenty-screen product with a CMS behind it, and both of those are reasonable interpretations of that sentence.
Before you talk to anyone about price, it’s worth writing down: how many distinct pages or screens, whether content will be editable by someone on your team after launch, what integrations are non-negotiable (booking systems, payments, a specific CRM), and what ‘done’ looks like — a working prototype, or something ready for real traffic.
The other thing worth deciding upfront is revision rounds. Open-ended ‘we’ll iterate until it’s right’ sounds friendly but is the single biggest source of scope creep, because there’s no shared definition of when the project is actually finished. A fixed number of revision rounds, agreed before work starts, protects both sides.
None of this needs to be a formal document. A short list of pages/screens, must-have integrations, and revision rounds is usually enough for a fixed quote that doesn’t move once work begins — which is the whole point of scoping it in the first place.