Accounts in your name, from day one
The hosting, the domain, the analytics, the ad accounts and the store listings should be registered to you and shared with the agency, never the other way round.
This costs nothing at the start and is close to impossible to unwind later. An agency that registered your domain on its own card is holding something you cannot simply take back.
Code a stranger can run
A repository is not a handover. A handover is a repository with a readme that says how to run the thing locally, how it reaches production, and what has to be configured before it will start at all.
The test is worth running before the final invoice: give the repository to a developer who has never seen it. Whatever they have to ask about is the documentation you are missing.
- How to run it on a fresh machine
- How a change reaches production
- Which settings and keys are required, and where they live
- What is deliberately unfinished, and why
The parts that are not code
Design files, the copy that was written, the ad creative, the translation memory. All of it was paid for and all of it is routinely left behind.
Translation is forgotten most often. If the strings live only in the agency tooling, the next language costs full price again instead of building on what already exists.
A window where questions still get answers
The last useful clause is time. A month in which the people who built it still reply turns a handover from a folder into a transfer.
Without it you get a complete archive and nobody who remembers why any of it was done that way.
What a good handover actually looks like
The best version is not a document delivered at the end. It is a repository that has been yours the whole time, with the agency working inside it as a contributor.
When that is the arrangement, handover stops being an event. There is nothing to transfer because nothing was ever held anywhere else, and the final month is spent on questions rather than on packaging.
The clause worth writing down
A workable version fits in a paragraph. On completion or termination, for any reason, the client receives administrative access to the repository, the hosting, the domains and every third party account created for the project, together with the documentation needed to run and deploy the system.
Add the support window and a date by which all of it happens. Naming a deadline is what turns the clause from a principle into an obligation.
What to check before the final payment
Withholding a final instalment until handover is verified is normal practice and rarely contested by a team that intended to comply.
The check is short and worth doing while there is still leverage.
- Log in to every account yourself, from your own device
- Confirm your name on the domain registration, not the agency's
- Have someone outside the project run the code from the repository
- Read the deployment instructions and follow them once