Managing domains on a cPanel account
Every cPanel hosting account has one main domain, fixed when the account was created. Everything else you host on the account — a second website, a second name for the same website, a subdomain — is added afterwards on the account's Domains screen in the CloudPress dashboard.
This page covers that screen: how to reach it, what the three kinds of extra domain do, how adding one works (it isn't instant), what happens when your package runs out of room, and how to remove a domain again. The day-to-day work inside a domain — files, email accounts, redirects — still happens in cPanel itself.
Before you start
- cPanel hosting enabled for your workspace, and an account in the list — see cPanel hosting: overview
- Permission to manage billing on the workspace that owns the account. Viewing the domain list is open to any member of the workspace, but adding and removing a domain are not: without that permission you are returned to the cPanel accounts list with the message "You do not have permission to manage billing for this account."
- For an addon or alias domain, a domain name that already exists — the dashboard refuses to attach hosting to a name that isn't registered anywhere. Subdomains are exempt, because their parent is already on the account.
- The account must be a hosting account. Mail-only (MailXXL) accounts have no Manage Domains action, and a suspended account shows no actions at all.
- The account must not be scheduled for deletion. A pending-deletion account is locked: its row offers only Restore and Purge now, and adding or removing a domain is refused — over the API as well — until it is restored. See Deleting and recovering an account.
Open the Domains screen
-
Open the account list. In the workspace sidebar, choose cPanel Accounts.
-
Choose Manage Domains. Open the actions menu on the account's row — the same menu that holds Upgrade / Downgrade and Change password — and choose Manage Domains.
-
Read the page. It is headed Domains, subtitled "Parked, addon, and subdomain domains for" your account's username, and shows three usage counters above a table of every domain on the account. The table has Domain and Type columns, and each row carries a type badge — Main, Addon, Alias or Subdomain. An account with nothing but its main domain shows "No domains yet" with the hint "Create a parked, addon, or subdomain domain to get started."
The counters are Addon domains, Aliases and Subdomains. Each shows
how many of that kind are in use and, where the account's package sets a cap,
how many it allows — as in use / allowed. A kind with no cap reads
Unlimited, and a kind that has reached its cap is marked Full.
This screen reads the hosting server directly
Unlike the cPanel accounts list, which serves values from a copy that refreshes periodically, the Domains screen reads the account's domains live from the hosting server — so a domain you added or removed inside cPanel appears here without waiting. The Main Domain column back on the accounts list is the cached one, and can lag by up to ten minutes.
The three kinds of domain
You never pick these from a menu. You type a name and the dashboard works out which kind it is, asking at most one question.
| Kind | What it is | Where its files live |
|---|---|---|
| Addon | A second, separate website on the same account | Its own folder, by default a new folder under public_html |
| Alias | Another name for the site you already have | The main domain's folder — an alias always shares the main domain's content, never an addon's |
| Subdomain | An extra label in front of a domain already on the account, such as blog. |
Its own folder, by default a new folder under public_html |
An addon domain is backed internally by a subdomain of the account's main domain, and the add screen tells you which one before you commit: "To give this domain its own files, we'll add the subdomain" followed by the name it will use. That is cPanel's own arrangement for addon domains, not something specific to CloudPress.
Add a domain
-
Choose Create a New Domain. The button sits in the header of the Domains screen and opens Add a Domain, which explains itself in one line: "Type any domain or subdomain — we'll figure out the rest."
-
Type the name. The single field is labelled Domain, with the placeholder "example.com or blog.example.com". Type the whole thing —
shop.example.com, not a label and a parent chosen separately. -
Read what it worked out. A moment after you stop typing, the page tells you what it thinks the name is:
- A subdomain of a domain already on the account → "Looks like a subdomain of" that domain. Nothing else to answer.
- A name that isn't on the account yet → "Looks like a new domain. One question below."
- Something that isn't a hostname → "That doesn't look like a valid domain name."
- A name you can't attach here → "This domain cannot be added to this account." — see When a domain is refused.
-
Answer the one question, if you're asked it. For a new domain the page asks What should it show? and offers two choices:
- Its own separate site — "New empty folder". This creates an addon domain.
- Same as an existing site — "Shares content with one of your existing domains", shown as "Points to" the main domain once it can name it. This creates an alias.
-
Set a document root, if you want one. Advanced opens a Document root (optional) field, which "Defaults to a new folder under
public_html." Leave it alone unless you have a reason. -
Choose Add domain. A notice appears while the request runs — "Adding the domain — this can take a minute…" — and the button is unavailable while the page is still catching up with what you typed, so if it looks inactive for a moment, pause and let the detection settle rather than clicking through.
-
Wait for the row to appear. You are returned to the Domains screen with "Domain created — it may take a minute to appear below." If the new domain isn't in the table yet, the list refreshes itself every few seconds until it shows up, for up to about a minute; you don't need to reload the page.
Why the wait is real
The hosting server rebuilds its web-server configuration when a domain is added, and that finishes a beat after the dashboard's request comes back successful. That gap is what the notice and the self-refreshing list exist for — the domain is already being created while you're watching for it. If a minute passes and the row still hasn't appeared, reload the screen before assuming the add failed.
What adding a domain does to DNS
Adding a domain on this screen touches both cPanel and your CloudPress DNS:
- An addon or alias domain gets a DNS zone in CloudPress, seeded from the hosting server so the domain's address records point at the account.
- A subdomain has its address records added to its parent domain's existing zone.
This runs a few seconds behind the domain itself, and retries on its own if the hosting server hasn't finished building the zone yet. Records that describe services you chose — mail routing, SPF and other TXT records, CAA, SRV — are not overwritten; only the records that say where the domain is hosted follow the cPanel server. You can view and edit the result under Domains in the workspace sidebar — see Managing DNS.
When your package runs out of room
Addon domains and aliases are both capped by the account's package, and the two caps are separate. When one is reached:
- Its counter on the Domains screen shows Full.
- On the add screen, the matching choice is greyed out and carries the reason — "This account's package allows" however many "addon domain(s). Upgrade the package to add more.", or the same sentence for alias domains.
- Submitting anyway is refused with that message rather than a server error.
The fix is a bigger package: see Resizing your package. The upgrade screen shows how many addon domains the account is currently using, so you can see which packages can actually hold what you already have.
Subdomains are counted on this screen too, but the dashboard does not block a subdomain before sending it — the hosting server decides. If a subdomain is refused there, you'll see the reason in the failure message rather than in the counter.
When a domain is refused
Some names can't be attached to a cPanel account, and the screen says so with a single, deliberately unspecific message: "This domain cannot be added to this account." You'll see it when the name is already spoken for elsewhere on CloudPress — registered to, or DNS-hosted for, an account outside your billing family, or already in use on someone else's cPanel account — and also when the name isn't registered anywhere at all.
The message is the same in every case on purpose: spelling out which reason applied would let anyone type names into this box to find out what CloudPress knows about them.
So, when you hit it:
- Check the spelling first. A typo'd domain is an unregistered domain.
- If you haven't registered the name yet, register it — see Purchasing a domain. Hosting is only attached to a name that exists.
- If the name is one you already own but it lives on another workspace or was set up elsewhere, contact us rather than guessing.
Subdomains skip this check entirely — their parent domain is already on the account, so there is nothing to establish.
Remove a domain
Removing a domain takes it off the cPanel account and takes anything served under it offline. There is no undo on this screen.
-
Find the row and choose Remove. Every row except the Main one has a Remove button; the account's main domain can't be removed here at all.
-
Confirm. A Remove domain dialog explains what will happen — "This will remove" the domain "from this cPanel account. Any content served under it may become unreachable." — with Cancel and Confirm.
-
Confirm your identity with your passkey or password, if you haven't recently. Removal is one of the sensitive actions that asks you to re-confirm who you are.
-
Wait for it to finish. A notice reads "Removing the domain — this can take a minute…" while the request runs, and the row disappears with "Domain" … "removed." when it's done. A failure comes back as "Could not remove the domain:" followed by what the server said, and the domain stays where it was.
Removal is not reversible from this screen
There is no restore button for a removed domain. Re-adding the same name works, but you are creating it again from scratch — check that nothing is still being served under the domain before you confirm.
What happens to DNS depends on the kind:
- Removing an addon or alias domain leaves its CloudPress DNS zone in place, so a domain you re-add later picks up where it left off.
- Removing a subdomain removes that subdomain's address records from the parent domain's zone.
Over the API
Everything on this screen is also available over the REST API, with the same rules behind it — the same ownership checks, the same package caps, and the same DNS work:
- List the account's domains with their kinds and the usage counters you see above the table.
- Add a domain. The API doesn't guess the kind for you the way the smart input does — you say whether it's an alias (parked), a subdomain or an addon. As in the dashboard, the domain isn't live the moment the call returns: poll the domain list until it appears.
- Remove a domain. The kind is worked out for you from the account's own list, and the main domain can't be removed here either.
Adding and removing need the same manage billing permission as the dashboard,
checked against the workspace that owns the account, and they need an API key or
a signed-in session — an OAuth access token is refused whatever scopes it
carries. Listing is the exception, and works with the cpanel:read scope.
Next steps
- Do the rest of the work inside the control panel — see Logging in to cPanel
- Out of addon domains or aliases? Resize your package
- Point the new domain where you want it in Managing DNS
- Register a name you don't own yet with Purchasing a domain
- Refresh on what a cPanel account is in cPanel hosting: overview