FlowRunner
Pricing
Theme
Start Free

How to move from Tray.ai to FlowRunner

Export your Tray.ai workflows as JSON, then let FlowRunner Prompt to Flow rebuild each one as a flow. What the export carries, what to finish by hand, and how to switch over.

2026-11-02 Updated November 3, 2026 8 min

This guide moves your Tray.ai workflows to FlowRunner without rebuilding each one by hand. You export each workflow from Tray as a JSON file, and FlowRunner Prompt to Flow reads one at a time and builds the same workflow as a FlowRunner flow, in your workspace.

What’s left for you is the part no export carries: connecting your accounts, adding keys, and testing each flow against what the Tray workflow did. For how the two platforms compare, see FlowRunner vs Tray.ai.

1. Export your workflows from Tray.ai

Tray gives you two exports.

  • One workflow. Open the workflow in the builder, click the three dots at the top right of the builder header, and choose Export workflow. Tray saves a JSON file.
  • A whole project. Open the Project versions page and export a saved version (Tray recommends this) or the current state. The JSON file holds the project’s workflows, its configuration, solutions, the structure of its data tables and vector tables, API endpoint definitions, and basic agent metadata.

What the exports leave out:

  • Authentications. Tray asks you to choose or create them again on import, so they’re never in the file.
  • Data table rows and stored vectors. The project file has the table structure, not the data.
  • API management policies and roles, and agent links to subprojects.

Tray’s docs put import and export under Enterprise Core and Lifecycle Management and don’t say which plans include them, so check your plan. If you can’t export, describe the workflow in the chat in step 3 and attach a screenshot of each step instead.

Before you switch anything off, copy the input of a few recent runs of each workflow so you have real data to test with in step 5.

2. Connect FlowRunner Prompt to Flow to your AI tool

FlowRunner Prompt to Flow is an MCP server you add to the AI tool you already use. You connect it once and sign in with your FlowRunner account. The server URL is the same for every tool: https://app.flowrunner.ai/mcp.

  • Claude (web and desktop): open Settings > Connectors, click + Add, then Add custom connector. Enter FlowRunner and the server URL, click Add, then Connect, and approve the FlowRunner sign-in. On a Team or Enterprise plan, an Owner adds it once under Organization settings > Connectors.
  • Claude Code: run these two commands in your project folder, and approve the sign-in page that opens:
claude mcp add --transport http flowrunner https://app.flowrunner.ai/mcp
claude mcp login flowrunner
  • ChatGPT (on the web): open ChatGPT Plugins, click Add, then Add custom MCP server. Enter FlowRunner, put the server URL under Connection, choose OAuth, and approve the sign-in. In a chat, type @ and pick FlowRunner.
  • Codex: add the server to ~/.codex/config.toml, then run codex mcp login flowrunner:
[mcp_servers.flowrunner]
url = "https://app.flowrunner.ai/mcp"
  • Cursor: add the server to ~/.cursor/mcp.json, then open Customize > MCPs and follow the sign-in prompt:
{
  "mcpServers": {
    "flowrunner": { "url": "https://app.flowrunner.ai/mcp" }
  }
}

If you don't have a FlowRunner account yet, the Free plan needs no card, and every new account starts with 14 days of Professional. The setup guide in the docs has each tool step by step.

3. Convert one workflow at a time

Start a new chat, paste this request, then attach or paste one workflow’s JSON after it:

Rebuild this Tray.ai workflow as a FlowRunner flow. It’s the JSON from Tray’s Export workflow: it lists the trigger and each step in order, with its connector, operation, and input settings, plus Boolean Condition and Branch steps, Loop Collection loops, Call workflow steps, and any Script or Python script code. Authentications aren’t in the file. Keep the same behavior. Before you build, tell me anything you can’t map one to one, and ask me about anything the file doesn’t say.

If you exported a project, use this one instead:

This is a Tray.ai project version export. It holds several workflows, the project configuration, and the structure of its data tables, but no table rows and no authentications. Build the callable workflows first as their own flows, list the data tables the project uses so I can decide where their data should live, then build the main workflow. Keep the same behavior, and ask me about anything the file doesn’t say.

Then add a line or two about anything the file can’t tell it:

  • who answers each approval step, and whether by email, Slack, WhatsApp, or phone
  • whether a workflow saves a date in Data Storage so a second, scheduled workflow can pick it up later (Tray’s pattern for waits past 10 minutes); ask for one flow that waits instead
  • which steps use Python script, so it can rewrite them in JavaScript or call your code as a service
  • which AI provider and model an agent step used

Answer its questions, and it builds the flow. One workflow per chat keeps the questions specific.

4. Finish what the export can’t carry

