To deploy a website you built with AI, export it as static HTML or a Next.js project, then either upload the folder to a static host or connect a GitHub repository so the host publishes every change for you. Next, point your domain at the host, let it issue the HTTPS certificate, and check every page on a phone before you announce anything. The hands-on part takes well under an hour; DNS changes can take longer to settle.
Before you deploy: a pre-flight check
Fix these in the builder first. It is easier than fixing them in exported code.
- Set the site's address. Sitemaps, canonical links and social previews need to know the final domain. In FNJ's builder, sitemap.xml and robots.txt are generated once you set it.
- Read every page title and description. These are what people see in search results and browser tabs. "Home" is not a title; "Family Dentist in Leeds | Your Practice Name" is.
- Replace every photo placeholder. Builders that do not supply stock photos leave styled spaces for your own images. An empty gray box on launch day looks unfinished.
- Test every button. Booking, contact and store buttons should point to the real tools, not to
#. - Look at the phone layout. Check the narrowest width for text that overflows or buttons that wrap awkwardly.
Then export. If you used an AI website builder with code export, you now have one of three things: a static HTML folder, a Next.js project folder, or code sitting in a branch of your GitHub repository.
Choose your deploy path
There are two ways to get files onto a host, and they suit different people.
| Direct upload | Git-connected | |
|---|---|---|
| How it works | You drag a folder or ZIP into the host's dashboard | The host watches a GitHub repository and deploys on every change |
| Best for | Static HTML, one-person sites, quick launches | Next.js projects, teams, sites that change often |
| Updates | Upload the new folder again | Push or merge a change and the host redeploys |
| Previews | Usually none | Most hosts build a preview link for other branches |
| History | Whatever the host keeps | Full history in Git, plus the host's deploy list |
If you have static HTML and change the site a few times a year, uploading is fine. If you have a Next.js project, use Git, because it saves you from building the project on your own machine. If you are on the fence, read why your website should live in a GitHub repository.
Choose your host
Cloudflare Pages, Vercel and Netlify all handle a marketing site well, and GitHub Pages suits plain static files. The differences that matter are in their plans. These facts were checked in September 2026, and plans change, so confirm on each host's pricing page.
| Host | Plan facts, in short | Good fit when |
|---|---|---|
| Cloudflare Pages | No published bandwidth cap for static assets, 500 deploys a month, custom domains included | You want a business site on a free plan with room for traffic |
| Vercel | Hobby: 100 GB of fast data transfer a month, personal and non-commercial use only | It is a personal project, or you will pay for Pro ($20 per seat) for a business or client site |
| Netlify | Credit-based, roughly 15 GB of bandwidth a month | The site is small and traffic is modest |
| GitHub Pages | Hosts static sites from a repository | Your code already lives on GitHub and the site is plain files |
For a business site with no developer, Cloudflare Pages is a sensible default, mainly because of the commercial-use rule on Vercel's Hobby plan and the bandwidth limit on Netlify's free tier.
One detail for GitHub Pages: FNJ's static HTML links its stylesheet from the root of the site, so serve it at the root of a domain (your custom domain, or a username.github.io site), not from a project subfolder such as username.github.io/my-site.
Option A: upload a static HTML folder
Cloudflare Pages and Netlify both accept a folder upload. Dashboards change, so the exact button names may differ from what you see.
- Find the right folder. Open the export and find the folder that has
index.htmldirectly inside it. Upload that folder, not the one above it. Uploading the parent folder is a common reason a fresh deploy shows a "not found" page. - Create a new project in the host's dashboard and choose the option to upload files instead of connecting to Git.
- Name the project. The name becomes part of a temporary address on the host's own domain, which you can use until your real domain is connected.
- Drop the folder in and deploy. Static files need no build command.
- Open the temporary address and click through every page, then do it again on your phone.
Cloudflare's Pages documentation covers upload limits and options if you hit anything unusual.
Option B: deploy from GitHub
Cloudflare Pages, Vercel and Netlify all deploy from a GitHub repository. It is the right route for a Next.js project, on a host that builds and runs Next.js.
- Get the code into a GitHub repository. Upload the exported project to a new repository, or, in FNJ's builder, push straight to a branch of your own repository. FNJ leaves your default branch untouched until you merge.
- Import the repository from the host's dashboard. If GitHub asks which repositories the host may access, choose only this one.
- Pick the framework settings. For Next.js, choose the Next.js preset and accept the build command the host suggests. FNJ's Next.js export is a standard Next.js project rather than a static export, so it needs a host that builds and runs Next.js, such as Vercel or Netlify; for Cloudflare Pages or another static host, deploy the static HTML export instead. For static HTML, choose no framework and leave the build command empty.
- Set the production branch, usually
main. Changes merged into that branch go live; pushes to other branches get a preview link on most hosts. - Deploy and read the build log. If the build fails, the log names the step that broke. One thing to check is the Node.js version; most hosts let you set it in the project settings.
The preview links are the quiet win of this route. When changes land on a branch, you open the preview, check it on your phone, and only then merge to make it live.
Connect your custom domain
Your domain is registered with a registrar, and that is usually where its DNS records live. The host tells you which records to add.
- Add the domain in the host's project settings. Add both
example.comandwww.example.com. - Copy the DNS records the host shows you. Subdomains such as
wwwusually use a CNAME record pointing at the host. The root domain may need different records, or the host may ask you to move your domain's nameservers to it. Follow its instructions exactly. - Add the records wherever your DNS is managed. Do not delete existing MX records; those deliver your email.
- Pick one main address and redirect the other to it, so
wwwand the bare domain do not compete as two copies of the same site. - Wait. DNS changes often apply within minutes or a few hours, though a nameserver change can take up to a day or two. The host's domain screen shows when it can see your records.
If the domain already has an older site on it, set up redirects from the old URLs before you switch. Our redirect map guide shows how to build the list.
Get HTTPS working
You do not need to buy an SSL certificate separately. Static hosts typically issue and renew the certificate for you once the domain's DNS points at them, and the domain screen shows its status.
Once it is active, check three things:
- The
http://version of each page redirects tohttps://. - No page shows a "not secure" warning. If one does, look for an image or script loaded from an
http://address. - Your canonical links and sitemap use the exact
https://address you chose, with or withoutwww.
Ship updates without breaking the live site
After launch, every change follows the same loop:
- Make the change in the builder, by prompt or by editing on the canvas.
- Export again, or push to a branch again.
- On the upload path, upload the new folder to the same project. On the Git path, open the branch's preview link, check it, then merge into
main. - Check the live page on desktop and on a phone.
Hosts keep a list of past deployments, and most let you make an older one live again if a change goes wrong. With Git you also have the history of every change, so nothing is truly lost.
After launch: the ten-minute check
- Every page loads at the real domain, on desktop and phone.
/sitemap.xmland/robots.txtload, and robots.txt does not block the whole site.- A made-up URL shows a not-found page rather than a blank screen.
- Pasting a link into a messaging app shows the right preview image and title.
- Booking, contact and store buttons reach the right tools.
- The site is added to Google Search Console, with your sitemap submitted as described in Google's guide to building and submitting a sitemap.
Where FNJ fits
FNJ does not host your site. Its AI builder exports a Next.js App Router project or static HTML, or pushes the code to a branch of your GitHub repository, and you deploy it to Cloudflare Pages, Vercel, Netlify or any static host. Uploaded images are copied into the project and there is no FNJ runtime or script in the code, so the deployed site runs on its own. See what each export contains in FNJ's AI website builder with code export.
Frequently asked questions
Where should I host a website I built with AI?
Any static host works for the static HTML export, while the Next.js project needs a host that runs Next.js, such as Vercel or Netlify. Cloudflare Pages' free plan has no published bandwidth cap for static assets and includes custom domains, while Vercel's free Hobby plan is for non-commercial use only, so a business site there needs Pro.
Do I need GitHub to deploy my website?
No. You can upload a static HTML folder directly to hosts such as Cloudflare Pages or Netlify. GitHub becomes worth it when you want automatic deploys, preview links and a history of every change.
How long does it take for a custom domain to start working?
Adding the DNS records takes minutes, and the changes usually apply within a few hours, though a nameserver change can take up to a day or two. The HTTPS certificate is usually issued once the host can see the records.
Why does my newly deployed site show a "not found" error?
A common cause is uploading the folder above the one that contains index.html, so the host cannot find a homepage. For Git deploys, check that the output folder in the host's build settings matches the project.
How do I update my website after it is live?
Make the change in your builder, export or push it again, and redeploy: upload the new folder for direct uploads, or merge the branch for Git-connected sites. Check the host's preview link first when it offers one.