DEV Community

Cover image for Stop Hosting Client WordPress Sites in One Shared Account
EniyiSunucum
EniyiSunucum

Posted on AI-assisted

Stop Hosting Client WordPress Sites in One Shared Account

Hosting ten client sites is not the same problem as hosting one site ten times. The difference is not storage capacity or the number of domains a control panel accepts. It is the size of the failure domain: which clients are affected when one password leaks, one plugin is compromised, one PHP worker pool is exhausted, or one backup cannot be restored.

Disclosure: This technical guide was prepared with AI assistance and reviewed for accuracy and clarity by the EniyiSunucum team.

Small agencies often begin with several WordPress installations inside one shared hosting account. That can be convenient while the portfolio is small, but the model becomes harder to defend as sites accumulate revenue, personal data, email, and contractual uptime expectations. A safer design gives each client a clear security boundary, a measurable resource budget, and an independently testable recovery path.

This guide explains how to build that operating model without assuming that every agency needs to manage a fleet of virtual machines.

Begin with the failure domain

A failure domain is the set of systems that can be disrupted by one event. If every client site uses the same hosting login, filesystem owner, backup job, and PHP limits, the account itself is the failure domain.

That design creates several forms of coupling:

  • A compromised administrator credential can expose every site.
  • A vulnerable plugin may be able to read or modify neighboring files.
  • One traffic spike can consume the account's shared workers or I/O allowance.
  • A full disk can interrupt unrelated databases, logs, sessions, and email.
  • Restoring one client may require changing a backup that contains all clients.
  • Giving a contractor access to one project may expose the rest of the portfolio.

The first architectural question is therefore not “How many websites fit?” It is “Which clients can fail together, and why?”

For most agencies, the practical target is one hosting account per client or per independently managed project. This does not guarantee perfect isolation—the provider and platform still matter—but it creates a much cleaner administrative, filesystem, credential, and recovery boundary than placing every site under one account.

Give every client an explicit identity boundary

Each client environment should have its own control-panel account, system user where the platform exposes one, SFTP credentials, databases, and application secrets. Shared administrator credentials should be the exception, not the workflow.

A useful minimum standard is:

  • a separate hosting account for each client;
  • a unique WordPress administrator identity for each human operator;
  • a unique database user and password for each site;
  • separate SFTP or deployment credentials;
  • no password reuse between production, staging, email, and the registrar;
  • multi-factor authentication wherever the control plane supports it;
  • an access-removal checklist for staff and contractors.

This model improves incident response. If credentials for one customer are exposed, the agency can rotate that customer's secrets without scheduling a portfolio-wide outage. Audit trails also become more meaningful because actions can be attributed to a person or a project instead of a shared login.

Treat PHP capacity as a queueing problem

WordPress performance is frequently described as a CPU or cache problem. Under concurrency, it is often a queueing problem.

Every uncached dynamic request occupies a PHP worker until application code, database queries, remote API calls, and filesystem operations finish. When all workers are busy, additional requests wait. A site can therefore report modest average CPU utilization while users experience long tail latency because the worker pool is saturated or blocked.

Track at least these signals per site:

  • concurrent PHP workers or entry processes;
  • request rate and cache-hit ratio;
  • p50, p95, and p99 response time;
  • slow PHP transactions;
  • database query latency and connection pressure;
  • CPU throttling, memory pressure, and I/O wait;
  • the duration and frequency of WordPress cron jobs;
  • external service timeouts.

Avoid sizing from page views alone. Two sites with the same monthly traffic can have radically different resource profiles. A mostly cached publication may serve large volumes efficiently, while a membership site with authenticated sessions, searches, checkout requests, or personalized dashboards can generate dynamic work on nearly every request.

When comparing a WordPress hosting environment, evaluate PHP limits, web-server behavior, database access, backup tooling, and observability together. A long feature list is less useful than knowing how the platform behaves when the site's uncached concurrency rises.

Allocate a resource budget per site

An account boundary is operationally useful only when resource consumption can also be observed and controlled. Define a budget for each client based on normal load, peak load, deployment behavior, and business importance.

The budget may include:

  • CPU time or virtual cores;
  • memory;
  • concurrent processes;
  • PHP workers or entry processes;
  • disk throughput and IOPS;
  • database size and query volume;
  • storage growth;
  • backup size and execution window;
  • outbound email or API activity.

The objective is not to keep every graph low. It is to prevent one tenant from silently consuming the headroom needed by others. Record a healthy baseline and define a trigger for investigation—for example, repeated worker exhaustion, sustained memory pressure, a backup window that overlaps business traffic, or a p95 response time outside the client's service objective.

Resource limits should produce an escalation path, not a surprise. Decide in advance whether a constrained site will be optimized, moved to a higher account tier, separated onto a VPS or VDS, or redesigned to reduce synchronous work.

Do not confuse WordPress Multisite with hosting isolation

WordPress Multisite is an application feature for managing a network of related sites. It is not a substitute for isolating unrelated customers.

Sites in a Multisite network share a WordPress core, a database structure, plugins, themes, and a super-administrator boundary. That can be appropriate for one organization operating regional sites, a university managing departments, or a product with centrally governed tenants. It is usually a poor boundary for unrelated agency clients who need independent plugin policies, maintenance windows, credentials, billing, exports, and exit plans.

Use Multisite when shared governance is intentional. Use separate client environments when ownership and operational responsibility must remain distinct.

Make restoration the unit of backup quality

A backup is not proven because a dashboard displays a green check. It is proven when the team can restore the required data within the promised recovery time.

Define two values for every client:

  • Recovery Point Objective (RPO): how much recent data can be lost.
  • Recovery Time Objective (RTO): how long the service can remain unavailable.

