# Draft and live

> How Willo keeps a private draft of your site and backend apart from the live site, and what that means for changes your agent makes.

Last updated: October 16, 2026

Source: https://www.willo.ai/docs/ai-agents/draft-and-live

A Willo business can have two copies of itself: the **live** site that visitors see, and a private **draft** where changes collect until someone publishes them. Whether the draft exists depends on one per-business setting, drafting. Your agent works under the same setting as Willo's chat and the dashboard.

## Drafting on

While drafting is on, changes collect on the draft and nothing reaches visitors until someone publishes.

- **Site code** changes land on the `draft` branch of the business's code repository. The draft preview on the Site page rebuilds on every saved change.
- **Backend** changes land on a separate draft backend: database writes, schema changes, SQL and edge function deploys. Rows written there are scratch data for testing.
- **Reads** default to the draft too: file reads come from the `draft` branch, and backend reads come from the draft backend once it exists.

Every backend result carries a line such as `[Backend: draft]` or `[Backend: live]` naming the copy that answered. Backend reads also take `target: "live"` to read what is published right now, even mid-draft.

### What stays live while drafting

Some things have no draft copy. A change to them takes effect on the live business at once, drafting or not:

- **Member accounts and login email.** Accounts created on the draft backend are throwaway test users.
- **Scheduled backend jobs** and **storage buckets**.
- **Redirects.** Setting or removing one changes the live site straight away.
- **CMS publishing.** `willo_content_write` writes a draft content item, but `willo_content_publish` changes what the live site shows.

Most of these stop for a person's approval, and the card says the change is live. Each tool's [reference page](https://www.willo.ai/docs/reference/mcp-tools) says when.

## Publishing

Publishing ships everything on the draft together: every site change and every backend change, whoever made it. SQL that a person approved on the draft is replayed on the live backend, and the publish card lists it.

There are two ways to publish:

- Someone clicks **Publish** on the Site page.
- The agent calls `willo_publish`, which always raises an approval card. After the person approves, the agent calls it again to start the publish.

A publish takes a few minutes, and `willo_status` shows when it is live. It has no one-click undo. **Discard** on the Site page throws the draft away instead.

## Drafting off

With drafting off there is no draft and no Publish step. Every file change lands on the `main` branch and the live site rebuilds at once, usually within a few minutes. Backend changes apply to the live backend. The agent can tell which mode it is in from `willo_status`, and every write result says where it landed.

Turning drafting on needs a paid plan. Turning it off needs a clean slate: publish or discard the open draft first. Changing the setting is the owner's call, made on the dashboard or in Willo's chat.

> **Warning: When a live deploy fails.**
>
> If the live site's build fails because of a change your agent made, Willo does not start its automatic fix, because a second writer fixing the same files would collide with your agent. `willo_status` shows the build error. The agent fixes the file and writes again, or you ask Willo's chat to fix it.

## Which copy am I looking at?

| You want | Ask the agent to |
| --- | --- |
| Whether a draft is open | call `willo_status` |
| What the draft changes versus live | call `willo_diff` |
| A table as visitors see it now | pass `target: "live"` to `willo_db_query` |
| To see the change in a browser | open the draft preview on the Site page |

Related: [Approvals](https://www.willo.ai/docs/ai-agents/approvals), [Your first change](https://www.willo.ai/docs/ai-agents/your-first-change).