Each conversion ends with a short list of what’s left. Expect some of these:

  • Connect your accounts. Each app is connected once in the workspace and shared across your flows.
  • Add keys and secrets. FlowRunner runs AI agents on your own provider key, added once. API keys for an HTTP Request block go in its headers.
  • Set the schedule. Check each scheduled flow’s timing against the Tray workflow’s Scheduled Trigger before you start it.
  • Note the new address. A workflow that started from a Webhook Trigger gets a new External Callback URL. That URL includes your workspace key, so treat it like a password, and give it to the calling app when you switch over.
  • Check the approvals. The AI sets up each approval request in the channel you named. Two things are added in the flow editor: a Form, if a Tray Form Trigger or custom form collected the answer, and an AI agent that calls another flow as its tool. The AI tells you which of these to add.
  • Move table data. Copy the rows of any Tray data table to wherever the AI suggested.
  • Start the flow, if the AI left it stopped.

5. Test, then switch over

Run each flow with the inputs you saved in step 1 and compare the results with what Tray produced. Open the run in the flow’s Instances tab to see what each block received and returned. When the results match, point the calling apps and webhooks at FlowRunner, watch the runs for a few days, and disable the Tray workflow.

How Tray.ai maps to FlowRunner

Tray.aiFlowRunnerWhat changes
WorkflowFlowOne run of a flow is one execution, however many steps it has.
Webhook TriggerExternal CallbackNew URL; it includes your workspace key.
Scheduled TriggerFlow ScheduleOnce, interval, daily, weekly, monthly, or cron.
Connector operationIntegration action2,100+ integrations, all on every plan.
Boolean Condition, BranchCondition, Value RouterThe branches show on the canvas.
Loop Collection, Break loopList Iterator, BreakLooping over a list doesn’t add to what a run costs.
Callable Trigger, Call workflow, Callable responseCall Flow and Return ResultThe called flow can return an answer or run on its own.
Data StorageShared Memory or Set VariablesShared Memory keeps key and value data across runs.
DelayWaitA run waits up to 30 days on Free, Starter, and Growth, and up to a year on Professional and above.
Stored date plus a daily scheduled workflowOne flow with a WaitNo second workflow.
Script (JavaScript)Custom Cloud CodeHas fetch; npm packages go in a custom extension.
Python scriptCustom Cloud Code (rewritten in JavaScript), or your Python service called with an HTTP RequestFlowRunner doesn’t run Python.
HTTP ClientHTTP RequestBuilt-in Retry Policy for status codes and network errors.
Approval step, Form TriggerHuman-in-the-loop flow with an External Callback or a FormOn every plan; the person answers by email, Slack, WhatsApp, phone, or a Form.
AuthenticationApp connectionConnected once, shared across flows.
Merlin agentAI AgentOn every plan, on your own provider key.

Quick wins on day one

  • One run, one execution. Tray counts a task for each operation on your data; FlowRunner counts the whole run once.
  • Waits that stay in one run. A run waits up to 30 days on Free, Starter, and Growth, and up to a year on Professional and above, where Tray’s Delay step stops at 10 minutes.
  • A free plan that stays. Free is $0 for 100 executions a month, with no card, and Starter starts at $5.
  • Agents and approvals on every plan. Every integration, AI agents on your own keys, and human-in-the-loop come with every plan, including Free. On Tray, the Merlin Agent Builder is a paid add-on.

Want a hand with a bigger migration? Contact us.

Frequently asked questions

Does FlowRunner import Tray.ai workflow files directly?

No. FlowRunner has no Tray.ai importer. FlowRunner Prompt to Flow, connected to Claude, ChatGPT, Codex, or Cursor, reads the workflow JSON that Tray exports and builds the same workflow as a FlowRunner flow, one workflow per chat. It tells you what it can't map one to one and asks about anything the file doesn't say.

Do my Tray.ai authentications come across?

No. Tray.ai exports don't carry authentications. You connect each account once in FlowRunner, and every flow in the workspace can use it.

What if the Export workflow option isn't in my Tray.ai account?

Tray's docs put import and export under Enterprise Core and Lifecycle Management and don't say which plans include it, so check your plan. If you can't export, describe the workflow to your AI tool step by step and attach a screenshot of each step. FlowRunner Prompt to Flow builds from that the same way.

My Tray workflow waits by saving a date and checking it on a daily schedule. What happens to that?

It becomes one flow that waits. Tray recommends that pattern because its Delay step stops at 10 minutes. In FlowRunner the run itself waits, up to 30 days on Free, Starter, and Growth, and up to a year on Professional and above, so the storage step and the second scheduled workflow go away.

What happens to Python script steps?

FlowRunner doesn't run Python. A short Python function can be rewritten in JavaScript as a Custom Cloud Code step, and FlowRunner Prompt to Flow can do that rewrite. Longer Python code stays where it runs today, as a service the flow calls with an HTTP Request block.

Editorial policy

Ready to try it?

Start on the Free plan. No card required, and every new account gets 14 days of Professional.