In modern business, automation is no longer a luxury—it's a necessity. But as we automate more, our systems often become a tangled web of brittle scripts, monolithic applications, and complex, hard-to-manage workflows. What if we could break down these massive processes into their simplest, most fundamental components?
This is the core idea behind action.do: a platform for defining, triggering, and managing discrete, single-purpose tasks. We call these atomic actions. They are the fundamental building blocks for creating robust, scalable, and elegant automated workflows, enabling a new paradigm: Services-as-Software.
Think of an atomic action as the smallest, indivisible unit of work in a business process. It's a single, self-contained task designed to do one thing and do it well. It’s not a sprawling, multi-step workflow; it's a single, focused step within that workflow.
Some classic examples of atomic actions include:
By breaking down a large business process into these granular actions, you create a system that is transparent, easier to debug, and infinitely more flexible.
If an action.do is a single step, how does it differ from a full workflow? The relationship is one of composition.
Think of it like building with LEGO bricks. Each action.do is a single, standardized brick. A workflow is the complete model you build by connecting those bricks. By composing workflows from these reliable atomic actions, you can model a complete business process and deliver a true Service-as-Software.
action.do is built with a simple, API-first philosophy. Defining and executing tasks is straightforward and developer-friendly. Let’s look at how you would define an action to send a welcome email using the SDK.
import { Do } from '@do-inc/sdk';
// Initialize the platform client
const platform = new Do({ apiKey: 'YOUR_API_KEY' });
// Define a simple, atomic action: send an email
const sendWelcomeEmail = platform.action('send-welcome-email', {
description: 'Sends a welcome email to a new user.',
handler: async (inputs: { email: string, name: string }) => {
// Business logic for the action would go here
console.log(`Sending welcome email to ${inputs.name} at ${inputs.email}`);
return { success: true, messageId: 'xyz-123' };
},
});
// Execute the action via the SDK
const result = await sendWelcomeEmail.run({
email: 'alex@example.com',
name: 'Alex',
});
console.log(result);
As you can see, the process is clear:
A critical feature of action.do is that every action is designed like a pure function. It accepts a structured set of inputs and is expected to return a structured output.
In our example, the action accepts { email: string, name: string } and returns a predictable result like { success: true, messageId: 'xyz-123' }. This input/output contract makes your automated processes:
An atomic action is the smallest, indivisible unit of work in a business process. Think of it as a single, self-contained task like 'send an invoice,' 'update a CRM record,' or 'verify user identity.' These actions are the fundamental building blocks for creating services on the .do platform.
An action.do represents a single step, while a workflow orchestrates multiple actions in a sequence or based on specific logic. You compose workflows by connecting various action.do agents together to model a complete business process and deliver a Service-as-Software.
Yes. Every action is designed like a function. It accepts a structured set of inputs (e.g., customer details, order ID) and returns a structured output (e.g., a confirmation status, a user ID). This makes them predictable, reliable, and easy to integrate into larger systems.
Any discrete business task is a perfect candidate. Examples include sending notifications (email, SMS), performing a calculation, querying a database, calling an external API, or updating a record in a system of record. If you can define it as a single, repeatable function, you can build it as an action.do.
The future of workflow automation isn't about bigger, more complicated tools. It's about breaking down complexity into manageable, reusable, and observable parts. By focusing on the atomic action, action.do provides the foundation you need to build powerful, reliable, and scalable Services-as-Software.
Ready to build, trigger, and automate? Start with your first action.do.