diff --git a/src/assets/screenshots/whp/whp-backups-history.png b/src/assets/screenshots/whp/whp-backups-history.png
new file mode 100644
index 0000000..857bc62
Binary files /dev/null and b/src/assets/screenshots/whp/whp-backups-history.png differ
diff --git a/src/assets/screenshots/whp/whp-backups-settings.png b/src/assets/screenshots/whp/whp-backups-settings.png
new file mode 100644
index 0000000..bc6f43a
Binary files /dev/null and b/src/assets/screenshots/whp/whp-backups-settings.png differ
diff --git a/src/assets/screenshots/whp/whp-domains-add.png b/src/assets/screenshots/whp/whp-domains-add.png
new file mode 100644
index 0000000..70d7eda
Binary files /dev/null and b/src/assets/screenshots/whp/whp-domains-add.png differ
diff --git a/src/assets/screenshots/whp/whp-email-add.png b/src/assets/screenshots/whp/whp-email-add.png
new file mode 100644
index 0000000..ba79071
Binary files /dev/null and b/src/assets/screenshots/whp/whp-email-add.png differ
diff --git a/src/assets/screenshots/whp/whp-email-archive.png b/src/assets/screenshots/whp/whp-email-archive.png
new file mode 100644
index 0000000..273f6c0
Binary files /dev/null and b/src/assets/screenshots/whp/whp-email-archive.png differ
diff --git a/src/assets/screenshots/whp/whp-monitor.png b/src/assets/screenshots/whp/whp-monitor.png
new file mode 100644
index 0000000..25fff4c
Binary files /dev/null and b/src/assets/screenshots/whp/whp-monitor.png differ
diff --git a/src/assets/screenshots/whp/whp-resources.png b/src/assets/screenshots/whp/whp-resources.png
new file mode 100644
index 0000000..1edf68b
Binary files /dev/null and b/src/assets/screenshots/whp/whp-resources.png differ
diff --git a/src/assets/screenshots/whp/whp-sites-add.png b/src/assets/screenshots/whp/whp-sites-add.png
new file mode 100644
index 0000000..6788510
Binary files /dev/null and b/src/assets/screenshots/whp/whp-sites-add.png differ
diff --git a/src/content/docs/whp/how-to/add-a-domain.mdx b/src/content/docs/whp/how-to/add-a-domain.mdx
new file mode 100644
index 0000000..cb2ac87
--- /dev/null
+++ b/src/content/docs/whp/how-to/add-a-domain.mdx
@@ -0,0 +1,77 @@
+---
+title: Add a domain
+description: Point a domain at your WHP hosting — whether you registered it with us or elsewhere.
+sidebar:
+ order: 1
+---
+
+import { Steps, Aside } from '@astrojs/starlight/components';
+import SignIn from '~/content/partials/signing-in.mdx';
+import Support from '~/content/partials/support-link.mdx';
+
+## Before you start
+
+- A **registered domain.** We sell domains through Namecheap, and you can also register with any other provider you like.
+- **Access to the registrar's DNS settings** if you registered the domain elsewhere.
+- About 5 minutes (plus DNS propagation time, which can be up to 24 hours).
+
+
+
+## Sign in to WHP
+
+
+
+## Steps
+
+
+
+1. From the sidebar, open **Domains → Add Domain**.
+ 
+
+2. Enter your domain (for example, `example.com`). Don't include `http://` or `www.` — just the bare domain.
+
+3. Choose the domain type:
+ - **Primary** — your account's main domain. Pick this if it's your first.
+ - **Add-on** — an extra domain alongside your primary.
+
+4. Click **Add**. WHP confirms the domain and shows the nameserver values and an A record you can point at.
+
+
+
+## Point your DNS at us
+
+There are two paths depending on where the domain is registered:
+
+**Registered with us:** nothing to do. We set DNS automatically when the domain was created. Skip ahead to verify.
+
+**Registered elsewhere:** at your registrar, do one of the following:
+
+- Set the **nameservers** to `ns1.anhonesthost.com` and `ns2.anhonesthost.com` (recommended — gives us full DNS control, easier to support), **or**
+- Keep your existing nameservers and add an **A record** pointing the domain to the IP address shown on the WHP confirmation screen.
+
+## Verify it worked
+
+DNS changes can take up to 24 hours to propagate worldwide. To check status:
+
+- Run `dig example.com +short` from a terminal — once you see our IP in the result, you're live.
+- Or use a web tool like [whatsmydns.net](https://www.whatsmydns.net/) to see propagation across many regions.
+
+Once DNS resolves, visiting your domain in a browser will reach WHP — though you'll see a default placeholder until you create a site.
+
+## Troubleshooting
+
+**"Pending DNS" for more than 24 hours.** Re-check the nameservers or A record at your registrar — typos and trailing dots cause silent failures. Clear your local DNS cache to rule out client-side caching.
+
+**Domain returns a generic "site not found" page.** DNS works but you haven't created a site yet. [Create one](/whp/how-to/create-a-site/) and point it at this domain.
+
+**Wrong site loads.** Another site on your account is set as the default. In **Sites**, make sure the correct site is bound to this domain.
+
+## Related
+
+- [Create a site](/whp/how-to/create-a-site/)
+
+## Still stuck?
+
+
diff --git a/src/content/docs/whp/how-to/backups.mdx b/src/content/docs/whp/how-to/backups.mdx
new file mode 100644
index 0000000..d8b36b7
--- /dev/null
+++ b/src/content/docs/whp/how-to/backups.mdx
@@ -0,0 +1,90 @@
+---
+title: Backups
+description: Confirm WHP is backing up your site, restore individual files, and download archives.
+sidebar:
+ order: 4
+---
+
+import { Steps, Aside } from '@astrojs/starlight/components';
+import SignIn from '~/content/partials/signing-in.mdx';
+import Support from '~/content/partials/support-link.mdx';
+
+WHP runs **automatic daily backups** of your site files and databases. You don't have to set anything up for this to happen — but it's worth knowing how to confirm a backup ran, restore something, and download an archive when you need to.
+
+## What's backed up by default
+
+- **Site files** — everything under each domain folder.
+- **Databases** — all MySQL databases attached to your account.
+- **Email** — mailboxes and their contents (depending on your plan).
+
+Retention is shown on your plan page. The default tier keeps **7 daily backups**.
+
+## Sign in to WHP
+
+
+
+## Configure your backup schedule
+
+
+
+1. From the sidebar, open **Backups → Settings**.
+ 
+
+2. Confirm the **schedule** (default: daily, overnight). Adjust if your plan permits.
+
+3. (Optional) Enable **off-server backups** to a separate storage location — recommended for anything you can't afford to lose.
+
+
+
+## Verify a backup actually ran
+
+
+
+1. Open **Backups → History**.
+ 
+
+2. Confirm the most recent entry is from **within the last 24 hours** and shows **Success**.
+
+3. Click the entry to see what was included — files, databases, email — and the total size.
+
+
+
+
+
+## Test a restore (recommended quarterly)
+
+The best time to discover your backup isn't working is *not* when you actually need it. Test surgically:
+
+1. In **History**, click a recent backup → **Restore preview**.
+2. Pick a single file — your site's `index.php`, for example — and restore just that one file.
+3. Confirm it appears correctly. If yes, the restore pipeline works.
+
+Don't do a full restore unless you genuinely need to — it rewrites your live site.
+
+## Download a backup
+
+To grab a copy off-server:
+
+1. From **History**, click a backup → **Download**.
+2. WHP packages it as `.tar.gz` and offers a one-time download link that's valid for 24 hours.
+
+## Troubleshooting
+
+**Backup failed.** Click the failed row to see the error. Common causes:
+
+- Disk full or close to it — check **Overview → Resource usage** and consider a [resource upgrade](/whp/add-ons/resource-upgrades/).
+- A very large mailbox slowed the run — consider the [archival email add-on](/whp/add-ons/archival-email/) to relieve mailbox pressure.
+- Transient lock or maintenance window — let it retry overnight before opening a ticket.
+
+**Restore "succeeded" but my file isn't there.** Check the **path** shown on the backup's detail page — your restore landed where the backup says it would, which may not match your current site layout if you've moved files around.
+
+## Related
+
+- [Archival email add-on](/whp/add-ons/archival-email/)
+- [Resource upgrades](/whp/add-ons/resource-upgrades/)
+
+## Still stuck?
+
+
diff --git a/src/content/docs/whp/how-to/create-a-site.mdx b/src/content/docs/whp/how-to/create-a-site.mdx
new file mode 100644
index 0000000..5d5e52d
--- /dev/null
+++ b/src/content/docs/whp/how-to/create-a-site.mdx
@@ -0,0 +1,84 @@
+---
+title: Create a site
+description: Spin up a PHP, Node, or static HTML site on a domain you've added to WHP.
+sidebar:
+ order: 2
+---
+
+import { Steps, Aside } from '@astrojs/starlight/components';
+import SignIn from '~/content/partials/signing-in.mdx';
+import Hostnames from '~/content/partials/service-hostnames.mdx';
+import Support from '~/content/partials/support-link.mdx';
+
+## Before you start
+
+- A **domain already added** to your account ([Add a domain](/whp/how-to/add-a-domain/) covers that).
+- Decide what kind of site you're building: **PHP**, **Node**, or **static HTML**.
+- About 5 minutes.
+
+## Sign in to WHP
+
+
+
+## Steps
+
+
+
+1. From the sidebar, open **Sites → Add Site**.
+ 
+
+2. Pick the **site type**:
+ - **PHP** — best for WordPress, Joomla, Laravel, and most off-the-shelf CMSes.
+ - **Node** — for custom apps you build and deploy (Express, Next.js in standalone mode, Fastify, etc.).
+ - **Static HTML** — for prebuilt site bundles from tools like Astro, Hugo, Eleventy, or Jekyll. No runtime; just files.
+
+3. Pick the **domain**. The dropdown lists domains you've already added.
+
+4. (PHP only) Pick the **PHP version**.
+
+5. (Node only) Pick the **Node version** and the **start command** (typically `npm run start`).
+
+6. Click **Create site**. WHP provisions the container — usually under a minute. You'll see the new site in the **Sites** list when it's ready.
+
+
+
+## Where your files go
+
+When you connect via SFTP, your account home shows one folder per domain. Inside each domain folder, the layout depends on the site type:
+
+| Site type | Layout | Docroot is... |
+| ------------ | ----------------------------------------------------- | ------------------------------------------------------ |
+| PHP | `public_html/`, `logs/`, `crontab` | `public_html/` |
+| Node | `app/`, `logs/` | Whatever your start command serves; we run it from `app/` |
+| Static HTML | files directly (e.g., `index.html`, `assets/`) | The domain folder itself |
+
+Upload your files to the right place and the site picks them up immediately.
+
+## Connect to databases and caches
+
+
+
+## Verify it worked
+
+Open your domain in a browser. You should see your site, or the default "no content yet" placeholder if you haven't uploaded files. For Node sites, give it 15–30 seconds after creation for the process to start.
+
+
+
+## Troubleshooting
+
+**You see a default "no content" page.** Upload your files via SFTP — for PHP into `public_html/`, for Node into `app/`, for static directly into the domain folder.
+
+**Node site returns 502.** Check that your start command runs successfully locally, and that it binds to the port shown on the site's WHP detail page (we set it via an env var; see the site's environment in WHP).
+
+**PHP site shows a blank page or 500.** Check your site's error log (sidebar → Logs → pick the site). Common cause: a syntax error in `index.php` or a missing PHP extension — request extensions via a [support ticket](https://secure.anhonesthost.com/submitticket.php) if needed.
+
+## Related
+
+- [Add a domain](/whp/how-to/add-a-domain/)
+- [Service hostnames](/whp/reference/service-hostnames/)
+
+## Still stuck?
+
+
diff --git a/src/content/docs/whp/how-to/create-an-email-account.mdx b/src/content/docs/whp/how-to/create-an-email-account.mdx
new file mode 100644
index 0000000..3af72cc
--- /dev/null
+++ b/src/content/docs/whp/how-to/create-an-email-account.mdx
@@ -0,0 +1,91 @@
+---
+title: Create an email account
+description: Add a mailbox on one of your domains and connect your email client.
+sidebar:
+ order: 3
+---
+
+import { Steps, Aside } from '@astrojs/starlight/components';
+import SignIn from '~/content/partials/signing-in.mdx';
+import Support from '~/content/partials/support-link.mdx';
+
+## Before you start
+
+- A **domain added** to your account.
+- Decide what local part you want — the bit before the `@`. For example, `jane` to get `jane@example.com`.
+- About 5 minutes.
+
+## Sign in to WHP
+
+
+
+## Steps
+
+
+
+1. From the sidebar, open **Email → Email Accounts → Add Account**.
+ 
+
+2. Pick the **domain** for this mailbox.
+
+3. Enter the **local part** (the bit before `@`).
+
+4. Set a **strong password** — at least 12 characters with a mix of upper case, lower case, numbers, and symbols. Email accounts are common attack targets.
+
+5. Choose a **mailbox size cap**. The default is usually fine; you can raise it later or via an [email upgrade add-on](/whp/add-ons/email-upgrades/).
+
+6. Click **Create**.
+
+
+
+## Set up your email client
+
+Use these settings in Outlook, Apple Mail, Thunderbird, or any other client:
+
+```text
+IMAP (incoming)
+ Host: mail.
+ Port: 993
+ Security: SSL/TLS
+ Username: full email address (e.g., jane@example.com)
+ Password: the one you set above
+
+SMTP (outgoing)
+ Host: mail.
+ Port: 587
+ Security: STARTTLS
+ Username: full email address
+ Password: same as IMAP
+```
+
+For per-client walkthroughs (Outlook, Apple Mail, etc.), see the Email clients section — coming soon.
+
+## Webmail
+
+You can also access the mailbox from a browser at `https://webmail.` once DNS for the mail subdomain has propagated.
+
+## Verify it worked
+
+Send yourself a test message from another account (your personal Gmail, for example). It should arrive within a minute or two and be retrievable from both your client and webmail.
+
+
+
+## Troubleshooting
+
+**Webmail isn't reachable.** DNS for the `mail.` subdomain may still be propagating — wait an hour and try again.
+
+**Outgoing mail is bouncing or going to spam.** Check the SPF and DKIM records at your registrar. The email account page in WHP shows the exact records you should have.
+
+**Client can connect on IMAP but not SMTP.** Some ISPs and corporate networks block outgoing port 587. Try sending from a different network to confirm; if the issue is your network, your ISP is the place to ask.
+
+## Related
+
+- [Add a domain](/whp/how-to/add-a-domain/)
+- [Archival email add-on](/whp/add-ons/archival-email/)
+- [Email upgrades](/whp/add-ons/email-upgrades/)
+
+## Still stuck?
+
+