Workato Recipe Capabilities: Task-Based Pricing, Trigger Limits & Recipe Architecture

Type: ERP Integration System: Workato (2025-2026 platform release) Confidence: 0.88 Sources: 8 Verified: 2026-03-02 Freshness: evolving

TL;DR

System Profile

Workato is a cloud-native integration and automation platform (iPaaS) that enables teams to build workflows called "recipes" connecting SaaS apps, databases, APIs, and on-premise systems. Unlike code-first platforms like MuleSoft, Workato emphasizes a low-code/no-code approach. The platform has four editions: Standard, Business, Enterprise, and Workato One (top tier with agentic AI capabilities).

This card covers core recipe architecture, task-based pricing, platform-wide limits (including the critical 1,000-event trigger limit), and API Platform capabilities. It does NOT cover specific connector behavior for individual ERP systems.

PropertyValue
VendorWorkato (operates as SAP subsidiary since 2024)
SystemWorkato iPaaS Platform (2025-2026 release)
API SurfaceREST, Webhooks, SDK Connectors, API Platform (Gateway)
Editions CoveredStandard, Business, Enterprise, Workato One
DeploymentCloud (SaaS) with on-premise agent (OPA) option
API DocsWorkato Documentation
StatusGA

API Surfaces & Capabilities

Workato exposes multiple integration surfaces depending on the use case. The recipe engine is the core, but the API Platform, webhook gateway, and connector SDK each serve different patterns.

API SurfaceProtocolBest ForMax ThroughputRate LimitReal-time?Bulk?
Recipe EngineInternal orchestrationAll integration patterns30 concurrent jobs/workspace5,000 recipes/workspaceYesYes (batch triggers)
Webhook GatewayHTTPS/JSONReal-time inbound events20 events/sec steady, 9K burst72,000 events/hourYesNo
API PlatformREST (HTTPS/JSON)Exposing recipes as API endpointsWorkspace concurrency limitConfigurable per access policyYes (30s sync)No
Connector SDKCustom HTTPBuilding custom connectors3-min HTTP timeout/request1,000 events/pollDependsDepends
On-Prem Agent (OPA)Tunneled HTTPSSecure on-prem access500s request timeout20 groups, 10 agents/groupYesLimited
Event StreamsInternal pub/subCross-recipe event routing512 KB/message20 topics/workspaceYesNo

Rate Limits & Quotas

Per-Request Limits

Limit TypeValueApplies ToNotes
Max trigger event payload50 MBAll triggersExceeding silently truncates
Max callable recipe payload1 MB (compressed)Callable/API recipesUse file storage for larger payloads
Max events per single poll1,000SDK connector triggersRecipe STOPS if exceeded — implement pagination
API Platform sync timeout30 secondsAPI endpoint recipesUse async pattern for longer operations
API Platform async timeout240 secondsAPI endpoint recipesJob must complete within this window
API Platform max payload5 MBAPI endpointsInbound request body limit
CSV parse max rows50,000CSV parser actionUse batch/streaming for larger files
XML parse limit100 MBXML parser actionSplit larger documents
JSON parse limit700 MBJSON parser actionLarge but can cause timeouts

Rolling / Daily Limits

Limit TypeValueWindowEdition Differences
Recipes per workspace5,000PermanentSame across editions
Recipe concurrency30Per workspace, concurrentExpandable via Customer Success
Webhook steady rate20 events/sec (72K/hour)Per environmentSame across editions
Webhook burst allowance9,000 eventsBeyond steady rateOne-time burst buffer
AI by Workato60 req/min (direct)Per workspaceEmbedded: 10 req/min; Sandbox: 5 req/min
PDF operations1,000/dayPer workspaceLarge file ops: 10/hour
Developer API rate60 req/min (standard)Per userHigh-volume GET: 1K-2K req/min

Execution Limits

Limit TypeValueNotes
Standard job timeout90 minutesEntire recipe execution
HTTP action timeout (wait=true)1 hourBlocks until response
Polling trigger timeout5 minutesPer poll cycle
JavaScript execution30 seconds, 256 MB1 MB max code size
Python execution90 seconds, 256 MB1 MB max code size
Database action timeout500 secondsDeferred actions: 2 hours
Consecutive empty polls600 (decreasing to 50)Before 5-minute pause
Max recipe steps1,000Includes all actions, conditionals, loops

Authentication

