← Back to blog

How to host your Lovable app on a custom domain (free, 10 minutes)

Daniel Sternlicht·
lovablecustom domainsverceltutorialfree hosting
How to host your Lovable app on a custom domain (free, 10 minutes)

You have two ways to get a Lovable app onto yourbrand.com. Lovable's built-in custom domain works in about two minutes but requires a paid plan. Exporting to GitHub and deploying on Vercel costs nothing, takes about ten minutes, and keeps auto-deploying every time you ship a change in Lovable.

This post covers both, honestly, so you can pick. All DNS values below were re-verified on 19 August 2026, because both Lovable and Vercel changed theirs this year.

The two paths, side by side

Lovable custom domainExport to GitHub, deploy on Vercel
CostRequires a paid Lovable plan$0 on Vercel's Hobby tier
Setup time~2 minutes~10 minutes, once
DNS recordsA record + TXT verificationA record (apex) or CNAME (subdomain)
Auto-deploy from LovableBuilt inYes, via the GitHub repo
Who hosts the appLovableVercel
Domain limitPer your Lovable plan50 custom domains per project on Hobby
You can edit the code directlyNoYes, it's a normal repo
Commercial use on the free tierN/A, it's paidVercel Hobby is non-commercial

That last row is the one people miss, so read it before you pick the free path: Vercel's Hobby tier is for non-commercial projects. If your Lovable app is a business, you are meant to be on Pro. Plenty of people ignore this for a side project; if you are charging money, don't.

Path 1: Lovable's own custom domain

If you are already paying for Lovable, this is the shorter road and there is no reason to route around it.

In Lovable, open the project, go to Settings → Domains, and add your domain. Lovable then asks for two records at your registrar:

  • An A record for the apex, pointing at 185.158.133.1.
  • A TXT record on the host _lovable, with a value starting lovable_verify=.

Add both, wait a few minutes, and Lovable issues the certificate.

Two things worth knowing. Custom domains are paid plans only, and the restriction is enforced on connection, not just on signup: if you downgrade to the free tier, you cannot connect a new domain until you upgrade again. And the TXT record is not a one-time key. Leave it in place. Verification records like this one are re-checked on renewal, and deleting one after setup is a classic way to discover your certificate stopped renewing three months later.

Path 2: export to GitHub, deploy on Vercel, $0

This is the path if you are on Lovable's free tier, or if you want the code somewhere you can actually edit it.

Step 1. Export your Lovable app to GitHub

In Lovable: top-right menu → Export to GitHub. Authorize the connection the first time. Lovable pushes the full frontend to a new repo under your account.

From here it is an ordinary Vite or Next.js project. That is the real benefit of this path, separate from the money: you can open the code, fix something by hand, and add dependencies Lovable will not add for you.

Step 2. Deploy the repo to Vercel

Go to vercel.comSign in with GitHubNew Project → pick the repo Lovable just created.

Leave everything on defaults. Vercel detects the framework and the build command. Hit Deploy. You get a working URL inside a minute, something like your-repo-abc123.vercel.app.

Step 3. Add your custom domain, with the current values

Vercel project → SettingsDomains → enter your domain.

For an apex domain (yourbrand.com), Vercel asks for an A record. The long-standing value is 76.76.21.21, and Vercel's own docs now phrase it as "76.76.21.21 or your domain card's value", so use whatever the dashboard shows you rather than pasting a number from a blog post, this one included.

For a subdomain (app.yourbrand.com), Vercel asks for a CNAME, and this is the part that changed. Vercel now issues a per-project CNAME target, something like d1d4fc829fe7bc7c.vercel-dns-017.com. The old generic cname.vercel-dns.com still resolves, but it is not what new projects are given, and guides that still tell you to paste it are out of date. Copy the value from your project's Domains tab.

Add the record at your registrar, save, and Vercel picks it up within a couple of minutes, issues a Let's Encrypt certificate via the ACME protocol, and your app is live. The mechanics are covered in how SSL provisioning works.

Step 4. Auto-deploys, forever

Nothing to configure. Vercel watches the repo. Every Lovable re-export creates a commit, Vercel rebuilds, the new version is live a few minutes later.

The three things that actually go wrong

