My Lovable custom domain isn't working, or SSL is stuck. What do I check?

Checked on

For a domain bought elsewhere, Lovable needs two DNS records: an A record pointing to 185.158.133.1 and a TXT record named _lovable with your lovable_verify= value. Most stuck domains have one of five problems: the records are wrong or not live yet, the A record is Proxied (orange cloud) in Cloudflare, old A, AAAA or CNAME records from your last host are still there, a CAA record blocks the SSL certificate, or the project isn't published. In Cloudflare, set the Lovable records to DNS only (grey cloud), delete the old records, then click Check status or Retry in Project → Settings → Domains.

Symptoms

  • The domain shows Verifying or Unable to verify in Project → Settings → Domains for hours.
  • It shows Setting up, Stalled or Failed, and the browser shows a warning (“Your connection is not private”) instead of your app.
  • Your domain opens your old website, or an old version of your app.
  • www.yourdomain.com works but yourdomain.com doesn't (or the other way round).
  • Visitors see a Cloudflare error page, such as Error 1001 or Error 1003.
  • The yourproject.lovable.app address works fine the whole time.

Why it happens

Lovable's setup has two steps. First it checks that you own the domain (it looks for the A and TXT records). Then it gets an SSL certificate so the site opens over https. Each step can get stuck.

  1. The records are wrong or not live yet. A missing _lovable TXT record, a TXT value typed by hand with a character missing, or the A record added under the wrong name (some providers want @, some want the field blank, some want the full domain). DNS changes can take up to 72 hours. Lovable marks a domain Unable to verify if it can't find the records after about an hour, and Removed if they never arrive within 72 hours.
  2. Cloudflare is proxying the record. When a record is Proxied (orange cloud), Cloudflare answers with its own IP addresses instead of 185.158.133.1. Lovable can't see its own address, so verification and the SSL certificate don't finish. Lovable's docs say: “Do not enable proxying on the A record” while verification is in progress. Cloudflare turns proxying on by default when you add a domain through its dashboard, so this is very common. Cloudflare itself says DNS only is right for “SaaS-hosted websites” and for domain verification records.
  3. Old records are still there. An old A record, an AAAA (IPv6) record, or a CNAME from your previous host or website builder sends some or all visitors to the old site. Lovable says there must be no AAAA records on the domain you connect. In Cloudflare, if you have two A records on the same name and one is proxied, Cloudflare treats both as proxied.
  4. A CAA record blocks the certificate. A CAA record lists which companies may issue SSL certificates for your domain. If it doesn't include one of the companies Lovable uses (Google Trust Services, Let's Encrypt, SSL.com), the domain stays in Setting up, Stalled or Failed. A subdomain like app.yourdomain.com follows the CAA records of yourdomain.com if it has none of its own.
  5. The project isn't published, or www was never connected. A domain only shows your app after you publish. Lovable shows Ready until you do. And www.yourdomain.com is a separate domain with its own A record (named www) and its own TXT record (named _lovable.www).

Step-by-step fix

1. Read the status in Lovable

Open Project → Settings → Domains and find your domain. The status tells you which step is stuck:

  • Ready: the domain is fine, but the project isn't published. Publish the project.
  • Action required: setup wasn't finished. Click Complete setup.
  • Verifying or Unable to verify: Lovable can't see the right records yet. Follow steps 2 to 4.
  • Setting up: the records are fine and the SSL certificate is being issued. Wait. The browser shows a warning until it's done.
  • Stalled or Failed: the SSL certificate couldn't be issued. Follow step 5, then click Retry (no need to remove and re-add).
  • Offline: it was live, but the records changed. Click Recover and put the records back.

You can also ask Lovable in the project chat about the domain. It reports which records it expects and whether it can see them.

2. Find out where your DNS is managed

Your DNS is managed wherever your domain's nameservers point. That's usually where you bought the domain, unless you moved it to Cloudflare. To check, open dnschecker.org, enter your domain and choose NS. If the results end in cloudflare.com, you add the records in Cloudflare, not where you bought the domain.

3. Add exactly these records

At your DNS provider, for a root domain:

  • A record: name @ (or blank, or your full domain, depending on the provider), value 185.158.133.1.
  • TXT record: name _lovable, value the lovable_verify=... text shown in Lovable.

For www, add a second pair: an A record named www and a TXT record named _lovable.www with the value shown for the www domain in Lovable. For a subdomain such as app, the names are app and _lovable.app.

Copy the TXT value with the copy button. Don't type it.

Then delete any other A, AAAA or CNAME records for the same name. Leave MX and other email records alone, or your email stops working.