FlowUse WhenToken LifetimeRefresh?Notes
OAuth 2.0 (per-connector)Connecting to SaaS appsVaries by appYes (automatic)Most common; Workato handles refresh
API TokenExposing recipes via API PlatformUntil revokedN/APassed in api-token header
OAuth 2.0 (API Platform)External clients calling endpointsConfigurableYesToken introspection (2025+)
JWT Token (API Platform)Server-to-server API callsConfigurableNew JWT per requestJWKS validation (max 64 KB)
Mutual TLS (mTLS)High-security API accessCertificate-basedN/ATwo-way authentication (2025+)
On-Prem Agent (OPA)Behind-firewall systemsSession-basedAutomaticOutbound-only, no inbound firewall rules

Authentication Gotchas

Constraints

Integration Pattern Decision Tree

START -- User needs to build an integration on Workato
|-- What's the integration pattern?
|   |-- Real-time (individual records, <1s)
|   |   |-- Source supports webhooks?
|   |   |   |-- YES --> Webhook trigger (20 events/sec, 9K burst)
|   |   |   +-- NO --> Polling trigger (5-min minimum interval)
|   |   +-- Need to expose an API?
|   |       |-- YES --> API Platform recipe endpoint (30s sync)
|   |       +-- NO --> Standard recipe with real-time trigger
|   |-- Batch/Bulk (scheduled, high volume)
|   |   |-- < 1,000 records --> Standard batch trigger
|   |   |-- < 50,000 records --> Batch trigger with CSV streaming
|   |   +-- > 50,000 records --> Bulk trigger (CSV streaming)
|   |-- Event-driven (cross-recipe, pub/sub)
|   |   |-- Same workspace --> Callable recipes (1 MB, 10K queue)
|   |   +-- Cross-workspace --> Event Streams (512 KB, 20 topics)
|   +-- File-based --> File connector + parse action
|-- Data volume?
|   |-- < 1K/day --> Standard pricing
|   |-- 1K-100K/day --> Watch task consumption
|   +-- > 100K/day --> High-Volume Recipe (HVR)
+-- Error tolerance?
    |-- Zero-loss --> Error handling + retry + dead letter recipe
    +-- Best-effort --> Standard RecipeOps monitoring

Quick Reference

Recipe Architecture Components

ComponentDefinitionTask ImpactLimit
RecipeComplete workflow: 1 trigger + N actionsContainer (no direct cost)5,000/workspace
TriggerEvent that starts executionNot counted1 per recipe
ActionStep that does work (CRUD, transform)1 business action per eligible step1,000 steps/recipe
Conditional (IF)Branch logicNOT countedPart of 1,000 limit
Repeat loopIteration over a listActions inside x iterationsPart of 1,000 limit
Callable recipeSub-recipe invoked by anotherNot counted (utility)10,000 queue depth
Error handlerTry/catch blockNOT countedPart of 1,000 limit
VariablesSet/get workspace variablesNOT countedPart of 1,000 limit

Task-Based Pricing: What Counts vs. What Doesn't

Counts as Business ActionDoes NOT Count
Third-party connector actions (Salesforce, Workday, Slack, etc.)Triggers (any type)
Community connector actionsConditional logic (IF/ELSE)
AI by Workato actionsCallable Recipe invocations
HTTP connector actionsVariables (set/get)
JavaScript/Python/Ruby snippetsScheduler
FTP/SFTP actionsRecipeOps actions
SMS / RPA actionsLogger
CSV/XML/JSON parser actionsWorkato Data Tables actions
API Platform by Workato

Pricing Tiers Overview

EditionCapabilitiesEstimated Annual CostKey Differentiator
StandardCore integration, workspace management~$15K-$25KEntry-level enterprise iPaaS
Business+ Advanced orchestration, enhanced connectivity~$25K-$50KMost common for mid-market
Enterprise+ Advanced security, governance, 90-day retention~$50K-$100K+Full enterprise feature set
Workato One+ Agent Studio, AI agents, MCP GatewayCustomAgentic AI capabilities (2025+)

Workato does not publish pricing publicly. Costs are custom-quoted. Task packages start at 1M business actions minimum. High-Volume Recipes (HVRs) available for flat-rate pricing. Typical enterprise discounts: 53-65% off list.

Step-by-Step Integration Guide

1. Create a connection to your target application

Connections authorize recipes to interact with external apps. Each connection is workspace-scoped and reusable. [src3]

Workato UI: Settings > Connections > Create connection
1. Select application (e.g., Salesforce, NetSuite)
2. Choose authentication method (OAuth 2.0 recommended)
3. Authorize access via the app's login flow
4. Test connection — verify green "Connected" status

Verify: Connection shows "Connected" in Connections panel.

2. Build a recipe with trigger and actions

Recipes follow a trigger-action pattern. One trigger starts the recipe; one or more actions execute in sequence. [src3]

Workato UI: Projects > New Recipe
1. Select trigger type (Polling, Real-time, Scheduled)
2. Add actions and map datapills from trigger output
3. Add conditional logic (IF blocks) for branching
4. Add error handling (Try/Catch) for production resilience
5. Test recipe with sample data before starting

