UK product engineering & compliance

Taking Over a Website from Another UK Development Agency

Do not accept a folder of passwords as a handover. Prove that the business owns the control planes and that the receiving team can build, release, restore and revoke access without the outgoing agency.

Guide cover: taking over a website from another UK development agency
By Ritesh Agarwal15 min read

Direct answer

To take over a website from another UK development agency, first make the client—not either agency—the owner of the domain, DNS, hosting, repository, data, analytics and key vendor accounts. Then prove five things before production work starts: the team has the authority to act; the site can be rebuilt from known source; a release can reach staging and production; a usable backup can be restored; and outgoing access can be revoked without losing control. Run discovery read-only, create an isolated staging copy, record a baseline, perform one reversible release and one restore test, then cut over with a named rollback owner.

OwnPut control with the businessRegistrar, billing and recovery contacts must not depend on a supplier mailbox.
ProveTest every control planeBeing invited is not evidence that DNS, deployment or restoration works.
ChangeCut over reversiblyUse staging, snapshots, a change window, observable checks and a rollback trigger.

Executive summary

  1. A handover is a transfer of verified control, not a spreadsheet of logins.
  2. Inventory the website as linked control planes: identity, code, runtime, data, edge, vendors and search.
  3. Separate discovery from modification; the first production change should not be the audit.
  4. Accept the service only after build, release, restore, rollback and access-revocation evidence exists.

A real takeover where server access was not enough

In September 2026, Appycodes took over maintenance work on an established enterprise WordPress site. The initial access request correctly covered WordPress, hosting, SSH, database, repository, registrar, DNS, SSL, CDN, object storage and email. That list was useful, but the project soon exposed why a checklist alone is weak evidence.

The team gained database access and working SSH access to the website files. A staging environment could be created. Yet the invitation route for the shared operational account had problems, the relevant Cloudflare zone or permission was not usable, and the team could not add the DNS records needed for the intended staging domain and TLS path. The practical blocker sat at the edge control plane, not on the server.

The difficult decision was to avoid treating broad infrastructure access as permission to improvise on production. Appycodes explicitly directed that work stay off the live site, created staging separately, asked for the specific DNS permission that was missing and required snapshots/evidence around changes. The project then had to distinguish a DNS record supplied by the client from the staging environment Appycodes had already prepared; those were related artefacts, not the same thing.

Evidence boundary. Dated Appycodes Slack delivery records from 1–15 September 2026 verify the access inventory, working database and SSH access, staging-first instruction, missing usable Cloudflare DNS control, inability to add DNS records and the staging-domain clarification. This article anonymises the client and excludes account names, credentials, IP addresses, private URLs and people. It does not claim a final migration result or security incident.

The lesson is precise: access is local; control is end to end. A developer who can edit PHP but cannot verify the domain, change DNS, inspect the deployment path or restore the data cannot responsibly own the release. Conversely, requesting “all passwords” creates unnecessary risk. The receiving team needs the narrow role that proves each required operation.

The Appycodes Takeover Control Score

Score five gates from 0 to 3: 0 absent, 1 claimed, 2 demonstrated in a non-production environment, 3 proven with retained evidence. The maximum is 15. Authority and Recovery are hard gates: either at zero means no production changes, whatever the total.

Five takeover gates × 0–3Maximum 15
AAuthority
Business-owned domain, billing, recovery contacts and supplier permissions.
BBuild
Known source, dependencies, configuration references and reproducible artefact.
RRelease
Staging and production path, approvals, health checks and rollback trigger.
RRecovery
Complete backups, restore destination, timing and verified usable result.
EExit
Named users, token inventory, data return/deletion and safe revocation.
13–15 · controlled takeoverAll five gates are proven. Accept operations with a dated residual-risk list and named owners.
9–12 · restricted workUse read-only discovery or staging. Production waits for every weak boundary to be proved.
0–8 · do not acceptThe new agency would be guessing. Escalate ownership, evidence and recovery before making changes.

This is deliberately stricter than “we can log in”. GitHub notes that a repository transfer keeps webhooks, secrets and deploy keys attached, and retains the original owner as a collaborator; a transfer therefore starts an access review rather than completing one. GitHub: transferring a repository

Inventory control planes, not just accounts