Then verify that the backup design can meet them. Check database and filesystem consistency, retention, encryption, storage location, access controls, and whether the backup system is independent of the production account. A backup that an attacker can delete with the same compromised credential is a weak last line of defense.

Run scheduled restore tests to a separate environment. The test should verify more than the home page:

  1. restore the database and files;
  2. replace environment-specific URLs or secrets safely;
  3. confirm administrator access;
  4. test forms, checkout, search, and authenticated workflows;
  5. inspect media and generated files;
  6. validate scheduled jobs and outbound integrations;
  7. record the elapsed time and any manual steps.

The result becomes evidence for capacity planning. If restoring a growing media library already exceeds the client's RTO, the agency has discovered the problem before an incident.

Separate staging from production

Staging should reduce deployment risk without becoming another path into production.

Use separate credentials and, where possible, a separate account or isolated environment. Do not copy live customer data into staging by default. When realistic data is required, remove or mask personal information and payment-related fields. Disable public indexing, transactional email, payment callbacks, analytics pollution, and scheduled jobs that should run only in production.

A disciplined deployment path is small and repeatable:

  • source-controlled themes, plugins, and configuration;
  • documented database migrations;
  • a pre-deployment backup or snapshot appropriate to the change;
  • a health check after deployment;
  • a rollback decision with a clear time limit.

Avoid using production as the first place to discover whether a plugin update changes the database, PHP requirement, cron schedule, or cache behavior.

Keep DNS, email, and certificates outside the blast radius

Website recovery frequently fails because the team focuses only on WordPress files and the database.

Document ownership and access for the domain registrar, DNS provider, certificate automation, transactional email service, and mailbox provider. Use role-based access where possible. The agency should know which assets belong to the client, which are managed on the client's behalf, and how control will be transferred at the end of the relationship.

Separating authoritative DNS and domain registration from the hosting account can preserve a recovery route when the hosting control plane is unavailable. Likewise, keeping critical operational email independent of the affected site helps the team receive alerts and coordinate during an outage.

Choose the operating model deliberately

Agencies generally choose among three models.

Individual retail hosting accounts

This offers strong commercial separation but can create administrative overhead as the portfolio grows. It works well when clients pay providers directly or require ownership of their own account from day one.

Reseller hosting

A reseller platform can give an agency one administrative view while preserving separate client accounts. It is a sensible middle ground when the agency wants account-level isolation and standard hosting operations without managing the operating system.

When evaluating a reseller hosting model, compare the number of accounts, per-site resource limits, backup and restore workflow, delegation controls, supported runtimes, and the provider's escalation process. “Unlimited” storage or traffic should never be interpreted as unlimited CPU, memory, workers, or operational support.

VPS or VDS

A virtual server provides more control over the web stack, monitoring, networking, and automation. It also transfers more responsibility to the agency: operating-system updates, security hardening, backups, service monitoring, capacity planning, and recovery testing. It is appropriate when the team can operate that layer reliably or has a managed service covering it.

The most expensive model is not automatically the safest. The correct choice is the least complex platform that still meets the required isolation, observability, and recovery objectives.

Build an exit path for every client

Client portability is part of good infrastructure design. Maintain an inventory of domains, applications, databases, mailboxes, certificates, third-party integrations, licenses, and backup locations. Record who owns each asset and which credentials are needed for transfer.

A clean handover package can include:

  • a current filesystem archive;
  • a consistent database export;
  • DNS records and TTL values;
  • runtime and PHP extension requirements;
  • scheduled tasks;
  • external service dependencies;
  • license ownership;
  • a restore or migration runbook;
  • confirmation that agency-only credentials were removed.

If a site cannot be exported and restored without tribal knowledge, the environment is not yet operationally mature.

A practical migration sequence

An agency moving away from one large shared account should avoid a single portfolio-wide cutover. Migrate in controlled batches.

  1. Inventory every site, domain, database, mailbox, job, and integration.
  2. Rank clients by business impact, technical complexity, and current risk.
  3. Establish separate destination accounts and unique credentials.
  4. Test backup restoration before changing DNS.
  5. Lower DNS TTL only when the migration schedule justifies it.
  6. Synchronize files and databases using a documented cutover method.
  7. Validate dynamic workflows, not only cached pages.
  8. Monitor errors, latency, email, and background jobs after cutover.
  9. Keep the old environment read-only for an agreed rollback window.
  10. Revoke obsolete credentials and securely retire residual data.

Start with a representative low-risk client, improve the runbook, and then move more critical sites. The goal is repeatability, not speed on the first migration.

Measure the result

The new architecture is successful when incidents become smaller, diagnosis becomes faster, and recovery becomes predictable.

Useful portfolio-level measures include:

  • percentage of clients in separate accounts;
  • percentage with tested restores in the last quarter;
  • median and worst-case restore time;
  • number of shared credentials;
  • sites repeatedly exceeding resource budgets;
  • patch and update lead time;
  • failed backup or cron jobs;
  • incidents that crossed a client boundary.

These metrics turn “better hosting” into an operating system the agency can review and improve.

Isolation is a business feature

Separating client sites is not only a security improvement. It clarifies ownership, limits incident scope, makes billing and capacity visible, simplifies access changes, and gives every customer a credible recovery story.

Begin with the failure domain. Give each client an identity and resource boundary. Test restoration instead of trusting backup status. Keep staging, DNS, email, and credentials out of the production blast radius. Then select individual hosting, reseller hosting, or a managed virtual server according to the team's real operating capability.

That approach scales an agency more safely than counting how many domains still fit inside one account.

Top comments (0)