Verify: Test recipe — job completes with expected output in Job Details.

3. Handle high-volume data with batch/bulk triggers

For volumes exceeding 1,000 records, use batch or bulk triggers to avoid hitting the 1,000-event poll limit. [src4, src6]

Batch trigger: configurable batch size (100-1,000 typical)
  - Each batch = 1 job, not 1 job per record
  - Task consumption = actions inside loop x batch size

Bulk trigger: CSV streaming, no per-record access
  - No upper limit on records per job
  - Best for data migration and daily syncs

Verify: Check Job Details for expected record count. Monitor Usage dashboard.

4. Implement error handling and retry logic

Production recipes must handle failures gracefully. [src1, src3]

1. Wrap critical actions in Handle errors (Try/Catch) block
2. In Catch branch: log error (Logger, free), send alert (1 task)
3. For retries: create separate "retry recipe" with exponential backoff
4. For dead letter: write failed records to Data Table (free)
5. Monitor via RecipeOps triggers for systematic failure detection

Verify: Force error in test — verify Catch branch executes and alert sends.

Code Examples

Python: Call a Workato API Platform Endpoint

# Input:  Workato API Platform endpoint URL + API token
# Output: API response from the recipe endpoint

import requests  # requests>=2.31.0

WORKATO_API_URL = "https://apim.workato.com/your-prefix/your-endpoint"
API_TOKEN = "your-api-token"

headers = {
    "api-token": API_TOKEN,
    "Content-Type": "application/json"
}

response = requests.post(
    WORKATO_API_URL,
    headers=headers,
    json={"customer_id": "CUST-001", "action": "sync_order"},
    timeout=35  # Client timeout > Workato's 30s sync limit
)

if response.status_code == 200:
    print(f"Success: {response.json()}")
elif response.status_code == 429:
    retry_after = int(response.headers.get("Retry-After", 60))
    print(f"Rate limited. Retry after {retry_after}s")

JavaScript/Node.js: Trigger a Recipe via Webhook

// Input:  Workato webhook URL from a webhook trigger recipe
// Output: Acknowledgment that event was received

const WEBHOOK_URL = "https://www.workato.com/webhooks/rest/your-webhook-id";

async function sendEvent(payload) {
  const response = await fetch(WEBHOOK_URL, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(payload),
  });

  if (response.status === 200) {
    console.log("Event accepted by Workato");
  } else if (response.status === 429) {
    console.log("Rate limited - reduce frequency (20 events/sec max)");
  }
}

await sendEvent({
  event_type: "order_created",
  order_id: "ORD-12345",
  timestamp: new Date().toISOString(),
});

cURL: Test API Platform Endpoint

# Sync call — must complete within 30 seconds
curl -X POST "https://apim.workato.com/your-prefix/your-endpoint" \
  -H "api-token: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"customer_id": "CUST-001"}' \
  --max-time 35

# Test webhook trigger
curl -X POST "https://www.workato.com/webhooks/rest/YOUR_WEBHOOK_ID" \
  -H "Content-Type: application/json" \
  -d '{"event": "test", "timestamp": "2026-03-02T10:00:00Z"}'

Data Mapping

Recipe Data Flow Model

SourceTargetTypeTransformGotcha
Trigger output datapillsAction input fieldsDynamicDirect mapping via drag-dropTypes must match — no implicit coercion
Formula functionsAction input fieldsComputedString/date/number transformsFormula errors abort entire job
Lookup TablesAction input fieldsReferenceKey-value lookupMax 100K rows; miss returns null
Data TablesAction/trigger fieldsStoredCRUD operations1M row limit; 100 tables/workspace
Environment propertiesAny fieldConfigVariable substitution per env1,024 char value limit
Callable recipe outputParent recipe actionsCross-recipeReturn values from sub-recipes1 MB compressed payload limit

Data Type Gotchas

Error Handling & Failure Points

Common Error Codes

CodeMeaningCauseResolution
429Rate limit exceededExceeding 20 events/sec webhook rateBackoff; spread events; request increase
408Job timeoutExecution exceeded 90 minutesBreak into callable sub-recipes
Recipe stoppedTrigger limit exceededSDK trigger returned >1,000 eventsImplement pagination with cursor
PAYLOAD_TOO_LARGEPayload exceeded limitTrigger >50 MB or callable >1 MBStream via file storage; chunk payloads
CONNECTION_ERRORAuthentication failureOAuth token expiredRe-authorize; monitor connection health
CONCURRENCY_LIMITAll 30 slots occupiedToo many simultaneous jobsIncrease via CS; stagger schedules

