Updated March 2026
Sutrena automations use a declarative DSL (domain-specific language) instead of code. You define a trigger and a sequence of steps as JSON. Sutrena executes the pipeline server-side every time the trigger fires.
Why a DSL instead of arbitrary code? Three reasons. First, it is safe -- no code injection, no runaway processes, no dependency management. Second, it is inspectable -- you can read the automation definition and understand exactly what it does. Third, it is agent-friendly -- an AI agent can construct a JSON pipeline without generating and debugging JavaScript.
The DSL has 14 step types covering the most common automation patterns: sending emails, creating page entries, updating submissions, querying analytics, calling external APIs (fetch), and responding to HTTP requests. Steps execute sequentially. Condition steps support branching with then/else arrays.
Template interpolation connects everything: {{trigger.fieldName}} accesses trigger data, {{steps.varName}} accesses results from previous steps, and {{env.KEY}} accesses encrypted environment variables.
What the DSL cannot do: arbitrary JavaScript, package imports, file system access, long-running processes, or database queries. If you need those, use a serverless function and call it from a Sutrena automation via the fetch step.