Control planeEvidence to requestTest before acceptanceCommon hidden dependency
DomainRegistrant, registrar, renewal, billing and recovery contactsBusiness owner can sign in and renew or transferAgency email is the only recovery address
DNS, CDN and TLSProvider, zone roles, record export, proxy/WAF rules and certificate routeAdd and remove a harmless verification record; reproduce zoneHosting access exists but edge changes do not
Source and buildRepository history, branches, package locks, private packages and build commandFresh clone produces the expected artefactUncommitted theme edits or a package in a personal account
Runtime and releaseHosting account, services, regions, pipeline, variables and release logDeploy a no-op change to staging and roll it backConsole deployments differ from the repository
Data and recoveryDatabase, uploads, queues, backups, retention, encryption and restore runbookRestore to an isolated destination and verify content/loginA database dump without media or encryption keys
VendorsEmail, payments, forms, CRM, search, maps, licences, webhooks and ownersExercise a sandbox or low-risk end-to-end transactionSubscription and API owner is an agency card/account
Search and measurementSearch Console, analytics, tag manager, Merchant Center and consent setupVerify business ownership and baseline key reportsRemoving an owner breaks its verification token

For a .uk domain, confirm who the registrant is rather than assuming the agency or registrar dashboard proves ownership. Nominet says registrants can use its Online Services to update contact details, change registrar or transfer the domain, using the registration email address. Nominet: managing a .uk domain

Use named roles instead of shared super-admin access. Cloudflare provides domain-scoped roles including Domain DNS; its guidance says configuring each member’s permissions helps prevent accidental account changes. That is enough for many staging and cutover tasks without handing a new supplier billing and account-member powers. Cloudflare: account and domain roles

A takeover should move from observation to revocation

EVIDENCE BEFORE CHANGE · CLIENT CONTROL THROUGHOUTObserveinventory + baselineno live editsClonefresh sourcesecret referencesRestoredatabase + filesisolated targetRehearsestaging releasehealth + rollbackCut overchange windowacceptance evidenceSEVEN CONTROL PLANES · ONE ACCEPTANCE RECORDAuthoritydomain · billingowners · recoveryDeliverysource · buildpipeline · runtimeContinuitydata · backupsrestore · rollbackExitrotate · revoke · deletesearch tokens · vendor accessClient-owned handover manifestowner · evidence · tested date · residual risk · sign-offNO PRODUCTION CHANGE WITH AUTHORITY OR RECOVERY AT ZEROFIG. 01CONTROLLED WEBSITE TAKEOVER
Fig. 01 Discovery stays read-only. The team proves build and recovery in isolation, rehearses release on staging, and only then cuts over and revokes outgoing access.scroll →

1. Freeze the baseline

Record the current DNS zone, response headers, certificates, redirects, robots rules, sitemap, canonical tags, top landing pages, forms, payment path, scheduled jobs, integrations and uptime checks. Capture repository HEAD, plugin/package versions and environment shape. Do not “tidy” while discovering: a strange rule may be carrying revenue or mail.

2. Establish business authority

Move primary ownership and recovery to business-controlled identities. Invite the incoming agency with least privilege. Record which party is controller, processor or sub-processor for personal data. The ICO states that whenever a controller uses a processor, a written contract must bind the processor and clarify the relationship. The contract should reflect what the service actually does, including end-of-service handling. ICO: controller–processor contracts

3. Rebuild and restore in isolation

Clone the source into a clean environment. Retrieve secrets by reference, not from a copied document. Build without the outgoing developer’s laptop or personal registry. Restore the database and user-uploaded files into a protected destination; then test application login, representative content, search, forms and scheduled work. WordPress distinguishes database data from files such as themes, plugins, uploads and wp-config.php; a database export alone is not a full restore. WordPress: backing up the database

4. Prove release and rollback

Deploy one reversible change to staging through the intended pipeline. Verify the exact commit, configuration source, health checks and log access. Define the production change window, decision maker, DNS TTL plan, cache handling, form/payment tests, monitoring and numerical rollback trigger. Never make “we can deploy” and “we can restore data” one untested operation.

5. Accept, rotate and revoke

After business acceptance, rotate secrets that crossed the supplier boundary, remove unused users, deploy keys, API tokens and verification artefacts, and record what remains. NCSC supply-chain guidance says contract closure should regain control of assets and shut down unauthorised or unintended access. NCSC: assess supply-chain cyber security

Make the handover machine-readable—without storing secrets

A manifest turns a static checklist into an acceptance record. Keep owner identifiers, artefact paths, dates and secret references in version control; keep secret values in a client-owned vault. A CI check can reject release while restore_tested_at, the accepted commit or outgoing-access review is empty.

A client-owned handover manifest with evidence and vault referencesyaml
# handover.yml — references only; never put secret values here
service: corporate-wordpress
business_owner: digital@client.example
accepted_at: null

