Skip to main content
Workflows let you define the structure of an agent’s conversation as a visual directed graph — nodes represent conversation states, and edges represent transitions between them. Workflows are built in Sniko using Vue Flow and saved as workflow templates that can be attached to any agent.
Workflow templates store a workflow_json payload (nodes + edges) that is transmitted to ElevenLabs as the agent’s workflow field when the agent is created or updated.

Workflow templates

Navigate to Workflows in the sidebar to see all templates available to you. The list includes:
  • Your templates — workflows you created (private by default).
  • Public templates — templates marked as public, visible to all users on the platform.
  • System templates — read-only templates provided by the platform. You cannot edit system templates directly; duplicate them first to make your own editable copy.

Creating a workflow template

1

Click New Workflow

Navigate to Workflows → New Workflow. You are taken to the visual workflow builder.
2

Build the conversation graph

The builder canvas uses a node-and-edge paradigm:
  • Nodes — each node represents a distinct state in the conversation (e.g. greeting, qualification, objection handling, closing).
  • Edges — directed connections between nodes that define how the conversation transitions from one state to the next.
Add nodes by clicking the Add Node button or by dragging from the node panel. Connect nodes by dragging from one node’s output handle to another node’s input handle.
3

Name and describe the workflow

Give the template a clear name (required, max 255 characters) and an optional description to help identify its purpose later.
4

Save the template

Click Save. Sniko validates that the payload contains at minimum a nodes array and an edges array, then stores it in the workflow_templates database table.
{
  "nodes": [
    { "id": "node-1", "type": "conversationNode", "position": { "x": 100, "y": 100 }, "data": { "label": "Greeting" } },
    { "id": "node-2", "type": "conversationNode", "position": { "x": 400, "y": 100 }, "data": { "label": "Qualify" } }
  ],
  "edges": [
    { "id": "edge-1-2", "source": "node-1", "target": "node-2" }
  ]
}

Editing a workflow template

From the Workflows list, click a template’s Edit button to open it in the builder. Make changes to nodes and edges, then save.
System templates (is_system: true) cannot be edited. The edit button is disabled for these templates. Duplicate the template first to get an editable copy.
If you open the editor from within an agent’s configuration page (via the Workflow tab), saving the template automatically syncs the updated workflow to that agent and redirects you back to the agent page.

Duplicating a workflow template

Duplicating is available for any template you can access (your own or public ones):
  1. Open Workflows and find the template.
  2. Click Duplicate.
  3. Sniko creates a new private template with the same nodes, edges, and description, appending (Copy) to the name.
  4. You are redirected to the new template’s edit page.
Duplication is the intended way to customise a system template without modifying the original.

Assigning a workflow to an agent

You can attach a workflow template to an agent in two ways:

During agent creation

On the Name step of the creation wizard, select a workflow template from the dropdown. Sniko loads the template’s workflow_json and sends it as the workflow field in the ElevenLabs agent creation request.

On an existing agent

Open the agent’s configuration page and go to the Workflow tab. Select a template from the dropdown, or open the inline builder to design a flow from scratch. Save the agent to push the workflow to ElevenLabs.
The active workflow template ID is stored in the agent_system_tools table (workflow_template_id column) alongside the agent record. When the agent’s configuration page loads, Sniko reads the stored template ID, fetches the template’s workflow_json, and passes it to the Vue page as the workflow prop.

Visibility and access control

Template typeVisible toEditable byDeletable by
Private (your own)You onlyYouYou
PublicAll usersOwner onlyOwner only
SystemAll usersNobody (duplicate first)Nobody
Only the owner of a template can update or delete it. Attempting to edit or delete another user’s template results in a 403 error.

Workflow data structure

The workflow_json field is stored as JSON and contains two top-level keys:
interface WorkflowJson {
  nodes: WorkflowNode[]
  edges: WorkflowEdge[]
}

interface WorkflowNode {
  id: string
  type: string          // e.g. "conversationNode"
  position: { x: number; y: number }
  data: Record<string, unknown>  // node-specific configuration
}

interface WorkflowEdge {
  id: string
  source: string        // source node id
  target: string        // target node id
  label?: string        // optional transition label
}
Before sending the workflow to ElevenLabs, Sniko runs a sanitisation pass (sanitizeWorkflowForElevenLabs) to strip any Vue Flow-specific metadata that the ElevenLabs API does not accept.
Start with a simple linear flow (greeting → main topic → closing) and add branching nodes incrementally as you test the agent. Use the simulation tool on the agent’s Configure page to validate each branch.

Build docs developers (and LLMs) love