4. In Cloudflare, switch the records to DNS only

In Cloudflare, open your domain, then DNS → Records. Next to the A record for @ and for www, click the orange cloud so it turns grey (DNS only). Save. TXT records are always DNS only, so there is nothing to change there.

Then go back to Lovable and click Check status. If it says “Hold on, we just checked this”, wait about five minutes.

If you want to keep Cloudflare's proxy on (for its firewall or caching), don't use the A record. Disconnect the domain in Lovable, connect it again, and under Advanced turn on Uses Cloudflare or similar proxy. Lovable then gives you a CNAME record pointing to your lovable.app address instead, with no TXT record. Lovable says that in this mode it “does not configure, validate, or monitor” your Cloudflare setup, so redirects, caching and SSL settings in Cloudflare are yours to get right.

5. Check CAA records (for Setting up, Stalled or Failed)

At dnschecker.org, choose CAA and enter your domain. If you get no result, CAA isn't your problem. If you get results and none of them is pki.goog, letsencrypt.org or ssl.com, add these three records at your DNS provider (flag 0, tag issue):

0 issue "pki.goog"
0 issue "letsencrypt.org"
0 issue "ssl.com"

For a subdomain, check the parent domain too. Then click Retry next to the domain in Lovable.

On Cloudflare, if Universal SSL is on and you've added any CAA record, Cloudflare adds CAA records for the companies it uses without showing them in the dashboard. A lookup tool shows them. Check the full list before you add more.

6. Wait, then test the live domain

Once the status is Live, open these in a private window:

  • https://yourdomain.com
  • https://www.yourdomain.com
  • your lovable.app address

The other two should send you to your primary domain. Lovable uses a temporary (302) redirect for this. That's normal.

Then test the pages people use: sign up, log in, and payment. If sign-in fails on the new domain, the domain is missing from your sign-in redirect URLs. See Lovable log-in works in preview but not after I publish.

Fix prompt for your AI builder

Domains are set up in Lovable's settings and at your DNS provider, not in your code. So use this prompt in the Lovable project chat (or another AI tool) to get exact steps for your setup. Replace the parts in brackets first.

Fix prompt
My Lovable custom domain isn't working.
Domain: [yourdomain.com]. Also www: [yes/no]. DNS is managed at: [Cloudflare / my domain registrar / other].
Status in Project > Settings > Domains: [Verifying / Unable to verify / Setting up / Stalled / Failed / Offline].
Error visitors see, if any: [paste it].
Here are all my current DNS records for this domain: [paste the list from your DNS provider].

Please:
1. Tell me which A and TXT records Lovable expects for this domain and for www, and whether you can see them.
2. List any records I should delete (old A, AAAA or CNAME records for the same names). Don't touch MX or other email records.
3. If my DNS is on Cloudflare, tell me which records must be set to DNS only (grey cloud),
   or whether I should reconnect with "Uses Cloudflare or similar proxy" and use a CNAME instead.
4. Check whether a CAA record could be blocking the SSL certificate, and give me the exact CAA records to add if so.
5. Tell me when to click Check status or Retry.
Don't change any app code, the database or the login setup.

How to find out sooner next time

A domain can stop working without any warning. A domain renewal, a move to Cloudflare, a new email setup that replaces your DNS records, or a removed A record can take your site offline while your lovable.app address keeps working. So it looks fine when you test it from the editor.

Heedza's monitoring for Lovable apps checks your live site on the domain you add. It checks that the site is online every 5 minutes on Free, every minute on Solo and Starter, and every 30 seconds on Pro and Business. It opens your home, sign-up, log-in and payment pages once a day on Free and up to every 15 minutes on paid plans, and checks that they show their forms and Pay buttons. If a page stops working, it sends you a screenshot and a fix prompt. Heedza never submits forms, signs in or pays.

Let Heedza check this for you. Heedza’s online and page check keeps checking that your live home page opens with real content, and that your sign-up, log-in and payment pages still open and show their forms and Pay buttons. It never logs in or fills in forms, so it can’t see errors that only show after that.

Made with Lovable, Bolt, Replit, Cursor or v0? Free for 1 site: start free or see prices.

More questions

Do I need a paid Lovable plan for a custom domain?

Yes. Lovable's docs say custom domains need a paid plan, and the project must be published before the domain shows your app.

How long can DNS changes take?

Up to 72 hours. Lovable marks a domain Unable to verify after about an hour without the records, and removes it if they never arrive within 72 hours.

Is www a separate domain in Lovable?

Yes. Connect www.yourdomain.com as its own domain, with its own A record named www and TXT record named _lovable.www.

Where this comes from