Starko

Automate what happens to tickets,as a graph you can read.

Ticket workflows are visual automations. Pick a trigger, chain conditions, AI decisions, HTTP calls, your own code and ticket actions on a canvas, switch the workflow on, and watch every run step by step.

v2.starko.one/dashboard/ticket-workflows/3a7f…
Ticket Workflows/Escalate blocked checkouts
72%
Escalate blocked checkoutsEditorJSONExecutions Active Run
This workflow is active, edits apply to new runs immediately.
Trigger

On ticket.created

Buyer blocked?AI if

Can the customer not finish paying?

true
false
Update ticket

priority → urgent · assignee

Page checkout leadNotify

Blocked checkout: {{ nodes.trigger…

Comment on ticket

Internal note · Not a payment block…

+−
At a glance

Ticket workflows in short.

Triggers
Manual, Event, Schedule or Webhook. One trigger per workflow.
Who can build
Admins and owners. Members can still answer approvals and questions sent to them.
Run limits
10 runs at once and 1,000 runs a day per workspace.
AI budget
500 AI calls per workspace per UTC day.
Code budget
500 code runs per workspace per UTC day, shared with skill scripts.
Code node
JavaScript or Python. 60 second timeout by default, 120 at most.
Allowed domains
Up to 20 hosts per code node. Everything else is blocked.
Run history
Kept for 90 days, with each step's input and output.
Triggers

Start on a ticket event, a schedule, a webhook or a button.

Every workflow starts with one Trigger node. A manual workflow runs from the Run button. Event, schedule and webhook workflows run on their own once the Active switch is on, and the editor warns that edits to an active workflow apply to new runs immediately.
  • Ticket events: Created, Status changed, Priority changed, Commented and SLA breached. Filter by status, priority, tags, project and assignee.
  • CRM events: clients, companies and tenants created, updated or deleted, and deals created, updated, deleted, moved to a stage, won or lost.
  • Ticket events start only on unassigned tickets by default, and ignore changes made by AI and automations unless Fire on AI/automation activity is on.
  • Schedule repeats every hour, day or week at an hour in UTC.
  • Webhook gives the workflow its own URL. POST JSON to it and the body becomes the trigger's output. Rotate the URL if it leaks.
v2.starko.one/dashboard/ticket-workflows
Ticket Workflows
72%

Ticket Workflows

Visual automations over your tickets: build a graph, run it manually or on ticket events.

Search workflows Secrets New workflow

Escalate blocked checkouts

Success 4m ago · updated 2h ago

event

Weekly churn-risk digest

Success 3d ago · updated 1w ago

schedule

Sync paid orders from the shop

Failed 1h ago · updated 1d ago

webhook

SLA breach: reassign and notify

Success yesterday · updated 5d ago

event

Draft release notes from merged tickets

Never run · updated 3d ago

manual
Nodes

Logic, ticket actions, data and CRM, in one palette.

Drag nodes from the palette onto the canvas, connect them, and configure the selected one in the panel on the right. Any field can insert data from earlier nodes. Branching nodes have one labelled exit per outcome, so the graph reads like the decision it makes.
  • Core: If, Switch, For each, List, Filter, Transform, Delay, Approval, User input, Set fields, Update fields, HTTP request, Run code and Output.
  • Actions: Update ticket, Create ticket, Comment on ticket (an internal note or a public reply), Notify, Start workflow and Start Starko AI, which opens a pull request.
  • Data: KB search, File read, Create document (PDF, slides or Excel) and Memory get and set, which keep values between runs.
  • CRM: read, create, update and search clients, companies, tenants, deals and projects, enrich a company, read a conversation, and bulk upsert.
  • Every node has Error handling: retry on fail with a number of tries and a wait, then stop the run or continue. HTTP requests can route to an error exit.
  • Approval and User input pause the run until a teammate decides. Their requests also wait in the Inbox.
AI steps

Let AI decide a branch, or write the next input.

AI if takes a condition in plain language, such as whether a customer is blocked from paying, and routes to its true or false exit. It sees the output of every earlier node, and its one-sentence reason is available downstream. AI step turns a prompt into text, or into structured fields when you give it an answer shape.
  • Answer shapes are Fields (Text, Number, Yes / no, List of text, List of numbers) or a JSON schema.
  • Tools let the AI look things up first: knowledge base search, web fetch and search, files, project context, memory, and client, company and tenant lookups. At most 8 tool steps.
  • MCP servers installed under AI Settings can be added to an AI step, and their tools join the same 8 step loop.
  • Each call counts against the daily budget of 500. A step that uses both tools and an answer shape counts twice.
Run code

Your own JavaScript or Python, in a sandbox that is thrown away.

Run code executes the body of a run(input) function in a fresh, isolated cloud sandbox, never on Starko's servers, and deletes the sandbox when it finishes. Whatever you return becomes the node's output, next to stdout, the exit code and the duration. A non-zero exit fails the node.
  • The sandbox has no environment variables. Pass data in as Inputs, each a key and a template, and read it as input.key.
  • Secrets go in the same way: api_key = {{ secrets.STRIPE_KEY }}. Values are write-only, substituted at run time and never stored in run history. A missing secret fails the run at once.
  • Allowed domains is the firewall: list every host the code calls, up to 20. Package registries stay reachable, and everything else is blocked.
  • The editor warns when the code contains a URL but no domains are listed.
  • When the daily budget of 500 code runs is used up, the node fails without a retry until midnight UTC.

Count failed charges

Runs your JavaScript or Python in an isolated cloud sandbox.

LanguageJavaScript
Inputs
customer_id={{ nodes.find_client.output.external_id }}
api_key={{ secrets.STRIPE_KEY }}
Add input
Code
const res = await fetch(
  "https://api.stripe.com/v1/charges?customer=" + input.customer_id,
  { headers: { Authorization: "Bearer " + input.api_key } },
);
const { data } = await res.json();
return { failed: data.filter((c) => c.status === "failed").length };
Allowed domainsapi.stripe.com
Timeout (seconds)60Default 60s, maximum 120s.

Error handling

Retry on fail
On errorStop the run
Runs

Test on a real ticket, then follow every run node by node.

Run works on any workflow, active or not. For an event trigger you pick one of the 20 latest real records; for manual and webhook triggers you type the input. The Executions tab lists every run with its status, trigger, start time, duration and error, and re-runs any of them with the same input.
  • Open a run to replay it on the canvas: each node is marked as succeeded, failed, waiting or skipped, and loops show how many times they ran.
  • Click a node to see its input, output and error. Approve or decline a waiting step, or cancel the run, from the same view.
  • Runs over the limits are recorded as Refused with the reason, not dropped silently. Workflows that start each other stop at a depth of five.
  • The editor saves as you type, shows teammates' cursors live, and has a JSON tab for copying or pasting the whole graph.
v2.starko.one/dashboard/ticket-workflows/3a7f…
Ticket Workflows/Escalate blocked checkouts
72%
Escalate blocked checkoutsEditorJSONExecutions Active Run
AllRunningSuccessFailedCancelledRefused
RunStatusTriggerStartedDurationError
9c2e41f0 Runningeventjust now4s
71ab0d93 Successevent4m ago6s
e05f6c22 Successevent38m ago5s
3d9a7b14 Failedmanual1h ago12sCount failed charges: exit code 1
b8124ce7 Refusedevent2h ago
5ff0a3e9 Cancelledmanualyesterday2m
Load older runs
Build by asking

Describe the workflow, and let Starko draw it.

The ⌘L assistant can build a workflow from a description, change an existing graph or run one on a ticket. From Slack or your editor through the MCP server, every change and every run waits for your approval first.
  • A workflow created in ⌘L starts inactive, so you can check the graph before switching it on.
  • Approving a new workflow from Slack or MCP creates it and switches it on, if the graph has no problems.
  • Pair workflows with SLAs to escalate breaches, and with tickets to route and label what comes in.

FAQAbout Ticket workflows.

Connect a channel and a repository. Turn the support queue into a build queue.

Feedback starts flowing in minutes. The first recommendation shows up as soon as a pattern repeats, and the first pull request as soon as you accept one.