How to Update an OpenClaw Website Without Changing Its URL
Table of Contents
- Why the URL changes, and how to keep it
- Understand what keeps the URL stable
- Step 1: keep one project folder
- Step 2: deploy once and create the project
- Step 3: save the project identity
- Step 4: revise the original project
- Step 5: deploy to the same project again
- Step 6: verify access settings
- If OpenClaw returned a different URL
- Confirm the folder
- Confirm the command location
- Confirm the project
- Confirm production mode
- Do not discard the project files
- If the page did not change
- A reusable OpenClaw update prompt
- Final checklist
- Why the URL changes, and how to keep it
- Understand what keeps the URL stable
- Step 1: keep one project folder
- Step 2: deploy once and create the project
- Step 3: save the project identity
- Step 4: revise the original project
- Step 5: deploy to the same project again
- Step 6: verify access settings
- If OpenClaw returned a different URL
- Confirm the folder
- Confirm the command location
- Confirm the project
- Confirm production mode
- Do not discard the project files
- If the page did not change
- A reusable OpenClaw update prompt
- Final checklist
Why the URL changes, and how to keep it
To keep a stable website URL, revise the original project folder. Then deploy it to the same hosting project, in production mode. A new hosting project, a preview deployment or a draft deployment gives you a different URL.
OpenClaw can build and update a static site from a chat. It can also run deploy commands through its exec tool. This guide shows the update loop (edit, build, deploy, repeat) with two common hosts for prebuilt files: Cloudflare Pages and Netlify. It also has a note about GitHub Pages. If you publish for the first time, read the Cloudflare Pages tutorial or the Netlify guide. They give more detail about the initial setup.
Understand what keeps the URL stable
A website URL belongs to a hosting project, not to one copy of index.html. Each deployment replaces the files that the project serves, and the address stays the same:
| Host | Stable address | Deploy that keeps it | What gives you a different URL |
|---|---|---|---|
| Cloudflare Pages | <project-name>.pages.dev or your custom domain |
npx wrangler pages deploy <folder> --project-name=<project-name> on the production branch |
A new project, or a deployment to another branch. Cloudflare serves that branch at <branch>.<project-name>.pages.dev |
| Netlify | The project’s main URL or your custom domain | netlify deploy --prod from a linked folder |
No --prod flag (Netlify then creates a draft deployment with a random subdomain), or a deployment to a new project |
| GitHub Pages | The repository’s Pages address | A push of new files to the publishing branch and folder | A new repository |
Use this safe loop:
- Build the site in one dedicated folder.
- Deploy it once to create the hosting project.
- Save the live URL and the project’s name or ID.
- Edit the files in place.
- If the project has a build step, build the site again.
- Deploy the same output folder to the same project, in production mode.
- Open the saved URL. Make sure that the change is live.
Step 1: keep one project folder
Ask OpenClaw to create the static site in a folder with a clear name. The folder must contain the entry file of the site and all relative assets:
project-status-site/
├── index.html
├── styles.css
├── app.js
└── assets/
A framework project can have a source folder and a generated output folder, such as dist or build. In that case, deploy the generated static output. Do not deploy the framework source or a development server.
Know the location of that folder. By default, OpenClaw’s agent workspace is ~/.openclaw/workspace, and relative paths start from it. Sandboxing (a mode that runs tools in an isolated area) can change this. If sandboxing is on and its workspaceAccess setting is not "rw", tools work inside a sandbox workspace under ~/.openclaw/sandboxes. Ask OpenClaw to report the absolute path of the project folder. Keep that path with your notes.
Step 2: deploy once and create the project
The deploy commands need credentials on the machine where OpenClaw runs. On your own computer, sign in once yourself with npx wrangler login or netlify login. On a server without a browser, put an API token in an environment variable. For Wrangler, use CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID. For the Netlify CLI, use NETLIFY_AUTH_TOKEN. Keep these tokens out of the project folder and out of chat messages.
For Cloudflare Pages, create the project once:
npx wrangler pages project create
Wrangler asks for a project name and a production branch. Then deploy the folder:
npx wrangler pages deploy project-status-site --project-name=project-status
Cloudflare serves the production site at project-status.pages.dev. If another project already uses the name, Cloudflare adds a few random characters. You can also create the project with drag and drop. Drag the folder into Workers & Pages > Create application > Get started > Drag and drop your files. In a Direct Upload project, you can switch between drag and drop and Wrangler for later deployments.
For Netlify, create the project once. For example, sign in and drag the output folder onto Netlify Drop. Then run netlify link in the project folder to connect the folder to that project. The CLI stores the project ID in .netlify/state.json. This command sends later deployments to production:
netlify deploy --prod --dir=project-status-site
Without --prod, netlify deploy publishes to a unique draft URL for tests. A draft URL is useful for review, but it is not your stable address.
This is a useful first instruction for OpenClaw:
Deploy the folder project-status-site to a new Cloudflare Pages project named project-status, using production mode. Report the production URL, the project name and the absolute path of the folder you deployed.
Your exec approval settings can make OpenClaw ask before it runs the deploy command. Read the command before you approve it. The project name and the folder are the two values that decide which URL changes.
Step 3: save the project identity
After the first deployment, write down these three items:
- The production URL, for example
https://project-status.pages.dev. - The project name (Cloudflare) or project ID (Netlify). In Netlify, you can copy it from Project configuration > General > Project details > Project information > Project ID.
- The absolute path of the output folder that OpenClaw deployed.
An exact name or ID is clearer than a title such as “Project status.” This difference is important when you have several similar sites.
Step 4: revise the original project
Give OpenClaw a specific change, and name the existing project in the request:
In the existing project-status-site folder, change the heading to “Launch readiness,” add a three-item checklist, and rebuild if the project has a build step. Do not create a new folder or a new hosting project.
If you can, open the generated output locally before you deploy it. Both hosts serve static files. Some pages work only with a local development server, private environment variables or a background process. These pages do not work the same way after deployment.
Step 5: deploy to the same project again
Run the same command from the same location:
npx wrangler pages deploy project-status-site --project-name=project-status
For Netlify, run this command:
netlify deploy --prod --dir=project-status-site
If the folder is inside a Git repository, Wrangler reads the current Git branch. A deployment from a branch other than the production branch becomes a preview deployment. To name the branch explicitly, add --branch=main (or the production branch that you chose).
Then open the saved production URL in a private window. As an alternative, do a hard refresh (a reload that skips the cache). This prevents old cached CSS or JavaScript from hiding the update. The command output can also show an address for that one deployment. Share only the saved production URL.
Step 6: verify access settings
If the site is private, make sure that the protection still works after the update:
- Open the original URL in a private window.
- Make sure that the login or password screen appears. On Cloudflare, this screen is the Cloudflare Access email prompt. If you use Netlify password protection, it is the Netlify password page.
- Sign in or enter the password. Make sure that the revised page loads.
- Keep passwords and tokens out of the published files and out of prompts.
A new deployment replaces the files, not the settings of the project. For this reason, the protection still applies. But look at the access screen after each significant change, because this is a good release habit. On Cloudflare Pages, the built-in access policy of the project covers only preview deployments. To protect *.pages.dev and custom domains, do the extra steps in the Cloudflare Pages Access guide.
If OpenClaw returned a different URL
Do these checks in order.
Confirm the folder
Make sure that OpenClaw deployed the original output folder, not a copy. A copied folder can lack the Netlify link file (.netlify/state.json). A sandbox copy can also be different from the folder that you edited.
Confirm the command location
Before the deployment, ask OpenClaw to run pwd. Compare the path with the path that you saved. If you use a framework, also make sure that you deploy the same generated output folder.
Confirm the project
For Cloudflare, make sure that --project-name matches exactly. The command npx wrangler pages project list shows your projects. For Netlify, make sure that the folder links to the correct project. You can also give the project ID explicitly with --site or with the NETLIFY_SITE_ID environment variable. Do not ask OpenClaw to “create a site” for a revision.
Confirm production mode
A Netlify deployment without --prod is a draft. A Cloudflare deployment from a non-production Git branch is a preview. Both get their own URLs, and the production site does not change.
Do not discard the project files
A cleanup step that deletes hidden folders can remove .netlify/state.json. Keep the project folder complete. If the file is gone, link the folder again with netlify link before the next deployment.
If the page did not change
A stable URL with old content usually has one of these causes:
- OpenClaw edited the source but did not rebuild the static output.
- The deployment used the wrong output folder.
- OpenClaw edited a sandbox copy while you deployed the host folder, or the other way round.
- The deployment went to a preview or a draft instead of production.
- The browser shows cached assets.
- The updated file has a different name or path from the file that the live page uses.
Add a visible, unique test string to the page. Build and deploy again. Then look for the string in the page source. When the string appears, you know that the path is correct, and you can remove the string.
On GitHub Pages, make sure that the commit reached the publishing branch and folder in Settings > Pages. Also make sure that the Pages build finished.
A reusable OpenClaw update prompt
Open the existing project at [path]. Make these changes: [changes]. Run its static production build if it has one. Deploy the output folder to the existing [Cloudflare Pages project named X | Netlify project with ID Y] in production mode. Confirm that the production URL exactly matches [saved URL]. Do not create a new project. Then summarize the files changed and the live URL.
The prompt states the project, the build step, the existing identity, the expected URL and the verification step. With these details, accidental duplicate sites are much less likely.
Final checklist
Before you send the revised link, make sure that these statements are true:
- The original URL opens.
- The visible change appears.
- Images and fonts load.
- The deployment has no secret, token or local-only file.
- If the site is private, the expected access screen appears.
- The result is static and does not depend on a development server.
- OpenClaw reports the same production URL.
When this loop works, each future revision is routine: edit, build, deploy to the existing project and open the same link.
A docs portal with Ask AI
and support tickets
Connect a repository, or describe your product to start. Each docs site has search, Ask AI, an API console, an MCP server and support tickets.
- Publishes from GitHub on every push
- Works with Mintlify repositories
- API console from your OpenAPI file
- MCP server and llms.txt for AI agents
- Ask AI and support tickets
- Analytics for people and AI agents
Related Articles

Add a Custom Domain to a Cloudflare Pages Site
Add a custom domain or www to a Cloudflare Pages site: set it up in Pages first, add the DNS record, fix stuck verification and redirect www.

What Is localhost:3000?
Your browser uses localhost:3000 to reach an app running on your own computer. Sending that address to someone else does not give them access to your app.

Move Exported Grok Website Files to Another Host
Export a Grok Build site to GitHub, deploy it on Cloudflare Pages, Netlify, Vercel or GitHub Pages, test it, then retire the grok.me copy.