In the world of software development, we've embraced "Infrastructure as Code" (IaC) to manage servers and "Configuration as Code" to tame complex setups. We use version control and declarative files to make our systems transparent, repeatable, and robust. But what about the business logic that runs on top of it all?
Too often, critical business processes—sending invoices, onboarding new users, syncing data between systems—are trapped. They live as monolithic scripts, tangled "glue code" between services, or opaque steps in a UI-driven workflow builder. They're brittle, hard to test, and nearly impossible to reuse.
It's time for the next evolution: Business as Code. And the fundamental building block of this revolution is the Action.
Think about the last time you had to automate a multi-step task. Did the process look something like this?
This approach is fraught with problems. The script is a black box, difficult to debug, and its logic can't be reused for any other process. If one part fails, the entire job might fail silently. This isn't scalable, and it certainly isn't resilient.
At Actions.do, we believe in a better way. We treat business logic with the same respect we give our application code. The core principle is breaking down complex processes into their smallest, indivisible units of work. We call these Actions.
So, what is an Action?
An Action is a self-contained, reusable piece of code that performs a single, specific task. It can be anything from calling an external API, transforming data, sending an email, or querying a database.
Actions are designed from the ground up to be the building blocks for all your automated workflows. They are:
Let's stop talking theory and look at some code. Imagine you need to notify a Slack channel from various parts of your system. Instead of duplicating the Slack API logic everywhere, you define a single, powerful Action.
import { Action } from 'actions.do';
// Define a reusable action to notify a Slack channel
const notifySlack = new Action({
id: 'notify-slack-channel',
handler: async (payload: { channel: string; message: string }) => {
const { channel, message } = payload;
console.log(`Sending to Slack #${channel}: ${message}`);
// The actual Slack API call would go here
// const slackResponse = await postToSlack(channel, message);
return { success: true, timestamp: new Date().toISOString() };
}
});
// This Action can now be executed by any workflow or API call.
With this simple definition, you've encapsulated a core business task. This notify-slack-channel Action is now a first-class citizen in your automation toolkit. It has a unique ID, a clear input schema (payload), and a predictable output. Any other developer, workflow, or even an authorized external service can now execute this task without needing to know a single thing about the Slack API.
When you start building with Actions, you unlock transformative benefits for your business and development teams.
Define how to 'send an invoice' or 'create a new user' once. Every workflow that needs this capability will use the exact same Action, ensuring consistency and dramatically reducing development time.
Traditional scripts are fragile. What happens if a network request fails? With Actions.do, resilience is built-in. Each Action can be configured with its own retry logic, timeout policies, and error-handling fallbacks. Your workflows become robust by default, gracefully handling the transient issues that plague distributed systems.
Actions are designed to run as isolated, serverless functions. This means they scale automatically with demand. Whether you're executing ten tasks a day or ten thousand an hour, the system handles it without you needing to manage a single server.
The true magic happens when you compose Actions together. By chaining these simple, powerful building blocks, you create sophisticated, end-to-end agentic workflows. An Action to fetch-customer-data can feed its output into an Action to generate-monthly-report, which then triggers our notify-slack-channel Action. You're no longer just running scripts; you're orchestrating intelligent business processes.
The next time a colleague asks you to "just write a quick script to automate X," pause and reframe the problem. Don't build a one-off solution. Instead, identify the core, reusable tasks within that request and build them as Actions.
The "Business as Code" revolution is about building a library of robust, scalable, and reusable business capabilities. It’s about moving faster, building more resilient systems, and freeing up your team to focus on what matters most.
Ready to turn your business logic into a powerful, automated asset? Explore Actions.do and build your first Action today.