Build. Publish. Automate.
Everything you need to know about using Discover, whether you're running automations or building them.
What is Discover?
Discover is the App Store for automation. We connect people who need automation with experts who build it.
For Everyone
Browse the marketplace, find an app that solves your problem, click run. No coding, no setup, no learning curve.
For Creators
Build workflows with our JSON-based engine and publish to the marketplace. Share your automation expertise with the world.
For Users
Using Discover is simple. No technical skills required.
Find an App
Browse the marketplace or search for specific automations. Each app shows what it does and what inputs it needs.
Fill in Inputs
Some apps need information from you (like a URL or text). Just fill in the fields and click run.
Get Results
The automation runs in seconds. You get your results instantly, ready to use.
What Kinds of Apps Are Available?
Everything from data processing and web scraping to advanced analysis and automated reports. Browse the marketplace to discover apps for your specific needs.
Browse MarketplaceFor Creators
Turn your automation expertise into shareable products. Build workflows and publish them for others to use.
Share Your Expertise
Build powerful automations once and let anyone use them. Your workflows become apps that others can run instantly.
How to Build Workflows
- 1Use the JSON-based workflow editor to define your automation logic
- 2Test your workflow with the built-in test runner
- 3Deploy your workflow to get an API endpoint
- 4Publish to the marketplace with a name and description
Workflow Reference
Workflows are defined in JSON. Here's the basic structure and how to build them.
Every workflow has an id, name, version, startNode, and a collection of nodes.
{
"workflow": {
"id": "unique-identifier",
"name": "Human Readable Name",
"version": "1.0.0",
"startNode": "first_node_id",
"variables": {
"api_endpoint": "https://api.example.com",
"threshold": 100
},
"nodes": {
"first_node_id": { ... },
"second_node_id": { ... }
}
}
}idUnique identifier for the workflow
startNodeID of the first node to execute
variablesDefault values that can be overridden at runtime
nodesObject containing all workflow nodes
Node Types
25 node types organized into categories. Each node performs a specific action in your workflow.
Variables & Data Access
How to define, access, and pass data between nodes.
Template Syntax
Use double curly braces to reference variables and node results in config values.
| Pattern | Example | Description |
|---|---|---|
{{variable}} | {{user_name}} | Access workflow variable |
{{nodeId_result.field}} | {{fetch_result.data}} | Access node result |
{{array.0.field}} | {{users.0.name}} | Access array element (dot notation) |
{{last_result}} | {{last_result}} | Most recent node result |
Code Node Access
In code nodes, access data differently (no _result suffix).
// Standard nodes
const data = results.nodeId.data;
// HTTP request nodes (double .data for response body)
const responseBody = results.http_node.data.data;
const httpStatus = results.http_node.data.status;
// Workflow variables
const threshold = input.threshold;Common Mistakes
URLs must be complete before variable substitution
Use dot notation for array access, not brackets
HTTP responses need double .data in code nodes
Complete Examples
Real-world workflow examples you can use as templates.
Fetch data from an API with proper error handling and branching.
{
"workflow": {
"id": "api-error-handling",
"name": "API with Error Handling",
"version": "1.0.0",
"startNode": "fetch_data",
"nodes": {
"fetch_data": {
"id": "fetch_data",
"type": "http_request",
"config": {
"url": "https://api.example.com/data",
"method": "GET",
"timeout": 10000
},
"next": "check_response"
},
"check_response": {
"id": "check_response",
"type": "conditional",
"config": {
"condition": "{{fetch_data_result.status}} >= 200 && {{fetch_data_result.status}} < 300",
"then": "process_success",
"else": "handle_error"
}
},
"process_success": {
"id": "process_success",
"type": "log",
"config": {
"message": "API call successful",
"level": "info"
},
"next": "end_success"
},
"handle_error": {
"id": "handle_error",
"type": "log",
"config": {
"message": "API call failed",
"level": "error"
},
"next": "end_error"
},
"end_success": {
"id": "end_success",
"type": "end",
"config": {
"success": true,
"output": { "data": "{{fetch_data_result.data}}" }
}
},
"end_error": {
"id": "end_error",
"type": "end",
"config": {
"success": false,
"output": { "error": "API request failed" }
}
}
}
}
}Ready to get started?
Whether you want to use automation or create it, Discover has you covered.