Workflow automation
built for Shopify.
Visually automate your store's operations — no code, no dev ops, no headaches. Connect triggers, steps, and AI in a canvas made for merchants.
Vibe coding gets you halfway there.
AI can write the automation logic in seconds. But shipping it — hosting, scaling, monitoring, retries, logs — is still a real infrastructure problem most merchants can't (and shouldn't have to) solve themselves.
- ✓No infrastructure to manage. Hosting, retries, and run logs are handled for you.
- ✓Real code when you need it. A full Lua step and expressions cover anything the canvas can't.
- ✓AI built in. Drop a Gemini step into any workflow — no separate integration to wire up.
- ✓Shopify-native. Triggers and steps speak the Admin API directly, with ready-made event presets.
A real scripting language, one step away.
Most automation tools stop at simple expressions. Flixir's Lua step runs actual Lua — loops, conditionals, string and table manipulation — with your workflow's data passed straight in as variables, and its return value passed straight back out as JSON.
- A full language, not a sandboxed subset. Loops, conditionals, and functions — anything an expression can't express.
- Variables in, structured data out. Arrays and objects convert to Lua tables automatically, and whatever you
returncomes back as JSON for the next step. - Failures stay contained. Errors are caught and surfaced in the run log — a bad script fails its step, not the whole workflow.
- Reach for it only when you need to. Everything else in the workflow stays visual.
-- sum line items, apply a bulk discount local total = 0 for i, item in ipairs(order_items) do total = total + item.price * item.quantity end if total > 200 then total = total * 0.9 end return { total = total, currency = "USD" }
Trigger, decide, act — in one canvas.
Every workflow starts with a trigger and flows through steps that read, decide, and act on your data. Here's a small one: notify your team when a high-value product changes, with an AI-written summary attached.
The condition's branch reads gt(trigger.payload.price, 50) — see the
Expressions guide for the full syntax.
Everything you need, out of the box.
4 triggers and 7 steps ship with every workflow — no extra integrations to install.
Triggers
Manual
Run a workflow on demand from the editor.
TriggerWebhook
Start a run from any HTTP request.
TriggerScheduled
Run on a recurring cron schedule.
TriggerShopify
React to product and inventory events.
Steps
See full reference →Debug
Inspect state and variables in the run log.
StepHTTP Request
Call any external API.
StepLua script
Custom logic the canvas can't express.
StepCondition
Branch true/false on an expression.
StepLoop
Repeat a branch over a list.
StepShopify GraphQL
Read or write directly via the Admin API.
StepGemini
Generate text with Google Gemini, inline.
See all triggers & steps →A real expression language, when you need it.
- Reference
trigger,steps.*,tenant,env, andloopdata directly in any expression-aware field. - Built-in functions for
date.*,str.*,math.*, and boolean logic likeeq,gt,and. jsonpath(...)for reaching into nested objects and arrays.- Secrets and workspace variables via
secrets.KEYandvars.KEY— never logged when they shouldn't be. - A Monaco-based editor with syntax highlighting and autocomplete for every function, step, and field.
and( eq(trigger.title, "Product Updated"), gt( jsonpath(steps.http_call_a, "$.response.status"), 199 ) )