bin/check-custom-domains.php is scheduled every minute in www-data's crontab. CustomDomainService::due() checks an address that is not live every run for its first day, every 15 minutes for the rest of its first week, then hourly; a live one daily, and every 15 minutes while its last check found a problem. A live host keeps status active through failed checks (public_hostnames.dnsProblemSince, problemEmailedAt, migration 2564), and notifyAboutProblem() claims each email before sending it. Buy links and Website Builder Store sections use healthyHostname(), so they fall back to the Magpie address while a problem stands. StoreSeoService::sitemapXml() now takes the Store's address instead of SITE_URL, and canonical_url() takes an optional Store. docs/CUSTOM_DOMAINS.md records the Caddy apt pin, the 127.0.0.1:8080 virtual host and the every-minute cron line.
Custom domain checks run every minute and slow down for unfinished addresses
bin/check-custom-domains.php runs every minute; CustomDomainService::due() checks a new address every run for a day, every 15 minutes for a week, then hourly.