Development contracts often look alike: scope, price, deadline, signatures. Problems appear only when something does not go to plan. Below are eight points where risks hide most often. This is a practical guide, not legal advice; show an important contract to a lawyer.
1. What exactly is delivered
Risk: the scope is generic (“develop a website”) and every extra page or feature becomes a dispute. Check for a list of pages, sections and functions, or a reference to an annex (a brief, a technical description); what is included (design, content, translations, redirects from the old site, training) and what is not; and how changes are handled: in writing, with a new estimate before work starts. A good brief reduces this; see the web project brief article.
2. How work is accepted
Risk: “done” is not defined, so the invoice is issued but the site does not work as expected. Look for an acceptance procedure: when you get a version to test, how long you have, how bugs are reported and how a fix is confirmed. A clear deadline for fixes matters more than the word “warranty”.
3. Payments tied to results
Risk: most of the sum is due before you see any work. Tie payments to stages (design, development, launch), not only dates. Check what happens if a stage is delayed by either side.
4. Rights to code and content
Risk: you pay for the work but the rights to the code stay with the developer. A copy of the code or access does not transfer rights; Latvia’s Copyright Law says owning the object in which a work is embodied does not transfer copyright (likumi.lv, in Latvian; see the note on jurisdiction in our code, domain and data article). Watch two formulas:
- “the client receives a non-exclusive licence”: you may use but not always change or pass on;
- “the developer retains rights to the solution”: state whether this covers your specific logic or only generic libraries.
5. Third-party licences and subscriptions
Risk: the site depends on a paid plugin, template or service owned by the developer, and a year later the bill rises or the licence expires. The contract should list all paid components: who holds the licence, in whose name, the cost and the renewal date. Ask for licences to be registered to your company.
6. Hosting, maintenance and automatic renewal
Risk: a short line about “maintenance” binds you for years with automatic renewal. Check what maintenance covers (updates, backups, security, changes) and what counts as extra work; the response time and when it applies; the term, auto-renewal and notice period; and where the site is hosted and who owns the hosting account.
7. Personal data
Risk: the developer or host processes your customers’ data and the contract says nothing about it. GDPR Article 28 requires a processor to work under a contract stating that after the service ends it deletes or returns all personal data, at your choice (GDPR Article 28). If your site collects enquiries, orders or contacts, ask for a processing agreement and where data is stored.
8. Exit: what happens when the cooperation ends
Risk: no clause on how you take over code, access and documentation, so leaving becomes a negotiation under pressure. Check that you receive code, access and documentation once the work is paid; the transfer deadline after notice; whether notice triggers penalties unrelated to work done; and whether the developer commits to help with handover (and for what fee). This point decides whether you can choose a long-term relationship freely; see one studio or a new developer each time.
Decision rule
- If rights to the code, access and exit are not clearly written, do not sign.
- If maintenance renews automatically, make sure you can give notice.
- If the supplier answers only verbally, write the answers into the contract.
- If the sum or risk is large, show the contract to a lawyer.
As a studio we work on the principle that code and data are yours; see about us. To check a draft contract against this list from the technical side, describe the situation: discuss your project. When choosing a supplier, the questions to ask first also help.



