JobDefinition interface. They live in src/server/workflows/ and are exported from src/server/workflows/index.ts. The app framework’s build pipeline validates workflow definitions at build time.
JobDefinition
Example workflow
This workflow syncs Shopify orders enriched with CRM customer data into the app’s database. It fetches orders and customers from separate services, joins them with a SQL transformation, and upserts the enriched results.Exporting workflows
Export all workflow definitions fromsrc/server/workflows/index.ts:
Dependency graph
Steps execute based on their data dependencies. A step that references a table produced by another step waits for that step to complete first. Independent steps can run in parallel. In the example above:- The Shopify step produces
raw_ordersand the CRM step producescustomers— these have no shared dependencies, so they run in parallel - The SQL step reads both
raw_ordersandcustomers— so it waits for both to complete - The persist step reads
enriched_orders— so it depends on the SQL step
Build-time and submit-time validation
Workflows are validated at two stages:- Build time — the app framework’s build pipeline validates workflow structure, table references, SQL syntax, service schemas, database schemas, and variable references
- Submit time — validation runs again with resolved parameter values. Jobs with a matching active idempotency key are rejected.

