A project on a lovable.app subdomain looks like a demo. The same project on your own domain looks like a company. Connecting the two takes about ten minutes of work and then a wait that you cannot speed up, which is exactly why people panic halfway through and change settings that were already correct.
Short answer: publish the project first, add the domain in project settings, create the DNS records your registrar asks for, then leave it alone for up to a few hours while DNS propagates and the SSL certificate is issued. Most failures are impatience, a duplicate old record, or proxying turned on at the registrar.
Before you start
You need three things. A published project, since an unpublished project has nothing to point at. A domain you control, bought from a registrar such as Namecheap, GoDaddy, Cloudflare or Google Domains. And access to that registrar's DNS panel, which is sometimes called DNS management, advanced DNS, or nameserver settings.
A note on plans. Custom domains are a paid feature on most builders, Lovable included. Check the current plan details before you buy a domain for a project you intend to keep on the free tier. The pricing breakdown covers what each tier includes.
Step 1: publish the project
Hit Publish in the editor. This builds the production version of your app and puts it on a lovable.app address. Open that address in a private window and click through the whole app before you touch DNS. Anything broken on the published version will still be broken on your domain, and debugging two problems at once is miserable.
Step 2: add the domain inside the project
In project settings, open the domains section and add your domain. You will be shown the exact records to create. Add the root domain and the www version together if the panel allows it, because visitors will type both and search engines will find both.
Step 3: create the DNS records
In your registrar's DNS panel you will typically create two records.
- An A record for the root domain, with host set to @ and the value set to the IP address shown in your project settings.
- A CNAME record for www, with host set to www and the value set to the target hostname shown in your project settings.
Always copy the values from your own project settings rather than from a blog post, including this one. Hosting targets change, and a stale IP address copied from somewhere else is the most annoying possible way to lose an afternoon.
Set TTL to automatic or to the lowest value offered while you are setting things up. A low TTL means a mistake gets corrected faster.
Step 4: wait properly
DNS changes propagate. Sometimes it is two minutes, sometimes it is a few hours, and the documented worst case is 48 hours. After DNS resolves, a certificate has to be issued for HTTPS, which usually takes a few more minutes. During that window you may see a security warning in the browser. That is normal and it fixes itself.
Check progress with a DNS lookup tool rather than by reloading your own browser, because your browser and your operating system both cache DNS aggressively. If a global lookup tool shows the right value and your machine does not, the problem is your cache, not your setup.
The four errors that cause most failures
1. Old records still pointing somewhere else
If the domain was ever parked, used for a previous site, or set up with a website builder, there is probably an existing A record or CNAME for the same host. Two conflicting records for @ or www will produce random results depending on which one resolves. Delete the old ones before adding the new ones. This is the number one cause of a domain that works for you and not for a friend on another network.
2. Proxy or CDN turned on at the registrar
Cloudflare users hit this constantly. If the orange cloud is on, Cloudflare terminates the connection itself, which breaks certificate issuance and often produces a redirect loop or a 525 error. Set the record to DNS only while you connect the domain. You can revisit proxying later once the certificate exists, with SSL mode set to full and strict rather than flexible.
3. The certificate never gets issued
Certificate issuance needs DNS to resolve correctly first. If the domain has been pending for more than a few hours, verify the records with an external lookup, check that there is no CAA record blocking issuance, and remove the domain and add it again. Removing and re-adding restarts the verification process, which clears most stuck states.
4. www works but the root does not, or the reverse
You created one record and not the other. Both should exist, and one should redirect to the other so you have a single canonical address. Pick www or the root, be consistent everywhere, and make sure your canonical tags and sitemap use the same version. Splitting your traffic across two addresses splits your search signals too.
After the domain is live: the SEO cleanup nobody does
A new domain is a fresh start for search engines, so spend twenty minutes on the basics while it is easy.
- Update canonical tags and Open Graph URLs so they use the new domain, not the lovable.app address.
- Update your sitemap so every URL uses the new domain.
- Point the sitemap directive in robots.txt at the new location.
- Verify the domain in Google Search Console and submit the sitemap.
- Share the new URL once from wherever you already have an audience.
Ask Lovable to do the first three for you in a single prompt: "Update canonical tags, Open Graph URLs, the sitemap and robots.txt to use my new domain." It is a two minute change that saves weeks of the wrong URL being indexed.
Email on the same domain
Connecting a domain to your app does not set up email on it. If you want an address at your own domain, that is a separate service and separate DNS records, usually MX plus SPF and DKIM entries. Adding those records will not affect your website records as long as you do not overwrite the A or CNAME entries you just created.
Frequently asked questions
How long does a custom domain take to work?
Often under an hour. Plan for a few hours and do not be alarmed until 24 hours have passed with correct records in place.
Can I use a subdomain such as app.mysite.com?
Yes. Create a CNAME record with the subdomain as the host pointing at the target hostname from your project settings. Subdomains usually resolve faster than root domains.
Do I need to buy the domain through Lovable?
No. Any registrar works. You keep ownership of the domain and you can point it elsewhere later.
Will my lovable.app address stop working?
It keeps working as the underlying address. Use your custom domain everywhere publicly so search engines settle on one canonical version.