control_planes:
  domain:
    registrant_verified: true
    registrar_owner: client-business
    renewal_tested: true
  dns:
    provider: cloudflare
    client_super_admins: 2
    agency_role: domain-dns
    zone_export: evidence/dns-zone-2026-09-30.txt
  source:
    repository: client-org/corporate-site
    protected_default_branch: true
    release_commit: null
  runtime:
    hosting_owner: client-business
    deployment: pipeline
    staging_url: https://staging.example.co.uk
  recovery:
    database_backup: evidence/db-backup.sha256
    files_backup: evidence/files-backup.sha256
    restore_tested_at: null
    rollback_command: runbook://website/rollback
  search:
    search_console_owner: digital@client.example
    analytics_owner: digital@client.example

integrations:
  - name: transactional-email
    owner: operations@client.example
    secret_ref: vault://prod/website/smtp
    rotation_status: pending

exit:
  outgoing_access_reviewed: false
  old_tokens_removed: false
  evidence_pack: evidence/handover-index.md

Hash exported artefacts so the parties can show which zone file, database backup or build was accepted. Do not put personal data, live credentials, private keys or full production configuration into the evidence pack. Evidence should prove a control without becoming another sensitive system.

Security and data work continue after the cutover

Changing agencies changes the supplier boundary. Review production accounts, SSH keys, CMS users, database users, deploy keys, OAuth apps, package-registry tokens, webhook secrets, SMTP credentials, analytics owners and support accounts. Remove access by identity and purpose, not by guessing which shared password was used. Require MFA for privileged cloud access and keep an emergency route owned by the business.

Do not remove a Google Search Console user and assume access is gone. Google explains that a verified owner may regain access while its verification token remains in DNS, HTML, Analytics or Tag Manager; removing tokens must be done carefully because the same token can support other services. Google: owners, users and verification tokens

Ask the outgoing supplier to return or delete personal data in line with the contract, but distinguish their service copy from records the client must retain. Confirm logs, backups, ticket attachments, database exports and local development datasets—not only the live database. This section is operational guidance, not legal advice.

Protect search visibility during the handover

An agency change does not require a redesign, framework migration or domain move. Keep the first cutover boring. Baseline the top organic landing pages, status codes, canonical URLs, robots directives, XML sitemaps, structured data, hreflang, Core Web Vitals and conversion events. Crawl staging behind authentication or IP controls, but make sure those controls and any noindex directive cannot leak into production.

Verify a business-controlled Search Console owner before removing the outgoing supplier. Google recommends multiple verification methods and notes that ownership lasts only while the relevant token remains valid. For domain properties, DNS control is required, which is another reason DNS belongs inside the operational acceptance gate rather than an administrative appendix. Google: verify site ownership

For the first production release, compare a fixed URL set before and after: homepage, top landing pages, a form, a search result, representative media, robots.txt and sitemap. Track new 4xx/5xx responses, canonical changes and analytics continuity. Defer URL restructuring until the team has a stable baseline and a separately reviewed redirect map.

Recommendations for UK businesses changing agency

UK SME with WordPressBuy a control audit before a redesign

Prove domain, DNS, server, files, database, backups, forms, email and licences. Move to named accounts, build staging and test one restore before approving feature work.

UK ecommerce retailerMap revenue paths separately

Checkout, payment webhooks, tax, stock, feeds, email and fulfilment need end-to-end tests and rollback owners. A homepage check does not accept the commerce system.

UK SaaS or marketplaceAccept the runtime, not just the repository

Include cloud accounts, queues, scheduled jobs, data stores, observability, support tools, third-party APIs and incident access. Test build, deploy, migration and restore independently.

UK agency appointing a delivery partnerDesign the next exit now

Keep the end client as owner, define evidence and return/deletion duties in the contract, and make handover artefacts part of every release—not a scramble after notice.

After real takeovers, Appycodes recommends a two-contract mindset even if procurement uses one document: the commercial agreement defines rights and obligations; the technical acceptance record proves that the current service can actually be operated and exited. Our UK software rescue and security service covers inherited-code audits, access recovery, staging, deployment, security remediation and controlled handover.

Our ruleDo not accept responsibility for a website until the business owns it and the incoming team can independently build, release, restore, roll back and revoke access—with evidence for each verb.

Frequently asked questions

