Skip to main content
When you add a custom domain to Laravel Cloud, it needs to confirm that you own the domain and that your DNS records are set up correctly. This process is called verification. Occasionally, verification may appear stuck or time out entirely — usually because a DNS record is misconfigured or has not finished propagating (the process by which DNS changes spread across the internet). Below are common issues that can prevent a domain from verifying, along with steps to diagnose them.

Verification timeline

Most domains verify within 15 minutes once the correct DNS records are publicly visible. However, propagation can take longer depending on your DNS provider and the record’s TTL (time-to-live) — a value that controls how long DNS results are cached before being refreshed. Laravel Cloud will automatically retry verification checks for approximately 12 hours. If verification still cannot complete after that period, the domain will time out and you may need to correct your DNS records and retry.

Quick checklist

  • Confirm you are updating DNS at the provider that is actually responsible for your domain. This is not always your registrar — for example, if you moved your nameservers to Cloudflare, your records need to be added in Cloudflare, not at your registrar.
  • Confirm you added all records Laravel Cloud shows, including www and wildcard records if they are enabled.
  • Confirm record names and values match exactly what Laravel Cloud shows — even small differences (extra dots, missing prefixes) will cause verification to fail.
  • If you are using Cloudflare DNS, review the proxy status (orange cloud vs. grey cloud) for each record. Some records, such as SSL validation records, must not be proxied.
If you need provider-specific steps, see the Cloudflare DNS Guide and the DNS Guides for Common Providers.

Check your records in the terminal

You can verify that your DNS records are publicly visible by running dig commands in your terminal. Replace example.com with your actual domain:
# Which DNS provider is responsible for your domain?
dig NS example.com +short

# Are your origin records (the records that point traffic to Laravel Cloud) resolving?
dig A example.com +short
dig CNAME example.com +short

# Is the ownership verification record visible?
dig TXT _cf-custom-hostname.example.com +short

# Are the SSL validation records visible? (may be TXT or CNAME depending on your setup)
dig TXT _acme-challenge.example.com +short
dig CNAME _acme-challenge.example.com +short
If any command returns no output, that record is either missing or has not finished propagating.

Common verification issues

Records added in the wrong place

If your domain is managed in multiple places (for example, you registered at GoDaddy but pointed your nameservers to Cloudflare), it is easy to add records in the wrong place. Records must be added at the provider that is actually serving your DNS — not necessarily where you purchased the domain. To confirm which provider is authoritative, run:
dig NS example.com +short
The output will list nameserver hostnames (e.g., ns1.cloudflare.com). Add your Laravel Cloud records at the provider that owns those nameservers.

Missing www records when redirects are enabled

Laravel Cloud’s Redirect from www. setting is enabled by default and is the recommended configuration. When enabled, Laravel Cloud will validate both example.com and www.example.com, which means DNS records are required for both hostnames. If you only added records for example.com and skipped www, verification can fail. Make sure you added records for both hostnames exactly as shown in the domain configuration screen.

DNS provider formatting issues (host vs. full name)

Most DNS providers have a “host” or “name” field that expects only the subdomain portion of a record name. The provider then appends your domain automatically. If you paste the full name from Laravel Cloud into this field, the domain gets added twice. For example:
  • _cf-custom-hostname.example.com.example.com — incorrect, domain appended twice
  • _cf-custom-hostname.example.com — correct
To avoid this, enter only the part before your domain (e.g., _cf-custom-hostname). After saving, re-open the record to confirm the assembled name matches what Laravel Cloud shows. For provider-specific guidance, see the DNS Guides for Common Providers.

If you’re using Squarespace as your DNS provider

Squarespace has unique naming conventions that may not match the instructions you see within Laravel Cloud. Specifically, in any name or host record, you need to remove the .example.com (including the preceding period) before any record.
  • For example, if the Laravel Cloud instructions says to create a pre-verification record for _cf-custom-hostname.example.com then within Squarespace’s DNS settings, you should enter _cf-custom-hostname as the host.
  • This is also true for the “A” records. For example, instead of entering www.example.com, you should simply enter www.
  • If you’re using the wildcard subdomain option, instead of *.example.com as the host, simply enter *.

Cloudflare proxy and DNS-only records

Cloudflare has a proxy feature (shown as an orange cloud icon) that routes traffic through its network. While this is useful for your site’s origin records, certain verification and SSL records must bypass the proxy and be set to DNS only (grey cloud). In particular, _acme-challenge records used for SSL certificate issuance and DCV delegation must always be DNS only — proxying them will prevent certificates from being issued or renewed. If you are pre-verifying your domain and see Cloudflare-related verification errors, temporarily setting the hostname’s record to DNS only may be required until verification completes. You can re-enable the proxy afterward. For full details, see the Cloudflare DNS Guide.

Verification appears propagated but Laravel Cloud still shows “Validating”

If your records look correct when checked with dig or an external DNS tool, but the domain is still showing as “Validating” or “Timed Out” in Laravel Cloud, this may indicate that our network provider (Cloudflare) has flagged the domain for manual review. This can happen even if your domain is not hosted on Cloudflare, because Laravel Cloud uses Cloudflare’s infrastructure behind the scenes to manage SSL certificates and routing. Cloudflare’s automated systems occasionally flag domains due to potential abuse concerns. This is sometimes a false positive and requires intervention on the Cloudflare side to resolve. If you believe this is affecting your domain, please raise a ticket through the Help portal in your Laravel Cloud dashboard so the team can assist.

When to contact support

If your domain is still stuck after working through the steps above, contact support through the Help portal in your Laravel Cloud dashboard. To help the team diagnose the issue quickly, include:
  • Your domain name
  • Screenshots of the DNS records as they appear in your DNS provider’s dashboard
  • The output from the dig commands listed in the Check your records in the terminal section above