On every builder we checked, the same few records break a connection. Find yours, then fix your email.
The builders' own pages list five reasons a custom domain won't connect: a record is missing, an old record is in the way, www was not added, a proxy sits in front, or a CAA record (it limits who may issue your certificate) blocks it. Check them in that order. Builder pages read 24 October 2026.
Why is my custom domain not working on Replit or Lovable?
The records aren't all in yet, or an old record is in the way. Work down this list. Each line names its builder. Pages read 24 October 2026.
Is the app published? Replit says a custom domain "doesn't serve your app until the app is published." On Lovable, the status Ready means the project is unpublished. Publish it.
Are the records in, copied exactly? Replit asks for an A record (it points your domain at Replit) and a TXT record (it proves the domain is yours). Lovable asks for an A record and a TXT record named
_lovable, with a value that startslovable_verify=. Copy the values your builder shows. This page doesn't print them, because they can change. Both builders offer Entri, which signs in to your DNS provider and writes the records for you, or shows them if it can't.Is
wwwadded? Replit doesn't set upwwwwhen you link the root domain. Add it as its own entry, with its own TXT record. Lovable connectswwwalongside the root and lists it separately.Are old records gone? Replit: remove AAAA records (the IPv6 kind of A record) and keep one A record at the root. Lovable: old records can show the old site (section 4).
Is a proxy in front? A proxy, such as Cloudflare, sits between visitors and your host. Replit wants the A record set to DNS only (Cloudflare's grey cloud). So does Lovable's standard set-up. Its advanced option, "Uses Cloudflare or similar proxy", uses a CNAME to your project's lovable.app address instead, and needs no TXT record.
What does the status say? Replit checks every 1 to 2 minutes for about 6 hours, then stops and shows Failed: its DNS checks stopped, because the records weren't in place in time. Remove the domain and add it again. Lovable's statuses are below.
| Status | What it means | What to do |
|---|---|---|
| Verifying | Waiting for DNS records to propagate (spread across the internet) | Click Check status. Check the A record and the full TXT value |
| Unable to verify | DNS verification did not finish within one hour | Click Check status, and recheck the A record and the full TXT value |
| Setting up | Verification is complete and the certificate is being issued. Until it is ready, the browser shows a security warning instead of your site | Wait for Live |
| Stalled | The certificate is taking longer than expected | Click Retry. You don't need to remove and re-add the domain |
| Failed | Ownership was verified, but the certificate could not be issued | Click Retry |
| Ready | The domain is set up, but the project was unpublished. When you publish again it becomes Live | Click Publish the project |
| Action required | The custom domain setup was not completed. With the www redirect on, root and www both show it until you click Complete setup on each | Click Complete setup |
| Removed | The domain was added to another project, or DNS verification never completed | Click Reconnect |
| Offline | The domain was Live, but its DNS records are no longer valid, so it no longer points to your project | Click Recover, then review the records shown and update them at your DNS provider |
| Check failed | Lovable could not complete its check. Lovable says: "Do not change your DNS records based on this status alone" | Click Check status |
| Connection issue | The domain is still connected, but Lovable may no longer be able to serve your project on it. Another service or project may be serving it | Follow the instructions in the warning |
| Suspended(domains bought through Lovable) | The registrar suspended it, most often because the registrant email wasn't verified before the deadline | Verify the registrant email and click the link |
| Action required(domains bought through Lovable) | The registrant email you entered at purchase still isn't verified. ICANN requires it. The domain is still serving | Open the verification email and click the link |
Stalled and Failed both have Retry. Unable to verify does not: it leads to Check status.
Two different Failed states. Replit's Failed: its checks stopped, so remove the domain and add it again. Lovable's Failed: the certificate could not be issued, so click Retry.
Lovable also shows Checking briefly while it confirms it can still serve your project (no action), Unpublished on your lovable.app address (publish the project), and Not connected on a www entry when the redirect is off (click Connect).
How long to wait. Replit: between a few minutes and 48 hours. Lovable: up to 72 hours, "although most updates are applied within a few hours."
No need to learn DNS. Each step names the record and says what it does. For where to click, read Replit's Custom domains and Custom domains and DNS, and Lovable's Set up a custom domain.
Why does my domain say "not secure"?
The certificate isn't issued yet, and it usually waits on the records. A certificate (the SSL certificate) is what puts https and the padlock on your address. Replit, Lovable, Base44 and Bubble issue it automatically once the records are right.
Three things block it: a proxy where the builder expects DNS only, AAAA records, and a CAA record that doesn't allow your builder's certificate issuer. A CAA record is a record that lists which companies may issue certificates for your domain. Per builder:
- Replit: at least one CAA record must allow Let's Encrypt. Both the A record and the TXT record are required, and the certificate can only be issued after the A record points to Replit. Renewal uses the TXT record, so keep it for the life of the domain.
- Lovable: the CAA record must allow at least one of Google Trust Services (
pki.goog), Let's Encrypt (letsencrypt.org) or SSL.com (ssl.com). Lovable recommends allowing all three. A warning right after verifying is usually Setting up. Wait for Live. If it shows Stalled or Failed, fix any CAA record, then click Retry. - Base44: remove or update any CAA record that blocks its issuers.
- Bubble: if the browser says "This Connection is Not Secure", check for a CAA record on the root.
Then the vendors' own waits. Bubble says HTTPS can take 24 to 36 hours. Lovable says to contact support if there is no certificate after 72 hours. Read 24 October 2026.
How do I connect a custom domain to Lovable, Bolt, Base44, Bubble, FlutterFlow or v0?
The steps have the same shape everywhere: add the domain in the builder, add the records it shows at your registrar, wait. What differs is the plan, the records and the wait. Labels are the builders' own words from their docs. Read 24 October 2026.
| Builder | Plan for a custom domain | What you add | Longest wait it states |
|---|---|---|---|
| Replit | The page doesn't say. Check your plan | A and TXT, or Entri | 48 hours (checks stop after about 6 hours) |
| Lovable | Paid plans | A and TXT, or Entri, or a CNAME in proxy mode | 72 hours |
| Bolt | Paid plans | ALIAS (or ANAME) at the root and a www CNAME, both to site-dns.bolt.host | 24 hours |
| Base44 | Starter plan and up | ANAME or ALIAS at the root (an A record if your provider has neither) and a www CNAME to base44.onrender.com; or "Let Base44 set up your DNS" | 48 hours |
| Bubble | Paid plans | Root and www records pointing to app.bubble.io; one CNAME for a subdomain | 24 hours for DNS, 24 to 36 for HTTPS |
| FlutterFlow | Paid plans, one custom domain included | The records shown in its UI; no other A records left; then Connect and Publish again | The page doesn't say |
| v0 | The page doesn't say | DNS set up with your registrar, through the Vercel console | The page doesn't say |
- Bolt: Bolt's Domain issues page says to check its status page first. If you see "another project is already using this domain", remove the domain from the previous host.
- Base44: the guided set-up opens by default. You sign in to your DNS provider and approve the changes yourself. Enter the root domain and Base44 connects
wwwwith it. For a subdomain it sets up only the subdomain you entered, not itswww. - Bubble: error 1014 most often means Cloudflare's orange-cloud proxy is on. For 1001, check your records, wait two hours and check again. For 525, wait an hour.
Moving the domain to a new host? See Move a Lovable app to Vercel.
Why does my domain still show my old site?
An old A, AAAA or CNAME record from your last host is still in your DNS. Remove it, keep your builder's records, then wait. Lovable, Base44, Vercel and FlutterFlow all say so. Lovable says your DNS provider probably still has records left over from your previous website or hosting provider. Base44 says to remove parking or default A and AAAA records. Vercel says to check for conflicting A, AAAA or CNAME records. FlutterFlow says no other A records should remain. Replit says to keep only one A record at the root.
If you see Cloudflare error 1001 or 1003 on a Lovable domain, set the Lovable records to DNS only. Then wait as long as your builder says (section 1). Read 24 October 2026.
How do I send email from my app on my own domain?
You have two routes: your builder's own email, or an email service such as Resend. Both need a domain you have verified. Read 24 October 2026.
- Lovable Emails (paid plans): sends sign-in emails and your app's own emails from your email domain. Sign-in emails need the built-in backend. It adds NS records (they hand one subdomain's records to Lovable) for a sender subdomain,
notifyby default. Lovable says: "Do not replace your domain's nameservers at your registrar." Lovable sets up SPF, DKIM and DMARC itself. It sends transactional emails only, not newsletters. Allow up to 72 hours. - Base44's built-in email (Starter plan and up): three CNAME records, no SPF or DKIM TXT record, DMARC optional. Base44 says it does not add DMARC automatically. One custom email domain per app, and it is for sending only. Allow up to 48 hours for the status to read Active.
- Replit: the CNAME records Replit asks for are only for sending email. They don't block verification, SSL or sign-in.
- A service such as Resend: add and verify a domain. The DKIM and SPF records must match exactly. Resend says it is often verified within 15 minutes, and can take up to 72 hours. It recommends sending from a subdomain, and says not to proxy its CNAME records.
Why aren't my app's emails sending from my domain?
The sending domain isn't verified yet. Check its status where you set it up.
- Lovable sends only from verified domains. If it is stuck on Pending, recheck the records, wait, press Verify domain, then delete the domain and add it again.
- Base44 needs the status to read Active.
- Resend: wait, then use Restart verification. It can take up to 72 hours.
Don't put a proxy in front of the email CNAME records (Resend says so). If the problem is the sign-up or reset link itself, see How do I set up login and user roles? Read 24 October 2026.
How do I get an email address on my domain without breaking anything?
You need a mail provider and its MX records. The one thing that breaks existing email is changing your nameservers before you copy the mail records. MX records tell the internet where your email is delivered. Nameservers are the servers that hold all your DNS records.
Base44 names Google Workspace and Microsoft 365 as providers to set up with MX records. On Replit (domains bought through Replit), Bolt, and Lovable (when you use Lovable's nameservers), you can add your own MX records in the builder's DNS settings. Use your email provider's records, as it shows them.
Never change nameservers without copying the email records first. Lovable says that with custom nameservers, any connected project and its email stay offline until you recreate those records there. Vercel says: "copy your existing DNS records to Vercel, including MX records for email and any verification TXT records." It lists "Email stopped arriving after a nameserver change" as a known problem. Base44 says: "Leave your MX and TXT records as they are" when you remove old records for the app.
App records → your builder.
Mail records (MX) → your mailbox provider.
Sending records → your email service.
Change the nameservers and all three are gone unless you copy them first. Read 24 October 2026.
Who owns a domain I bought through my builder, and what if I cancel?
Four builders' pages say nothing about ownership. Lovable says the most; Replit and Base44 say a little. Here is what each page states, and nothing more. Read 24 October 2026.
- Replit: the domain renews automatically. WHOIS privacy (it hides your name and address from public domain records) costs nothing extra. ICANN rules require a 60-day wait after purchase before a transfer to another registrar, and the transfer goes through Replit Support.
- Lovable: it registers the domain on your behalf. Domains bought through Lovable belong to your workspace, not a single project. New domains have a 60-day lock, which ICANN requires. After that, use Transfer out from the domain's menu, with an authorisation (EPP) code. Auto-renew is on by default.
- If you cancel or downgrade: "Downgrading or canceling does not disconnect your domains or unpublish your project." Connected domains keep serving your published app.
- The other half: after a downgrade to Free, you can't buy domains or connect domains to projects, including ones already in your workspace, until you upgrade again.
- The bill: domains bought through Lovable are billed separately from your subscription and keep renewing. Lovable says auto-renew "keeps renewing and charging as usual."
- Base44: domains bought from 9 September 2026 come from Wix, unless your plan is billed through the Apple App Store. Older ones may be with GoDaddy, or with IONOS if bought before 14 August 2026.
- Bolt, Bubble, FlutterFlow and v0: their pages say nothing about ownership or cancelling.
Keep the domain login in your own name, not your builder's or a freelancer's. That is our advice. For owning the rest of your app (code, data, accounts), see Export your code.
What should I check once my domain is connected?
Go through these 11 checks in order and tick each one. Start with the first one you can't tick. Nothing is asked of you and nothing is sent anywhere. The ticks live on this page and reset when you reload it. Builder facts read 24 October 2026.
| Done | Check | What to look for |
|---|---|---|
| 1. The app is published | Replit: a custom domain doesn't serve your app until it is published. Bolt: you can connect a domain only to a published site. Lovable: a Ready status means publish the project | |
| 2. The records your builder shows are in, copied exactly | Replit: A and TXT, no trailing dot, no extra subdomain, no stale record. Lovable: A, and a TXT named _lovable starting lovable_verify=. Bolt: ALIAS at the root to site-dns.bolt.host. Base44: ANAME or ALIAS to base44.onrender.com. Bubble: records pointing to app.bubble.io. FlutterFlow: the records shown in its UI | |
3. www is added | Replit: its own entry with its own TXT. Lovable: connected alongside the root and listed separately. Bolt and Base44: a www CNAME. Bubble: a www record | |
| 4. No old A or AAAA records are left | Replit: remove AAAA, keep one A at the root. Lovable and Base44: old records can show the old site or block the connection. Bolt: use ALIAS, not AAAA. FlutterFlow: no other A records. Vercel: check for conflicting A, AAAA or CNAME records | |
| 5. The proxy is set the way your builder expects | Replit, Base44, Bubble: DNS only (Cloudflare's grey cloud, not proxied). Lovable: DNS only on the standard set-up, or its "Uses Cloudflare or similar proxy" option (a CNAME, no TXT) | |
| 6. CAA records allow your builder's certificate issuer | Replit: allow Let's Encrypt. Lovable: Google Trust Services, Let's Encrypt or SSL.com (it recommends all three). Base44: remove or update any CAA record that blocks its issuers. Bubble: check for a CAA record on the root. If you have no CAA record, there is nothing to change | |
| 7. You waited as long as your builder says | Replit up to 48 hours (it stops checking after about 6 hours). Lovable up to 72. Bolt up to 24. Base44 up to 48. Bubble 24 for DNS and 24 to 36 for HTTPS | |
| 8. The browser shows no certificate warning | Lovable: Setting up shows a warning until the certificate is ready, so wait for Live. Lovable's Stalled or Failed: click Retry. Replit: both A and TXT must be in. Replit's Failed after about 6 hours: remove the domain and add it again | |
| 9. Your sending domain is verified | Lovable: only verified domains can send. Base44: the status reads Active. Resend: verified, and use Restart verification if it is still pending after 72 hours. Skip this row if your app sends no email | |
| 10. Your mail records (MX) are kept if you changed DNS | Never change nameservers before copying them (Lovable, Vercel). Base44: leave your MX and TXT records as they are | |
| 11. The domain login is in your own name | If you bought through your builder: Lovable keeps a bought domain in your workspace, where the owner can transfer it out. Replit transfers out through Replit Support. Keep the login in your own name (our advice) |
You've ticked 0 of 11. Start with the first one you can't tick.
All 11 ticked. If something still isn't working, we can look: Get the Free Build Audit.
For the rest of launch, use the Launch List. After you connect, verify the domain in Search Console: see Lovable SEO.
What should I do next?
Domain connected, but not sure what else stands between you and a launch? Get a Free Build Audit. You send the link to your running app, and we look at what you built and tell you what stays, what needs fixing and what blocks launch. You get a recorded walkthrough of 10 to 15 minutes and a one-page note, with a first fix for each item. It is free. It is not a DNS service, and it doesn't promise a fix, a timing, or that your domain will connect.
Questions.
How long does a custom domain take to connect?
It depends on the builder, and each states its own longest wait. Replit says between a few minutes and 48 hours. Lovable says up to 72 hours, most within a few hours. Bolt says 24, Base44 48. Bubble says 24 hours for DNS and 24 to 36 for HTTPS. Read 24 October 2026.
Why is my domain stuck on verifying?
On Replit, it checks for about 6 hours, then shows Failed. Remove the domain and add it again. On Lovable, Unable to verify means DNS didn't verify within one hour. Click Check status and recheck the A record and the full TXT value. Lovable allows up to 72 hours. Read 24 October 2026.
Do I need a paid plan for a custom domain on Lovable?
Yes. Lovable's custom domains are on paid plans, and the free lovable.app address stays. Bolt, Bubble and FlutterFlow also say paid plans, and Base44 says Starter and up. The Replit and v0 pages we read don't say. Read 24 October 2026.
Can I keep Cloudflare in front of my app?
It depends on the builder. Replit, Bubble and Base44 want DNS only, which means not proxied. Lovable wants DNS only on its standard set-up. Its advanced "Uses Cloudflare or similar proxy" option uses a CNAME and needs no TXT record. Read 24 October 2026.
Will connecting my domain break my email?
It can, if you change nameservers or delete MX records without copying them first. Lovable and Vercel both warn about this. Copy your mail records before you change anything, and leave your MX and TXT records as they are. The detail is in How do I get an email address on my domain without breaking anything? Read 24 October 2026.
Does Base44 send email from my domain?
Yes, on the Starter plan and up. It is for sending only, with three CNAME records and up to 48 hours to reach Active, and one custom email domain per app. To receive email, buy a business email through Base44 or set MX records with your own email provider. Read 24 October 2026.