A workflow builder that works two ways: drag-and-drop for humans, full API for AI agents. Trigger on any CRM event, branch on any field, and let automation handle the rest. No per-workflow limits. No per-step charges.
POST /api/v1/automations/import -- create workflows with automatic name resolutionPOST /api/v1/automations/validate -- check graph validity before publishingPOST /api/v1/automations/:id/dry-run -- test without side effectsPOST /api/v1/automations/:id/publish -- push draft to live in one callEvery node type works in both the visual builder and the API. Drag them onto the canvas or define them in JSON.
Start on any CRM event -- contact created, deal moved, tag added, form submitted, and more.
Branch on any field with 20+ operators. Equals, contains, greater than, is empty, and more.
Wait minutes, hours, or days before continuing to the next step.
Use templates with merge fields. Liquid syntax, MJML support, AB variants.
Native SMS via your configured provider. No per-message markup.
Change fields, status, owner, or any custom property on the contact record.
Add to any pipeline and stage. Set value, probability, and expected close date.
Apply tags for segmentation, scoring, or triggering downstream automations.
Clean up tags after actions complete. Keep your segments accurate.
Call external URLs with signed payloads. Supports GET, POST, PUT, DELETE.
Alert team members via Slack, email, or in-app notifications.
Let an AI agent decide the next step based on contact data and conversation history.
Iterate over contact lists or arrays. Process each item through a sub-flow.
Multi-path logic with fallback. Route contacts down different paths based on any criteria.
Your AI agents can create, test, and publish workflows without ever touching the UI. Here is what that looks like.
POST /api/v1/automations/import { "name": "New Lead Welcome Sequence", "trigger": { "event": "contact.created", "filter": { "tag": "new-lead" } }, "steps": [ { "type": "send_sms", "template": "welcome-sms", "delay": "0m" }, { "type": "delay", "wait": "2d" }, { "type": "send_email", "template": "intro-email" }, { "type": "condition", "field": "email_opened", "op": "eq", "value": true, "yes": [{ "type": "add_tag", "tag": "engaged" }], "no": [{ "type": "send_sms", "template": "follow-up-sms" }] } ] }
POST /api/v1/automations/abc123/dry-run { "contact_id": "test-contact-456" } // Response: step-by-step execution trace, no side effects
POST /api/v1/automations/resolve { "tags": ["new-lead", "engaged"], "pipelines": ["Sales Pipeline"], "users": ["Jordan Tate"] } // Returns UUIDs for each name
Build visually or build programmatically. Test in sandbox, publish when ready. No per-workflow limits, no per-step charges, no surprises.