Guide
How to connect a custom domain to your Lovable app (and fix it when it won't verify)
Short answer: on a paid Lovable plan, go to Project → Settings → Domains → Connect existing domain, add the A record (pointing to 185.158.133.1) and the _lovable TXT record Lovable gives you at your DNS provider, remove any old A/AAAA/CNAME records for that host, and wait for the status to reach Live. Most setups finish within a few hours. Lovable says DNS changes can take up to 72 hours.¹
This guide walks through it, then covers the five things that usually go wrong.
Everything here is based on Lovable's official docs as of the "last checked" date above. Lovable updates often, so if a screen looks different, the official custom domain page wins.
Before you start
- A paid Lovable plan. Custom domains are available on paid plans. On Free you get a
yourapp.lovable.appaddress.¹ ² (Current prices: lovable.dev/pricing.) - A published project. You can set the domain up any time, but it only serves your site once the project is published.¹
- Access to your DNS settings at wherever you bought the domain (Cloudflare, Namecheap, GoDaddy, Porkbun and so on).
- Project editor permissions or higher in the Lovable workspace.¹
You can also buy a domain inside Lovable, which sets the DNS up for you automatically.¹ If you haven't bought one yet, that's the zero-DNS option. Buying elsewhere gives you more control over DNS and email.
Step 1: Start the connection in Lovable
- Open your project and go to Settings → Domains. You can also get there from the Publish dialog (Add domain) or by asking Lovable in the project chat.¹
- Under Connect existing domain, click Connect domain.
- Enter your domain, e.g.
yourapp.com, and click Continue. - Choose Root domain (
yourapp.com) or Subdomain (e.g.app.yourapp.com). - With a root domain, leave Redirect www → root switched on (it's on by default). Lovable then connectswww.yourapp.comtoo and lists it separately.¹ - Click Connect domain.
Step 2: Add the DNS records
Lovable offers automatic setup (via Entri), where you log in to your provider and approve, or manual setup.¹ For manual setup, add:
| Type | Host / Name | Value |
|---|---|---|
A |
@ (root) or your subdomain label, e.g. app |
185.158.133.1 |
TXT |
_lovable (root) or _lovable.app (for a subdomain called app) |
the lovable_verify=… value Lovable shows you |
Notes:
- Some providers want the host left blank or set to the full domain instead of @. Amazon Route 53 is one.¹
- If you kept the www redirect on, both yourapp.com and www.yourapp.com show Action required. Click Complete setup next to each one and add its records.¹
- Copy the whole TXT value. Lovable's troubleshooting specifically says to check the full TXT value when verification stalls.¹
Step 3: Wait for "Live"
The status moves through Verifying → Setting up (SSL is being issued) → Live.¹ While it says Setting up, your browser may show a security warning. That's expected, and you just wait. You don't need to buy or upload an SSL certificate, because Lovable issues its own.¹
When it's Live:
- Set it as primary (three-dot menu → Set as primary) so the lovable.app address redirects to it. Lovable uses temporary (302) redirects for this, not 301s.¹
- Verify the domain in Google Search Console and submit your sitemap. Lovable recommends this step too.¹
What usually goes wrong (and the fix)
1. "My domain shows my old website"
There are leftover records from your previous host. Remove the old A, AAAA or CNAME records for that host, so only Lovable's A record and the TXT record remain, then wait for propagation.¹
2. Stuck on "Verifying", or it shows the wrong site sometimes
Check for an AAAA (IPv6) record. Lovable's prerequisites say there must be none, because it can route traffic past Lovable.¹ Delete it.
3. You use Cloudflare DNS and get error 1001/1003, or it never verifies
Cloudflare's orange-cloud proxy is on. During verification the A record must point straight at Lovable, unproxied. Set the record to DNS only (grey cloud).¹ If you deliberately want Cloudflare in front, Lovable has an advanced "Uses Cloudflare or similar proxy" option that gives you a CNAME instead. You're then responsible for the proxy setup.¹
Building on Replit instead? The same Cloudflare rule applies, and it matters even after setup. Replit's docs say to set your
Arecord to DNS only (grey cloud), not proxied (orange cloud), because Replit can't automatically renew the security certificate for proxied records and proxying interferes with SSL provisioning. Also keep Replit'sreplit-verify=…TXTrecord in place permanently: Replit needs it to renew your certificate, so deleting it after verification means your site eventually serves an expired certificate.wwwis a separate entry in Replit's Domains tool with its ownAandTXTrecords.⁴
4. SSL stuck on "Setting up", "Stalled" or "Failed"
If your domain has CAA records, they may block the certificate. Allow at least one of the authorities Lovable uses (pki.goog, letsencrypt.org, ssl.com), then click Retry.¹ Remember that subdomains inherit CAA records from the parent domain.
5. The site loads but sign-in fails on the new domain
The auth redirect URLs don't include the new domain yet. On Lovable Cloud, Lovable adds it automatically when the domain goes Live. If not, add it under Cloud → Users → Auth settings. If you use your own Supabase project, add the domain to that project's Site URL and Redirect URLs. If you use your own Google OAuth credentials, add the new redirect URL in Google Cloud Console too.¹
What if I'm hosting outside Lovable (Vercel, Netlify, Cloudflare Pages)?
Then you don't use Lovable's domain settings. You connect the domain at your new host instead. Lovable's own guidance for moving hosts:³
- Sync the project to GitHub (Git sync works on all plans) and import the repo into your host.
- Check your stack. Projects created from 13 May 2026 are TanStack Start apps and need a host that runs server code. Vercel, Netlify and Cloudflare Pages are detected automatically. Older React + Vite apps are static, so they also need an
index.htmlfallback or deep links 404 on refresh.³ - Build with
npm run buildon Node 22, and set your environment variables (e.g.VITE_SUPABASE_URL,VITE_SUPABASE_PUBLISHABLE_KEY).³ - Test on the host's temporary URL first (nested routes, sign-in and sign-out, a database write), and only then point the domain at it.³
Vercel and Netlify both publish Lovable-specific guides: Vercel · Netlify.
FAQ
Can I use a custom domain on Lovable's free plan? No. Connecting a domain needs a paid plan. If you downgrade later, domains you've already connected keep working, but you can't connect new ones.¹
How long does it take? Usually a few hours. Lovable says DNS changes can take up to 72 hours.¹
Do I need to buy an SSL certificate? No. Lovable issues one automatically for connected domains.¹
Can I use both yourapp.com and www.yourapp.com?
Yes. Connect the root domain with the www redirect switched on (the default).¹
Can different subdomains point to different Lovable projects?
Yes. For example, yourapp.com can serve one project and blog.yourapp.com another. The same exact domain can't serve two projects.¹
Stuck? Our £39 Launch Check checks your domain, DNS, SSL, redirects and more, and gives you a plain-English fix list with copy-paste prompts for Lovable, so you can fix it yourself. It only needs your URL.
Sources
- Lovable docs, Set up a custom domain: https://docs.lovable.dev/features/custom-domain
- Lovable docs, Subscription plans: https://docs.lovable.dev/introduction/subscription-plans
- Lovable docs, Deploying and hosting outside Lovable: https://docs.lovable.dev/tips-tricks/external-deployment-hosting
- Replit docs, Custom Domains (checked 21 Oct 2026): https://docs.replit.com/cloud-services/deployments/custom-domains