Workflows

Visual workflows, inside your backend

Automation that runs inside every project. Trigger on a record change, a schedule or an API call, then send email and push, call other services or run a script.

The same task, three ways

Every task works three ways, and all of them change the same project. Here's one: email a customer when their order is paid.

The Anythink dashboard

Build it on a canvas: a trigger, a filter and one step.

The Anythink CLI

Repeatable and reviewable, so a workflow can live in your repo and go into every project.

$ anythink workflows create order-paid-email --trigger Event \--entity orders --event EntityUpdated \--filter '{"field":"status","op":"changed_to","value":"paid"}' --enabled# 31 is the id printed by workflows create$ anythink workflows step-add 31 send_receipt --action SendAnEmail --start --enabled \--params '{"to":"{{ $anythink.trigger.data.customer_email }}","template_type":"order_paid"}'$ anythink data update orders 42 --data '{"status":"paid"}'$ anythink workflows jobs 31
  • ✓Workflow created, triggered when an order's status changes to paid
  • ✓Send an email step added as the start step
  • ✓Updating order 42 starts a job
  • ✓The job appears in the workflow's history

Claude, through MCP

Describe what should happen. It builds the workflow and tells you how to test it.

you › “When an order's status changes to paid, email the customer using the order_paid template.”

  • ✓Workflow created with an Event trigger on orders
  • ✓Filter: status changed to paid
  • ✓Send an email step addressed to the order's customer_email
  • ✓Enabled; check Job History after the next paid order

A workflow engine, not a separate tool to wire up

Triggers, steps and conditional branching, running inside your backend on the same data model you already defined

Every step type you need, built in

Read, create, update, upsert and delete data; call an external API; run inline JavaScript; send a command; branch on a condition; send an email or push notification; run an integration step; or handle a file — all as workflow steps, no separate service to deploy.

In practice

Real commands against a real workflow

create the workflow.sh
anythink workflows create \
  --name "Overdue invoice reminder" \
  --trigger Event \
  --entity invoices \
  --event EntityUpdated \
  --filter '{"field":"status","operator":"changed_to","value":"overdue"}' \
  --enabled

What teams automate

01

Order fulfilment and notifications

Every new paid order triggers fulfilment, updates inventory, notifies the team on Slack through an Integration step, and emails the customer — all in one workflow, reading and writing the same entities your API and dashboard use.

02

Scheduled reports and data hygiene

Run daily summaries, weekly digests and monthly cleanup jobs on a cron schedule. Read data, process it in a Run Script step, then send it wherever it needs to go — no separate scheduler to run and monitor.

03

Status-change pipelines

An Event trigger with a changed_to filter fires only on the transition you care about — a ticket moving to "resolved", a payment moving to "failed" — so a workflow doesn't run on every unrelated field update.

Frequently Asked Questions

What types of workflow triggers are available?

Four: Event (reactive to a record being created, updated or deleted, with optional filters), Timed (cron scheduling), Manual (on demand, with an optional JSON payload) and Api (a custom HTTP route). A workflow can carry more than one trigger at once.

Can workflows have conditional logic?

Yes. Each step has on_success and on_failure routing to a different next step, and a dedicated Condition step evaluates your data to decide which path to take.

Can workflows access secrets securely?

Yes. Workflows reference secrets using {{ $anythink.secrets.KEY_NAME }} syntax. Secrets are encrypted at rest and resolved only at execution time, never exposed in the workflow definition.

Can I trigger workflows from external services?

Yes. An Api trigger exposes a custom HTTP endpoint for a workflow. You can also trigger any workflow manually with an optional JSON payload, from the dashboard, the CLI (anythink workflows trigger) or an MCP client.

Can a workflow filter on exactly which change happened?

Yes. Event trigger filters support a changed_to operator, so a workflow can fire only when a field moves to a specific value — for example, status changed_to "shipped" — rather than on every update to the record.

How does Anythink send bulk email or push without one slow loop?

A Send an Email or Send Push Notification step accepts a list of recipients from an earlier step's output. Each recipient is published to a dedicated queue and sent independently, so a campaign to thousands of people doesn't run as a single synchronous job.

Still have questions?

Get in Touch

More in the same project

Every feature reads from the same data model, so each one you add works with the rest.

Documentation

Guides and reference at docs.anythink.cloud.

Want to learn more?

Submit a request and talk to sales about getting you setup with your perfect account today