Help Center
Deploying a Site
The Deploy button flow - what a deploy builds, deploy statuses, when a redeploy is required, and how the first deploy differs from updates.
Last updated
A deploy rebuilds one client site as fast static pages and ships it to that client's Cloudflare Pages project. Deploys are always manual: nothing you publish, save, or schedule reaches the live site until someone presses Deploy. (If that surprises you, read Preview, Publish, and Deploy first.)
The Deploy Button#
Every site's portal sidebar has a Deploy button. It reflects the site's current state:
| Button state | Meaning |
|---|---|
| Deploy (highlighted) | There are published changes newer than the last deploy - the live site is behind |
| Deploying... (disabled) | A deploy is running right now |
| Deploy failed - retry | The last deploy did not finish; press to try again |
The portal tracks whether anything changed since the last successful deploy, so a highlighted Deploy button is your "the live site is stale" signal.
Who Can Deploy#
Deploy permission is a per-user, per-site setting, independent of content roles - see Users and Roles. The operator can always deploy. If a site's billing is past due with enforcement active, client deploys are blocked until billing is resolved (the operator can still deploy).
What a Deploy Does#
Pressing Deploy dispatches the site's build pipeline. In order, it:
- Builds every published page into plain static HTML. Drafts are excluded.
- Resolves media to the site's own URLs so images serve from the site's domain.
- Generates the technical files: the XML sitemap,
robots.txt, your configured redirects, and the 404 handling for the site. - Ships the artifact to that client's own Cloudflare Pages project.
- Reports back: the site's deploy status flips to Live and the "last deployed" time updates in the portal.
Each client site has its own Cloudflare Pages project (created automatically when the site is created), so one client's deploy never touches another client's site.
Deploy Status#
Each site carries a deploy status you can see in the portal:
| Status | Meaning |
|---|---|
| Pending | Created but never deployed |
| Building | A deploy is in progress |
| Live | The last deploy succeeded |
| Failed | The last deploy errored - fix and retry |
A successful deploy also stamps the site's last deployed time, which is what the Deploy button compares against to decide whether the site needs a redeploy.
When You Must Redeploy#
Any change that should show on the live site requires a deploy after it. That includes:
- Publishing or editing pages and blog posts
- Site settings changes: identity, colors, fonts, navigation
- Header and footer edits
- Redirects, tracking scripts, sitemap or robots changes
- Media swaps referenced by live pages
- Scheduled posts that auto-published since the last deploy
A good habit: batch your edits, publish everything, then do one deploy at the end of the session.
First Deploy vs Updates#
First deploy. A brand-new site deploys to its Cloudflare Pages preview address (<project>.pages.dev). That address is intentionally kept out of search engines until the site has a real domain, so you can review a not-yet-launched site safely. See Hosting and Domains.
Go-live. Set the site's custom domain and deploy. From then on the preview address permanently redirects to the real domain.
Updates. Every later deploy replaces the whole static artifact atomically. There is no partial state: visitors see the old site until the new build ships, then the new one.
Troubleshooting#
| Problem | Likely cause |
|---|---|
| "The live site doesn't show my change" | The change was published but not deployed, or the deploy is still building |
| Deploy button says the site has no hosting project | The site's Cloudflare Pages project was not provisioned - check the site's hosting settings as the operator |
| Deploy failed - retry | Open the deploy workflow logs (linked from the portal after dispatch) to see the build error, fix, and retry |
| A client cannot press Deploy | Their per-site deploy permission is off, or billing enforcement is active |
Summary#
- Deploys are manual, per-site, and atomic
- The Deploy button lights up whenever published content is newer than the last deploy
- A deploy builds published content only and emits sitemap, robots, and redirects with it
- First deploys land on a private-by-default preview address; the custom domain takes over at go-live