What should a UK website agency handover include?
At minimum: business-owned domain and billing accounts; DNS and CDN control; source-code history; deployment and hosting access; database and file backups; environment and integration inventory; analytics and Search Console ownership; data-processing responsibilities; a tested staging release, restore and rollback; and a dated plan to revoke the outgoing agency after acceptance.
Should the old agency transfer passwords to the new agency?
Prefer business-owned accounts with named users, role-based invitations and new credentials. Shared passwords are hard to attribute and revoke. Where a secret must move, transfer it through an approved secrets channel, rotate it after validation, and never place it in email, chat, tickets, source control or the handover document.
Can a new agency start work with only WordPress administrator access?
Not safely for a production takeover. WordPress admin does not prove control of the domain, DNS, hosting, database, files, deployment process, backups, email delivery, analytics or third-party services. It may be enough for a bounded content task, but not for accepting operational responsibility.
Who should own the domain and hosting account?
The client business should normally be the registrant and primary account owner, with current billing and recovery contacts. Agencies should receive the least privilege needed to operate the service. Contract and procurement details are fact-specific, so obtain legal advice where ownership or intellectual property is disputed.
When is a website handover complete?
It is complete when the receiving team can independently build, deploy, observe, restore and roll back the site; the business controls the critical accounts and data; SEO and integrations are verified; acceptance evidence is recorded; and unnecessary outgoing access and verification tokens have been removed without breaking the service.

Primary sources

Published 30 Sep 2026Reviewed 30 Sep 2026Reviewer Appycodes Editorial Team

Technical and operational guidance, not legal, data-protection, contractual or security advice. Ownership, intellectual property, termination and regulatory duties depend on the relevant agreements and facts; obtain qualified advice where needed.

Our clients

UK · Europe · Worldwide

Selected case studies

What we built, how it works and the results for our clients.

Creoate product interface01
B2B commerce

Eight years behind a wholesale marketplace

Next.js storefront, Python ingestion pipelines, DynamoDB data layer and AWS infrastructure.

8+ yearsdevelopment and support
Ontick product interface02
Event technology

Ticketing owned by the event team

Multi-organiser commerce, Stripe instalments and two native apps in one connected platform.

£2M+ticket sales processed
Easyship product interface03
Global logistics

Helping shippers compare their options

Rate, tax and duty calculators, server-rendered courier pages and a custom MongoDB CMS.

550+couriers in the calculator
TEFL.ie product interface04
Education & training

Connecting course sales to the classroom

WordPress and WooCommerce, a Moodle LMS, Stripe deposits and Zoho CRM, tied together with Zapier automation.

Since 2017development and support
All White Laser product interface05
Medical aesthetics

From equipment finance to clinic support

A lead-to-billing system on GoCardless Direct Debit, provider certification, and a React Native app for machine owners.

9 yrsdevelopment and support
Decofetch product interface06
Luxury commerce

A custom home for designer furniture

Server-rendered Next.js commerce over a Laravel API, bespoke operations tooling and re-architected AWS infrastructure.

0→livemarketplace development
BA Engine Room product interface07
AI operations

Connecting discovery, contracts and delivery

Discovery briefs, e-signed contracts, Stripe deposits, delivery milestones and time tracking in one operational system.

0→1custom platform development
PlusHeat product interface08
Home services

Helping customers choose their boiler cover

Custom plan configuration, postcode-qualified lead journeys, CRM synchronisation and campaign landing pages.

5 yrswebsite development and support
Léonia product interface09
Beauty commerce

Shopify shaped around a beauty brand

Custom theme, customer accounts, loyalty rewards, referrals and gift-with-purchase offers.

5 yrsShopify development and support
Shutters 365 product interface10
Home improvement

From window measurements to a priced order

A seven-step product builder with live previews, sample orders and supplier tools.

7-stepproduct configurator
Bloc Ads Manager product interface11
Advertising

From targeted ads to venue check-ins

Campaign creation, audience targeting, in-app ads and reporting linked to venue check-ins.

check-inscampaign attribution
Bloc product interface12
Social events

Four years across the app and operations

Mobile app, backend, advertising tools, a digital marketplace and website.

4+ yrssupport across five codebases
Zonely product interface13
Social mobile

Two apps, one real-time conversation marketplace

Customer and buddy apps with per-minute billing, wallets, moderation and admin tools.

2 appsfor iOS and Android
Player Profile Hub product interface14
Grassroots football

Helping grassroots players get discovered

Verified profiles, video highlights, coach discovery and safeguarding on web and mobile.

0→1custom platform development
DeepSpatial product interface15
Geospatial AI

Connecting clients, investors and emerging talent

Corporate and investor pages, the Xploor talent platform and ongoing releases on AWS Amplify.

2 yrsdevelopment and support
Yippee Malta product interface16
Travel

A booking journey the tour team owns

A multilingual website connected to the booking API, with deposits, coupons and affiliate tracking.

6languages across the booking journey
Professional Energy product interface17
Energy brokerage

Tenders, contracts and accounts brought together

Supplier tenders, contract management, brokerage accounting and client records.

100+suppliers per tender

Tell us what you are trying to build.

A thirty-minute call with the engineer who would run it.