Failure Points in Production

Anti-Patterns

Wrong: Processing every record individually in a loop

// BAD -- Creates massive task consumption, hits concurrency limits
// Trigger: New rows (5,000 rows)
// For each row -> Create record in Salesforce
// Result: 5,000 business actions for 1 job

Correct: Use batch trigger with bulk actions

// GOOD -- Single batch action for all records
// Trigger: New rows (batch of 1,000)
// Action: Bulk create in Salesforce (1 task per batch)
// Result: 5 jobs x 1 task = 5 tasks instead of 5,000

Wrong: Hardcoding environment-specific values

// BAD -- Breaks when promoted from dev to staging to prod
// Action: HTTP POST to "https://api.prod.example.com/orders"
// Connection: "Salesforce Production" (hardcoded)

Correct: Use environment properties and connection aliases

// GOOD -- Same recipe works across all environments
// Action: HTTP POST to ENV["API_BASE_URL"] + "/orders"
// Connection: environment-specific (auto-swapped on promote)

Wrong: Building one massive recipe with 500+ steps

// BAD -- Approaches 1,000 step limit; impossible to debug
// One recipe: 500 actions covering entire order-to-cash

Correct: Decompose into callable sub-recipes

// GOOD -- Focused, testable, reusable
// Main: trigger -> call "Create Invoice" -> call "Update Inventory"
// Each sub-recipe: 20-50 steps, independently testable
// Callable invocations do NOT count as business actions

Common Pitfalls

Diagnostic Commands

# Check recipe job history (Developer API)
curl -X GET "https://www.workato.com/api/recipes/{recipe_id}/jobs" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

# Check workspace usage / task consumption
# UI: Settings > Usage > Business Actions
curl -X GET "https://www.workato.com/api/usage" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

# Test a connection
curl -X POST "https://www.workato.com/api/connections/{id}/test" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

# List active recipes
curl -X GET "https://www.workato.com/api/recipes?active=true" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

# Check API Platform endpoint health
curl -X GET "https://apim.workato.com/your-prefix/health" \
  -H "api-token: YOUR_API_TOKEN"

Version History & Compatibility

ReleaseDateStatusKey ChangesMigration Notes
2026 Q12026-01CurrentEnterprise MCP, Data Pipelines GAMCP Gateway requires Workato One
2025 H22025-07SupportedAgent Studio GA, Custom Domains, mTLSAPI Platform features require Business+
2025-06-092025-06Enforcement1,000-event trigger limit enforcedAll SDK triggers must paginate
2025 H12025-01SupportedWorkato One launch, AI by WorkatoNew pricing tier
20242024SupportedData Tables, Event Streams enhancementsLookup Tables still supported

Workato does not follow numbered API versioning. Breaking changes are announced 3-6 months in advance via Product Hub. The Developer API maintains backward compatibility.

When to Use / When Not to Use

Use WhenDon't Use WhenUse Instead
Business users need low-code integrationsComplex API transforms requiring full codeMuleSoft Anypoint
Mid-market/enterprise, 50-500 integrationsStartup with <10 simple integrationsZapier, Make
Need 1,000+ pre-built SaaS connectorsDeep ERP customization (ABAP, SuiteScript)Native ERP tools
Want AI agent capabilities (Agent Studio, MCP)Pure batch ETL/data pipeline workloadFivetran, Airbyte
Need on-premise connectivity via OPASub-second latency streaming at scaleKafka, Confluent
Exposing internal workflows as managed APIsFull API lifecycle management (design-first)Apigee, Kong

Cross-System Comparison

CapabilityWorkatoMuleSoftCeligoBoomiNotes
ArchitectureRecipe-based (low-code)Flow/API-first (code-heavy)Flow-based (low-code)Process/flow (low-code)
Pricing modelTask-based (business actions)vCore-based (compute)Flow-based (flat)Connection-based
Pre-built connectors1,000+400+ (Exchange)200+ (pre-built flows)200+Workato largest
Max concurrent jobs30 (expandable)Unlimited (vCore)Plan-dependentPlan-dependent
Webhook throughput20 events/secUnlimited (vCore)Plan-dependentPlan-dependent
On-premiseOPA (agent)Runtime (full engine)Agent-basedAtom (agent)
AI/Agent capabilitiesAgent Studio, MCP (2025+)Einstein AI (limited)AI MapperBoomi AIWorkato most advanced
Learning curveLow (business users)High (developers)Low-MediumMedium
Best forBusiness-led, mid-marketEnterprise API strategyE-commerce, NetSuiteBroad integration
Trigger event limit1,000 per pollNo per-poll limitConnector-dependentConnector-dependent

Important Caveats

Related Units