Cloudflare's orange cloud. If your DNS is on Cloudflare, set the record's proxy status to DNS only (grey cloud). The full symptom list is in the custom-domain debugging runbook. Leave it proxied and Cloudflare terminates TLS with its own certificate in front of Vercel's, and the handshake breaks in ways the error message will not explain. This is the single most common failure on both paths.

The apex/subdomain split. You cannot put a CNAME at an apex domain; that is a DNS rule, not a Vercel limitation. Hence the A record for yourbrand.com and the CNAME for app.yourbrand.com. If your registrar offers ALIAS or ANAME records, or CNAME flattening, you can use the CNAME target at the apex too and keep the benefit of Vercel changing addresses without you noticing.

Waiting on the wrong thing. Nothing "propagates" in the way people mean. What you are waiting for is the old cached answer to expire, and the clock is the TTL on the record that was there before. If you look up the name before creating the record, a resolver can cache the "no such record" answer for up to an hour. Create the record first, then check. The DNS propagation checker shows which resolvers have caught up, and the SSL certificate checker tells you whether the certificate actually issued.

Which one should you pick

If you already pay for Lovable, use Lovable's custom domain. Two minutes beats ten, and you gain nothing by adding a second vendor.

If you are on Lovable's free tier, or you want to edit the code, or you want the app somewhere you control, take the export path. The one caveat is Vercel's Hobby licence being non-commercial, so budget for Pro if the app makes money.

When your users need their own domains

Everything above is about one custom domain. Yours.

The different problem is a Lovable app where your customers want their own domains: a portfolio builder where each customer lives at their-brand.com, a storefront where each seller is at shop.theirdomain.com. Neither path above scales to that. Lovable has no concept of it. Vercel charges per domain above the Hobby cap and expects you to wire each one yourself.

That is multi-tenant custom domains, and it is a different piece of infrastructure: a certificate per customer hostname, SNI-based selection at the edge, DNS monitoring, wildcard or per-hostname certificates, and renewals running forever without you. Apex support for customer domains has its own guide: shipping apex domain support.

Domainee is a custom domains API for SaaS with a native MCP server — 50 domains and 100 GB free. One POST per customer hostname, they add one CNAME at their registrar, and the certificate, the renewal and the drift detection are handled:

// When a customer adds their domain in your Lovable app's dashboard:
const res = await fetch("https://api.domainee.dev/v1/domains", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.DOMAINEE_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    hostname: "shop.customer.com",
    originUrl: "https://your-lovable-app.vercel.app",
  }),
});

const { domain } = await res.json();
// Show domain.dnsRecords to the customer.
// They add one CNAME at their registrar.
// A webhook fires when DNS lands and the cert issues.

The free tier covers your first 50 customers, so you can build the feature before you have a reason to pay for it. The full walkthrough for AI-built apps is at custom domains for your users in an AI-built SaaS, and the connect guide covers the customer-facing flow.

FAQ

Does Lovable let you use a custom domain for free? No. Custom domains are on paid plans only, and the check runs when you connect a domain, so downgrading to the free tier blocks new connections. The free route is to export the project to GitHub and deploy it on Vercel's Hobby tier, which costs nothing but is licensed for non-commercial use.

What DNS records does Lovable need for a custom domain? An A record for your apex pointing at 185.158.133.1, plus a TXT record on the host _lovable whose value begins lovable_verify=. Leave the TXT record in place permanently; it is re-checked, not consumed.

What CNAME do I point at Vercel? The one your project shows you. Vercel now issues a per-project target that looks like d1d4fc829fe7bc7c.vercel-dns-017.com. The old generic cname.vercel-dns.com still resolves, but it is not what new projects are assigned, so copy the value from Settings → Domains rather than from a guide.

Will my app still update when I change things in Lovable? Yes. Lovable's export pushes a commit to the GitHub repo, Vercel sees the commit and rebuilds. You can ignore the Vercel dashboard entirely after the first setup.

Why does my domain show a certificate error after I add the records? Almost always Cloudflare's proxy. Set the record to DNS only, the grey cloud. If it is not that, check whether you looked the name up before creating the record, in which case a cached negative answer is still in play and you are waiting it out.

How do I let my own users connect their domains to my Lovable app? That is multi-tenant custom domains and no AI builder ships it. You add a custom-domains API that provisions a certificate per customer hostname and routes their traffic to your origin. It is one API call per customer plus a webhook handler.