«The integration will not connect and throws no error.» When a site tries to talk to an outside service and the connection simply hangs, the cause is nearly always a closed port — and, contrary to what many people assume, it is not true that all outbound ports are open.
There are two lists, and confusing them costs hours
| Direction |
What it is |
| Inbound |
What the world can reach on the server: your site, FTP, cPanel, mail. This list is fixed and the same for everyone. |
| Outbound |
What your site can reach outside when it calls an API, sends through an external SMTP or connects to a service. This one is an allow-list: what is not on it does not pass. |
The usual confusion is seeing a port open inbound and concluding you can also go out through it. They are different lists, and there are ports on one that are not on the other.
Inbound: what can be reached on the server
| What for |
Ports |
| The website |
80 and 443 — and 443 is the one that matters. |
| Mail |
587 to send, 993 and 995 to receive encrypted, 110 and 143 unencrypted. See POP or IMAP: which to choose |
| Files |
21 for FTP, and the SSH port we give you — it is not 22. |
| Panels |
2083 cPanel, 2087 WHM, 2096 webmail. The unencrypted versions (2082, 2086, 2095) also answer, but always use the encrypted ones. |
|
SSH is not on the usual port. Port 22 is closed deliberately — it is the one automated scanners hammer day and night. Access exists on another port, which we give you when you ask. If your FTP or SSH client times out, it is nearly always this rather than a block on your network. For real blocks, see why your IP gets blocked.
|
Outbound: where integrations break
This is the part that matters to developers, and the part almost nobody documents. The rule is easy to state: what the web uses is open; the rest you ask for.
| Type of connection |
State |
| APIs over HTTPS (ports 443 and 80) |
Open. Payment gateways, messaging APIs, map services, webhooks — the overwhelming majority of modern integrations go through here and work without asking for anything. |
| External SMTP on port 587 |
Open. This is the right port for connecting your site to an outside sending service. |
| External SMTP on port 465 |
Closed. See the warning below — it is the single most common stumble. |
| External database (3306, 1433, 5432) |
Closed. The site does not connect to a database on another server. |
| Unusual ports (8443, 8080 and the like) |
Closed by default. Can be opened case by case — just ask. |
|
If the contact form or the shop will not send e-mail: swap 465 for 587. This is the case that wastes the most time. Many tutorials and many plugins come with port 465 pre-filled for external SMTP — and that connection does not leave here. Nothing throws a clear error: the send hangs and fails on timeout. Switch to 587 with STARTTLS and it works. If the problem is something else, why your e-mail is not sending or receiving has the rest of the path.
|
And chat on the site?
We get asked a lot, and the answer is yes — with one distinction that decides everything:
| 1 |
Third-party widget (Tawk.to, Crisp, WhatsApp, Messenger and similar): always works. It is just a piece of JavaScript on the page; the conversation runs on their servers and uses none of your ports.
|
|
| 2 |
Chat you wrote in PHP, storing messages in the database and fetching them periodically: works. It is an ordinary website — but watch the consumption, because a request every two seconds per connected person adds up fast.
|
|
| 3 |
Chat in Node with websockets: runs under Setup Node.js App in cPanel, served from the same address as the site — see which technologies run here. What you cannot do is have it listen on its own port open to the outside.
|
|
| 4 |
IRC or a messaging server of your own, listening on a port: does not fit on shared hosting. That is a service, and a service wants a server — see shared hosting vs VPS.
|
|
How to ask for a port
If your integration genuinely needs a port that is not open, tell us — some can be opened. Send the three things we need in order to decide:
Port and protocol: e.g. 2087 TCP, outbound
Where to: the domain or IP of the external service
What it is for: what the integration does
Without the destination we cannot open only what is needed, and opening a port to the whole world on a shared server is not something we do lightly — see what we do about security.
How to tell whether the port really is the problem
Before writing to us, a half-minute test separates «closed port» from «wrong credentials». In the cPanel Terminal:
curl -v -m 10 telnet://smtp.example.com:587
| What you see |
What it means |
| Connected to… |
The port is open. If the integration still fails, the problem is the password, the username or the configuration — not the network. |
| It sits there until it times out |
The port is closed outbound. That is the classic symptom, and it is why no error appears in the application. |
| Could not resolve host |
Not a port at all: the name is wrong or DNS is not answering. |
If you want to rule the ports
On a shared plan the firewall is common to the whole machine and protects everyone on it — which is why it is not opened per account. On a VPS or dedicated server the firewall is yours and opens whatever you like, with the responsibility that brings: see keeping your VPS secure and managed or unmanaged VPS.
|
Integration hanging with no error? Send us the destination and the port.
Open a ticket
|
RECOMMENDED PRODUCT Web hosting with cPanel Domain and SSL included, daily backups and the panel you already know. from $15.00/mo See plans |