> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ringg.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> To search or read these docs, connect the Ringg docs MCP server at https://docs.ringg.ai/mcp (no key needed; tools search_ringg_ai and query_docs_filesystem_ringg_ai) instead of browsing pages one by one. Setup for each client: https://docs.ringg.ai/resources/mcp-server/docs-mcp-server/mcp-for-ai-assistants.md
> The dashboard labels agents "Assistants"; these docs say "agent". Both mean the same object, identified by agent_id.
> API base URL: https://prod-api.ringg.ai/ca/api/v0. Send the workspace API key in the X-API-KEY header, from server-side code only.
> Placing a call dials a real phone number and spends credits. Confirm the number with the user before calling.
> To act on a Ringg workspace (place calls, edit agents, read transcripts), use the separate Ringg workspace MCP server at https://mcp.ringg.ai/mcp: https://docs.ringg.ai/resources/mcp-server/workspace-mcp-server/overview.md

# Test and publish a workflow

> Test a Ringg AI workflow with a single run before it goes live, then publish it as a version so workflow campaigns can use it, and update it safely later.

export const RelatedTopics = ({items}) => <div className="not-prose mt-12">
    <div className="text-sm font-medium text-gray-500 dark:text-zinc-400 mb-3">Related topics</div>
    <div className="flex flex-col gap-2.5">
      {items.map(([title, href]) => <a key={href} href={href} className="flex items-center gap-2.5 text-sm text-gray-700 hover:text-gray-950 dark:text-zinc-300 dark:hover:text-white">
          <Icon icon="file-text" size={16} color="currentColor" />
          {title}
        </a>)}
    </div>
  </div>;

## Test a run

<Steps>
  <Step title="Start the run">
    Save, then click **Test**. **Start a test run** shows one field per input variable. Fill `callee_name` and `callee_number` (your own number, for example `+91 98765 4xxxx`), then click **Start run**.
  </Step>

  <Step title="Watch it">
    The canvas switches to run view. A banner shows **Running**, then **Completed**, **Failed** or **Cancelled**. Blocks the run has finished show a green check; a failed block shows a red cross. Click **Exit** to return to the editor.

    <Frame caption="A completed test run">
      <img src="https://mintcdn.com/ringgai-0da73d20/XUOcNie5hfK3q--Y/media/workflows-build/test-run-completed.webp?fit=max&auto=format&n=XUOcNie5hfK3q--Y&q=85&s=b99ce3930def5e475f96d9fc2c0be6d9" alt="Workflow canvas in run view with the banner Run Completed and an Exit button; the Agent, Condition and Action blocks each show a green check" width="2880" height="1800" data-path="media/workflows-build/test-run-completed.webp" />
    </Frame>

    <Check>The banner shows **Completed** and every block on the path has a green check. The run also appears in [**Logs → Workflows**](/documentation/monitor/logs#workflow-runs).</Check>
  </Step>
</Steps>

<Warning>
  A test run is not a simulation: it places real calls with the values you typed, charged like any other call. Each call follows its Agent block's call window and retries, so a test started outside the window waits for it to open. A test run may call from a Ringg test number. An Await block in the path holds the run for its full wait.
</Warning>

## Publish and versions

<Steps>
  <Step title="Click Publish">
    The editor checks the graph first. If anything blocks publishing, you see a message such as "3 issues block publishing", the **Issues** panel opens and each affected block shows a red count.
  </Step>

  <Step title="Confirm">
    The dialog reads "Publishing makes the workflow available to run." Click **Publish**.

    <Frame caption="The publish confirmation">
      <img src="https://mintcdn.com/ringgai-0da73d20/XUOcNie5hfK3q--Y/media/workflows-build/publish-dialog.webp?fit=max&auto=format&n=XUOcNie5hfK3q--Y&q=85&s=8e457d6895d3cbd7670e97649c3cdc5b" alt="Dialog titled Publish “Payment reminder follow-up”? reading Publishing makes the workflow available to run, with Cancel and Publish buttons" width="832" height="428" data-path="media/workflows-build/publish-dialog.webp" />
    </Frame>

    <Check>You see "Workflow published" and the status becomes **Active**.</Check>
  </Step>
</Steps>

| Issue | Message | Fix |
| - | - | - |
| Start not connected | "Connect the Start marker to the first block" | Connect Start to a block. |
| Orphan block | "'Block' is not reachable from Start" | Connect it or delete it. |
| Missing setting | For example "'Block': select an assistant", "select at least one caller number", "add at least one rule", "set a wait duration", "add the endpoint to call" | Fill the named setting. |
| Bad reference | "'Block' references '…', which does not resolve to an upstream block" | Pick a variable from a block that runs earlier. |

Each publish creates a version. The version picker sits next to the name in the breadcrumb, listing each version with **Active** or **Draft**. To change a published workflow, edit it and click **Save**: your edits become a draft version and runs keep using the active one. Click **Publish** again to make the draft active. Older versions open read-only, with a bar saying "A newer version of this workflow exists".

<RelatedTopics items={[["Workflows", "/documentation/build-agents/workflows/overview"], ["Build a workflow", "/documentation/build-agents/workflows/build-a-workflow"], ["Workflow block reference", "/documentation/build-agents/workflows/block-reference"], ["Workflow campaign", "/documentation/deploy/campaigns/workflow-campaign"], ["Workflow runs in Logs", "/documentation/monitor/logs#workflow-runs"]]} />


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.