Workflow Automation arenaWorkflow Automation
Workflow automation and integration platforms that connect apps and move work between them — visual builders, triggers and schedules, code steps, and durable execution — judged on builder depth, reliability and error handling, connector ecosystems, governance, and how completely AI agents can build and run workflows through APIs and MCP servers.
56 user stories · 336 judged cells · updated 2026-09-15 · Evidence as of 2026-09-15
Leaderboard — every product ranked by evidenceLeaderboard
| 1 | free-tier vs n8n ↗ | 46/100 | 43/100 | 0/100 | 59/100 | 65/100 | ★ 17.9k▲ 4.1k/yrnpm 29k/wk | 23/40 verified | 55/100 integrity | ||
| 2 | subscription-flat vs Windmill ↗ | 56/100 | 26/100 | 3/100 | 53/100 | 48/100 | ★ 204.2k▲ 28.2k/yrnpm 57.1k/wk | 30/42 verified · 1 disputed | 75/100 integrity | ||
| 3 | free-tier vs Windmill ↗ | 53/100 | 32/100 | 3/100 | 19/100 | 55/100 | ★ 11.7k▲ 1.8k/yrnpm 126.2k/wk | 21/38 verified | 45/100 integrity | ||
| 4 | free-tier vs Windmill ↗ | 50/100 | 53/100 | 0/100 | 6/100 | 36/100 | npm 58k/wk | 19/30 verified · 1 disputed | 62/100 integrity | ||
| 5 | free-tier vs Windmill ↗ | 40/100 | 32/100 | 0/100 | 7/100 | 55/100 | 9/30 verified | 43/100 integrity | |||
| 6 | usage-based vs Windmill ↗ | 36/100 | 18/100 | 5/100 | 22/100 | 36/100 | ★ 23k▲ 3.3k/yrnpm 2.7M/wk | 17/30 verified · 1 disputed | 64/100 integrity |
Best by user type — persona-weighted winnersBest by user type
Per persona, the product with the highest persona-weighted coverage over just that persona's stories — not the same ranking as the overall PA Score leaderboard above.
Story matrix — every product × every judged storyStory matrix
Agenticness — how well agents can access and operate the productAgenticness
Agent access
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Agenticness — how well agents can access and operate the productPoint an agent at llms.txt or agent-oriented docs | ai-native | fullT 8/10 | fullT 9/10 | fullT 8/10 | fullT 9/10 | none 0/10 | fullT 9/10 |
| Agenticness — how well agents can access and operate the productRun the product headlessly / in CI for automation | ai-native | fullT 7/10 | partialT 5/10 | partialT 6/10 | fullT 7/10 | partialT 6/10 | fullT 8/10 |
| Agenticness — how well agents can access and operate the productPlug MCP servers into this product so it can use their tools | ai-native | fullT 8/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
| Agenticness — how well agents can access and operate the productConnect an agent via an official MCP server | ai-native | fullT 7/10 | fullT 8/10 | fullT 8/10 | none 0/10 | fullT 8/10 | fullT 8/10 |
| Agenticness — how well agents can access and operate the productUse an official CLI | ai-native | partialT 6/10 | fullT 8/10 | none 0/10 | fullT 7/10 | fullT 8/10 | fullT 8/10 |
| Agenticness — how well agents can access and operate the productDrive the product through a documented public API | ai-native | partialT 6/10 | partialT 6/10 | fullT 8/10 | partialT 6/10 | fullT 9/10 | partialT 5/10 |
| Agenticness — how well agents can access and operate the productIssue scoped/least-privilege API credentials for an agent | ai-native | partialC 4/10 | partialC 5/10 | partialC 5/10 | partialC 4/10 | partialC 5/10 | partialT 6/10 |
| Agenticness — how well agents can access and operate the productBuild against official SDKs | ai-native | partialC 3/10 | partialT 6/10 | none 0/10 | fullC 7/10 | fullT 8/10 | none 0/10 |
| Agenticness — how well agents can access and operate the productSubscribe to events via webhooks | ai-native | fullT 8/10 | fullT 8/10 | partialC 6/10 | none 0/10 | fullC 8/10 | partialC 5/10 |
Agentic features
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Agenticness — how well agents can access and operate the productGet AI-generated insights and suggestions from my data inside the product | ai-native | partialC 6/10 | partialC 4/10 | none 0/10 | none 0/10 | partialC 3/10 | partialC 4/10 |
| Agenticness — how well agents can access and operate the productSet up automations that run autonomously in the background | ai-native | fullX 8/10 | fullX 8/10 | fullC 8/10 | fullX 8/10 | fullX 8/10 | fullX 8/10 |
| Agenticness — how well agents can access and operate the productDelegate tasks to a built-in AI assistant inside the product | ai-native | none 0/10 | partialC 6/10 | partialC 3/10 | none 0/10 | partialC 3/10 | partialC 6/10 |
| Agenticness — how well agents can access and operate the productOperate the product with natural-language commands | ai-native | none 0/10 | fullT 8/10 | partialT 6/10 | none 0/10 | partialC 3/10 | partialT 6/10 |
Api quality
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Agenticness — how well agents can access and operate the productExplore an interactive API reference with runnable examples | ai-native | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
| Agenticness — how well agents can access and operate the productDownload a machine-readable API spec (OpenAPI or equivalent) | ai-native | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
| Agenticness — how well agents can access and operate the productTest against a sandbox environment without touching production data | ai-native | partialC 3/10 | none 0/10 | none 0/10 | partialX 6/10 | partialC 3/10 | none 0/10 |
| Agenticness — how well agents can access and operate the productRely on versioned APIs with a documented deprecation policy | ai-native | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
Ai workflows — AI in the engine loop — agent-driven editors, copilots, codegen-friendly APIs, runtime inferenceAi workflows
Agent integration
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Ai workflows — AI in the engine loop — agent-driven editors, copilots, codegen-friendly APIs, runtime inferenceHave an agent create, update, and activate a workflow programmatically through the public API | ai-native | partialC 3/10 | partialT 4/10 | partialT 5/10 | partialT 5/10 | partialC 5/10 | partialT 5/10 |
| Ai workflows — AI in the engine loop — agent-driven editors, copilots, codegen-friendly APIs, runtime inferenceExpose my workflows or connected app actions as MCP tools that an external agent can call | ai-native | fullT 8/10 | fullT 8/10 | fullT 8/10 | none 0/10 | fullT 8/10 | fullT 8/10 |
Ai authoring
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Ai workflows — AI in the engine loop — agent-driven editors, copilots, codegen-friendly APIs, runtime inferenceGenerate or edit a workflow from a natural-language prompt | ai-native | none 0/10 | partialC 5/10 | partialC 5/10 | none 0/10 | partialC 3/10 | partialC 6/10 |
Ai steps
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Ai workflows — AI in the engine loop — agent-driven editors, copilots, codegen-friendly APIs, runtime inferenceAdd AI agent or LLM steps inside a workflow, with model choice and tool use | ai-native | fullX 8/10 | partialC 5/10 | partialC 5/10 | partialC 6/10 | partialC 5/10 | fullC 8/10 |
Automation depth — how much of the product can run unattendedAutomation depth
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Automation depth — how much of the product can run unattendedPerform bulk operations across many items at once | ai-native | partialX 4/10 | none 0/10 | partialC 5/10 | none 0/10 | partialC 5/10 | partialC 5/10 |
| Automation depth — how much of the product can run unattendedDefine rules that trigger actions automatically on events | ai-native | fullX 8/10 | fullX 8/10 | fullC 7/10 | partialC 5/10 | fullX 8/10 | fullX 8/10 |
| Automation depth — how much of the product can run unattendedSchedule recurring jobs or workflows | ai-native | partialX 5/10 | partialC 4/10 | fullC 7/10 | fullX 8/10 | fullX 7/10 | fullC 9/10 |
| Automation depth — how much of the product can run unattendedVersion, review, and roll back my automations | ai-native | partialX 6/10 | none 0/10 | partialC 5/10 | partialX 6/10 | none 0/10 | partialC 6/10 |
Code extensibility — stories about code extensibility in this arenaCode extensibility
Code steps
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Code extensibility — stories about code extensibility in this arenaDrop into real code (JavaScript or Python) as a step inside a workflow | developer | fullX 8/10 | none 0/10 | none 0/10 | fullX 7/10 | fullX 9/10 | fullX 9/10 |
Connector dev
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Code extensibility — stories about code extensibility in this arenaBuild a custom connector or private integration with a documented developer platform, SDK, or CLI | developer | partialT 6/10 | fullT 9/10 | fullT 7/10 | fullT 8/10 | fullX 9/10 | fullT 8/10 |
Data mapping
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Code extensibility — stories about code extensibility in this arenaMap and transform data between steps with expressions, functions, or formulas | ops | fullX 7/10 | disputedD 4/10 | partialC 6/10 | partialC 3/10 | fullX 8/10 | fullC 8/10 |
Collaboration governance — stories about collaboration governance in this arenaCollaboration governance
Credentials
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Collaboration governance — stories about collaboration governance in this arenaStore connection credentials centrally, share them with my team, and control who can use which credential | ops | partialC 6/10 | partialC 6/10 | none 0/10 | none 0/10 | none 0/10 | partialC 6/10 |
Human in the loop
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Collaboration governance — stories about collaboration governance in this arenaPause a workflow to wait for human approval or input before it continues | ops | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
Versioning
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Collaboration governance — stories about collaboration governance in this arenaVersion workflows through source control or environments and promote changes from dev to production | developer | fullC 7/10 | none 0/10 | none 0/10 | fullC 7/10 | partialT 4/10 | fullX 8/10 |
Connectors ecosystem — stories about connectors ecosystem in this arenaConnectors ecosystem
Community
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Connectors ecosystem — stories about connectors ecosystem in this arenaInstall community-built nodes, components, or integrations contributed outside the vendor | developer | none 0/10 | partialC 5/10 | partialC 4/10 | none 0/10 | partialC 6/10 | none 0/10 |
Deployment embedding — stories about deployment embedding in this arenaDeployment embedding
Embedding
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Deployment embedding — stories about deployment embedding in this arenaEmbed the automation platform white-label inside my own product for my customers | developer | fullC 7/10 | fullC 7/10 | none 0/10 | none 0/10 | partialC 6/10 | none 0/10 |
Local dev
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Deployment embedding — stories about deployment embedding in this arenaRun workflows locally or against a dev instance for development and CI testing | developer | partialX 7/10 | none 0/10 | none 0/10 | fullC 9/10 | partialT 6/10 | partialX 5/10 |
Openness — open source, data portability, and self-hosting storiesOpenness
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Openness — open source, data portability, and self-hosting storiesDo everything through the API that I can do in the UI | ai-native | partialT 2/10 | partialT 5/10 | partialT 6/10 | partialT 3/10 | partialT 7/10 | partialT 6/10 |
| Openness — open source, data portability, and self-hosting storiesExport all of my data in open formats and leave | ai-native | fullX 7/10 | none 0/10 | none 0/10 | none 0/10 | partialX 3/10 | partialT 6/10 |
| Openness — open source, data portability, and self-hosting storiesRead the product's source under an open license | ai-native | disputedD 4/10 | none 0/10 | none 0/10 | partialC 5/10 | partialX 4/10 | fullT 7/10 |
| Openness — open source, data portability, and self-hosting storiesSelf-host the core product | ai-native | fullX 9/10 | none 0/10 | none 0/10 | partialX 7/10 | none 0/10 | fullT 9/10 |
Privacy posture — data-handling and privacy storiesPrivacy posture
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Privacy posture — data-handling and privacy storiesChoose where my data is stored (region/residency) | ai-native | partialC 6/10 | none 0/10 | none 0/10 | partialC 5/10 | none 0/10 | partialX 4/10 |
| Privacy posture — data-handling and privacy storiesPrevent my data from being used to train AI models | ai-native | partialX 4/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
| Privacy posture — data-handling and privacy storiesControl data retention and deletion | ai-native | partialC 4/10 | none 0/10 | none 0/10 | partialC 6/10 | none 0/10 | none 0/10 |
| Privacy posture — data-handling and privacy storiesOpt out of telemetry and usage tracking | ai-native | none 0/10 | none 0/10 | none 0/10 | n/a | none 0/10 | none 0/10 |
Reliability errors — stories about reliability errors in this arenaReliability errors
Durability
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Reliability errors — stories about reliability errors in this arenaThrottle or queue workflow executions to respect downstream rate limits | developer | none 0/10 | none 0/10 | partialC 4/10 | partialC 4/10 | none 0/10 | none 0/10 |
| Reliability errors — stories about reliability errors in this arenaRun long-lived workflows that wait for days and survive worker or platform restarts without losing state | developer | none 0/10 | none 0/10 | none 0/10 | fullX 8/10 | none 0/10 | partialC 5/10 |
Error handling
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Reliability errors — stories about reliability errors in this arenaConfigure automatic retries with backoff for failed steps or activities | developer | partialX 4/10 | none 0/10 | partialC 3/10 | fullX 9/10 | partialC 6/10 | fullC 9/10 |
| Reliability errors — stories about reliability errors in this arenaDefine dedicated error-handling paths or error workflows and get notified when a run fails | ops | partialX 6/10 | partialC 4/10 | partialC 5/10 | disputedD 4/10 | partialC 6/10 | partialX 7/10 |
Observability
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Reliability errors — stories about reliability errors in this arenaInspect past execution logs and re-run a failed execution, resuming from the failing step | ops | partialX 5/10 | none 0/10 | partialC 4/10 | partialX 6/10 | partialC 4/10 | partialC 3/10 |
Triggers scheduling — stories about triggers scheduling in this arenaTriggers scheduling
Schedules
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Triggers scheduling — stories about triggers scheduling in this arenaRun workflows on cron-style schedules with timezone control | ops | none 0/10 | none 0/10 | partialC 3/10 | partialX 6/10 | partialC 4/10 | fullC 8/10 |
Triggers
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Triggers scheduling — stories about triggers scheduling in this arenaTrigger workflows from events in connected apps (new record, message, email, form submission) | ops | fullX 8/10 | fullX 9/10 | fullC 7/10 | none 0/10 | fullX 9/10 | partialC 6/10 |
| Triggers scheduling — stories about triggers scheduling in this arenaExpose a custom webhook URL that receives external HTTP requests and starts a workflow run with the payload | developer | fullX 8/10 | fullX 8/10 | fullC 8/10 | none 0/10 | fullX 8/10 | fullC 8/10 |
Visual builder — stories about visual builder in this arenaVisual builder
Builder
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Visual builder — stories about visual builder in this arenaBranch a workflow with conditions, filters, and parallel paths that merge back together | ops | none 0/10 | partialX 3/10 | none 0/10 | none 0/10 | none 0/10 | fullX 7/10 |
| Visual builder — stories about visual builder in this arenaBuild multi-step workflows in a visual editor without writing code | ops | partialX 7/10 | fullX 9/10 | partialC 4/10 | none 0/10 | partialX 5/10 | partialX 6/10 |
Composition
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Visual builder — stories about visual builder in this arenaCompose reusable sub-workflows or modules that other workflows call | developer | none 0/10 | none 0/10 | partialC 4/10 | none 0/10 | none 0/10 | partialC 6/10 |
Testing
| Story | Persona | ||||||
|---|---|---|---|---|---|---|---|
| Visual builder — stories about visual builder in this arenaTest a workflow with sample or pinned data and inspect each step's input and output before going live | developer | partialX 5/10 | none 0/10 | none 0/10 | partialC 3/10 | partialC 6/10 | none 0/10 |
Adjacent arenas — categories often shopped togetherAdjacent arenas
Shopping this category often means shopping these too.