diff --git a/applications/configuration-as-code/services/web-service.mdx b/applications/configuration-as-code/services/web-service.mdx
index 50bad48..9d6dc39 100644
--- a/applications/configuration-as-code/services/web-service.mdx
+++ b/applications/configuration-as-code/services/web-service.mdx
@@ -57,12 +57,18 @@ services:
Optional
-When `true`, the service is only accessible within the cluster (not publicly exposed).
+When `true`, the service is routed through the cluster's internal load balancer and is only reachable from clients on the same private network (for example, a VPN or peered VPC). Public traffic is not accepted.
```yaml
private: true
```
+
+Private web services require an internal load balancer controller to be installed on the target cluster. Porter validates this when you create or update an app — if the controller is not installed, the request is rejected with an `invalid_load_balancer_mode` error. In the dashboard, the **Internal** load-balancer option only appears when the controller is detected. Contact Porter support if you need the internal load balancer enabled on a cluster.
+
+Private services use a different CNAME target than public services. After enabling `private: true`, copy the load-balancer hostname shown in the **Networking** tab of your web service when configuring DNS for any custom domains — do not reuse the public hostname.
+
+
---
## `disableTLS`
diff --git a/applications/configure/custom-domains.mdx b/applications/configure/custom-domains.mdx
index ace5ebe..bddda55 100644
--- a/applications/configure/custom-domains.mdx
+++ b/applications/configure/custom-domains.mdx
@@ -26,6 +26,10 @@ The DNS records that need to be created for your Web service vary slightly depen
Copy this address, as you will need it to create the DNS record.
+
+Public and private (internal) web services use different load-balancer hostnames. The address shown in the **Networking** tab always reflects the load balancer that backs the service's current mode, so copy it from the same service you're attaching the domain to. If you switch a service between public and internal, the hostname changes and you must update your DNS record to match.
+
+
### Google Cloud and Azure
On Google Cloud and Azure, the load balancer that sits in front of your infrastructure has a static IP address.