
# Testing, Drafts and Going Live

Every voice agent exists twice: as a **draft** you edit, and — once you
promote it — as a **live** copy that takes real calls. Editing never affects
callers, and promoting is a deliberate, confirmed step. This article covers
both test tools on the **Test & Deploy** tab and the promotion flow.

## What you'll need

- **`agents:voice:manage`** to promote. `agents:voice:read` lets you open and
  read a live agent but not publish one.
- A **saved** agent. Both test tools require the record to exist; before that
  the tab says *"Save the voice agent first."*
- A microphone for browser tests; a phone number you control for test calls.

## Draft and live

```mermaid
flowchart LR
    A["You edit the form"] --> B["Save Changes<br/>→ DRAFT"]
    B --> C["Talk to your agent<br/>(Version: Draft)"]
    B --> D["Simulate Call"]
    B --> E["Save & Push Live"]
    E --> F["Confirm panel"]
    F --> G["LIVE copy<br/>takes real calls"]
    G --> H["Talk to your agent<br/>(Version: Production)"]
```

What follows from this:

- **Saving is safe.** Nothing you save reaches a caller.
- **A draft never rings.** A draft inbound agent does not receive real calls
  even with a number assigned, and an orchestration dials the live copy.
- **The Agents page tells you which is which.** The **All / Live / Drafts**
  pills on **Agents → Agent Types → Voice Agents** filter by exactly this, and
  a draft shows "—" for volume because it has taken no calls.
- **The view page is the live one.** Its heading reads **View Voice Agent
  (Production)** — if what you see there does not match your edits, you have
  unpromoted changes.

## Talk to your agent (browser test)

The fastest loop. **Test & Deploy → Talk to your agent**:

1. Choose a **Version to test** — **Draft (last saved changes)** or
   **Production**.
2. Click **Start voice test** and allow microphone access.
3. Speak. The transcript builds on screen as you go; the panel shows a live
   timer and highlights when the agent is speaking.
4. **Mute** / **Unmute** while it runs; **End test** to finish. **Start
   another test** runs it again.

What you get back:

- **The live transcript**, both sides.
- **Tool activity (N)** — every tool the agent called, with its arguments and
  what came back. This is where you find out the agent tried to do the right
  thing with the wrong input.
- **Per-stage timings** when the run ends — speech recognition, model, tools,
  speech synthesis. Useful for working out whether a slow call is audio
  settings or the model.
- **A "tags" marker** on any agent turn that contained voice delivery tags.
  Expected in the static greeting; anywhere else it is a fault worth
  reporting.

Two lines are worth reading before you trust a run:

- *"Running the compiled production prompt (N platform components)"* — good;
  this run is representative.
- *"Platform prompt components did not load — this run is NOT representative
  of a real call"* (amber) — the platform rules did not load, so the agent is
  running without them. Re-run before drawing conclusions.

### What a browser test cannot tell you

The panel states its own limits, and they matter:

- **Tools run for real.** Emails, SMS and connected systems fire. Use
  **Agent Mode → Testing Agent** on the **Setup** tab, or your own contact
  record, while you iterate.
- **Telephony-only behaviour is absent** — transfers, voicemail detection and
  caller-ID contact lookup.
- **Saved memories are not part of it.**
- **Timing is not phone timing.** Judge turn-taking on a real call.

## Simulate Call (real telephony test)

**Test & Deploy → Simulate Call** places a real call to a number you enter,
over the full telephony path, using the agent's current configuration.

1. Enter a number under **Phone number to call**.
2. Click **Simulate Call**.
3. Answer it.

Use this to check anything the browser test cannot: transfers and the
briefing, voicemail behaviour, whether the agent recognises you from caller
ID, keypad navigation, and how the timing actually feels.

It costs real minutes and counts against your
[daily call budget](/help/voice-agents/campaign-usage). Call yourself.

## Push the agent live

1. Click **Save & Push Live** in the sticky bar at the bottom of the form.
2. Read the amber confirmation panel. It tells you which of two things is
   about to happen:
   - *"This makes the agent live for the first time."*
   - *"This OVERWRITES the currently-live copy of this agent."*
3. Under **"Once live, this agent can reach real people:"** it lists exactly
   how — the phone number it is bound to, the number it texts from, the
   address it emails from, and which sending tools it carries. Read this list.
   It is the summary of what you are authorising.
4. Click **Push Live**, or **Cancel**.

The confirmation is rendered in the page rather than as a browser dialog, on
purpose: it is visible, it can be screenshotted for an audit, and an automated
dialog handler cannot accept it on your behalf.

If the preview could not be loaded the panel says so — *"Could not load the
promotion preview — the consequences of this promote are unknown."* Do not
promote through that unless you already know what the agent does.

### Promotion warnings and refusals

Some conditions produce an amber warning after the save; others stop the
promotion outright.

The one you will meet most: **an inbound phone number can be live on only one
production voice agent.** Promoting a second inbound agent holding the same
number is refused and names the conflict. Free the number on the other agent
first — see [Phone Numbers and Caller ID](/help/voice-agents/phone-numbers).

## Copy an agent instead of starting over

To build a variant — a Spanish version, a second line with different
forwarding, a safe place to try a rewrite — duplicate rather than edit the
live one:

1. **Agents → Agent Types → Voice Agents**.
2. Click **⋯** on the row → **Duplicate as draft**.
3. The copy is created as a draft named "Copy of …" and its editor opens.

To copy several at once, select rows with their checkboxes and use
**Duplicate N** in the bulk bar.

The copy starts from your editable draft if there is one, otherwise from the
live record. It is always a draft, never promoted, and it carries none of the
original's promotion history. **It keeps the phone and text numbers and tells
you so** in a warning when it opens — change them before promoting, or you
will hit the one-agent-per-inbound-number rule above.

## A release routine that works

1. Edit the draft and **Save Changes**.
2. **Talk to your agent** on **Draft** — check the wording and the tool calls.
3. **Simulate Call** — check the phone behaviour and the feel.
4. **Save & Push Live**, read the panel, promote.
5. Let it take a few real calls, then open **⋯ → Performance & insights** and
   the agent's **Calls** page and read what actually happened.

Step 5 is the one people skip, and it is the one that catches what testing
cannot: real callers interrupt, mumble, ask for things you did not anticipate,
and hang up at the moment that tells you something.

## Troubleshooting

- **"Save the voice agent first."** The tab needs a saved record. Click
  **Create Voice Agent**.
- **The browser test will not start.** Microphone access was blocked. Allow it
  and use **Try again**.
- **The amber "NOT representative" line.** Platform prompt components did not
  load for that run. End it and start another.
- **My change is not on live calls.** You saved the draft. Use **Save & Push
  to Prod**.
- **Promotion was refused.** Read the message — the usual cause is another
  production inbound agent holding the same phone number.
- **The copy I duplicated started answering the line.** It kept the original's
  numbers and somebody promoted it. Change the numbers on a duplicate before
  promoting.
- **The view page shows old settings.** That page shows production. Your edits
  are in the draft.
- **A test sent a real email.** Tools run for real. Use **Agent Mode →
  Testing Agent** while iterating.

## Next steps

- [Calls, Transcripts and Recordings](/help/voice-agents/call-detail)
- [Placing Outbound Calls](/help/voice-agents/campaign-usage)
- [Turn-Taking, Interruptions and Dead Air](/help/voice-agents/turn-taking-and-timing)
- [Tools, Knowledge and Memory](/help/voice-agents/tools-and-knowledge)
