Workflow Automation — Without Zapier
Build 'if this happens, do that' rules visually. 12 trigger events, 7 action types, AND-only conditions, per-rule cooldowns, opt-out enforcement, full audit trail. Transactional outbox guarantees zero event loss even if the server crashes mid-fire.
Everything You Need to Automate. Nothing You Have to Host.
Visual no-code builder, 12 trigger types, 7 action types, safety guardrails, full audit log, and a transactional outbox that guarantees zero event loss — all built in, no integrations required.
3-Pane Builder
WHEN trigger / IF conditions / THEN actions. Same visual model as the Projects workflow editor. Drag-and-drop reordering, no JSON, no API keys.
12 Trigger Types
Booking events, payment received, contact created/tagged, project run events, scheduled cron — anything that happens in the app can fire an automation.
7 Action Types
Send SMS / email / WhatsApp, create task, add/remove tag, in-app notification — all from one rule, in any order, with per-action delays.
Built-In Safety
Cooldown windows, daily caps, opt-out enforcement, test-fire that routes to staff phone. Defaults protect you before you remember to configure them.
WHEN / IF / THEN — Three Panes, Zero Code
The builder mirrors how operators already think about automation. Pick a trigger (WHEN something happens), add optional conditions (IF certain things are true), then queue actions (THEN do these). No JSON, no API keys, no external SaaS to configure.
3-Pane Visual Editor
WHEN palette / IF condition rows / THEN action list. Drag-and-drop reordering with inline editing, undo/redo, autosave drafts, and real-time preview.
- Visual canvas with drag-and-drop reordering
- Inline editing — click any field to change it
- Undo/redo for every builder action
- Autosave drafts so you never lose partial work
- Real-time preview of condition logic
- No code involved at any step
Configurable Per-Action Delays
Fire actions immediately or after configurable wait periods. Chain SMS → email → WhatsApp in sequence with different delays between each.
- 0 minutes to unlimited delay per action
- Per-action delay configuration
- Sequence ordering respected across delays
- Parallel actions when delay is identical
- Run-time scheduling visible in audit log
- Audit retention for all scheduled fires
Multi-Action Sequences
One trigger fires SMS + email + WhatsApp + task + tag updates. Chain unlimited actions with per-action delays and conditional skips.
- Chain unlimited actions from one trigger
- Ordered sequencing with per-action delay configuration
- Conditional skip per action based on runtime state
- Channel fanout (send to multiple channels simultaneously)
- Automation-name tagging on every created artifact
- Per-action outcome visible in audit log
Inactive by Default
New automations are paused until explicitly enabled — preventing accidental fires on incomplete configs. Test-fire validates before you go live.
- Prevents accidental fires on draft automations
- Draft state persists until you explicitly toggle on
- Test-fire validation before activating
- Audit logging on every toggle with acting user
- Ramp-up via daily caps while you watch metrics
- Manager-only toggle prevents accidental enables
12 Trigger Types
Anything that happens in the app can fire an automation. The catalog covers the events operators most often want to automate around.
Booking Events (4 Triggers)
booking_created / booking_cancelled / booking_completed / booking_no_show — the four lifecycle events operators automate most.
- Per-service filter (only fire for 'Facial')
- Time-window filter (fire only within 24 h of appointment)
- Technician filter for staff-specific flows
- Status-based skip if booking is in exception state
- Multi-booking aggregation for back-to-back sessions
- No-show flag propagated to triggered actions
Payment + Contact Events
payment_received (any successful charge above optional threshold), contact_created (new customer record), contact_tagged (specific tag applied).
- Amount threshold filter on payment_received
- Payment processor filter (Stripe, Cardknox, etc.)
- Tag whitelist for contact_tagged trigger
- New-vs-returning customer detection
- Multi-channel attribution on contact_created
- Lifecycle stage propagated to actions
Project Run Events
run_started / step_completed / run_completed for any project template — ideal for onboarding sequences and multi-step intake flows.
- Per-template filter to scope the trigger
- Per-step filter for granular step completion events
- Customer-state aware (reads project context vars)
- Magic-link gating supported in triggered messages
- Status-change webhook on project state transitions
- Project-completion tally for reporting
Scheduled (Cron)
Daily fire at 9 AM in the location's timezone — for morning summaries, follow-up sequences, and retention nudges.
- Fires in location-local timezone automatically
- Weekday / weekend filter
- Holiday calendar respect (configurable)
- Hour-of-day offset configurable per rule
- Recurring runs with configurable frequency
- Scheduled-only branch for ops automations
7 Action Types
From a single trigger you can text, email, WhatsApp, tag, task, and notify — in any order, with any delays, all from one rule.
Send SMS / Email / WhatsApp
Three messaging actions with template selection or inline body. Merge fields, central template library, and compliance built in.
- Merge fields supported ({{first_name}}, {{service}}, etc.)
- Central template library accessible from inline body editor
- Character / segment count for SMS before you save
- A2P 10DLC compliance for SMS (sender validation enforced)
- WhatsApp template-only per Meta rules (pre-approved messages)
- Sender-identity respect — uses configured FROM address/number
Create Task
Auto-generate a task with title, description, assignee, priority, and due date — directly from a booking event or payment trigger.
- Assignee per role or per named user
- Due-date offset from trigger event (e.g. +2 days)
- Priority levels (low / medium / high / urgent)
- Task-source tagging with automation_id for traceability
- Bulk-action queue for high-volume triggers
- Multi-assignee support per task
Add Tag / Remove Tag
Mutate contact tags directly from any trigger — build lifecycle segments automatically as customers move through your funnel.
- Tag whitelist configurable for safety
- Role-based gating on tag modification
- Audit log per tag change with automation_id
- Multi-tag in one fire (add/remove several at once)
- Conditional skip if tag already present/absent
- Segment cascade — tag changes update CRM segments live
Notify In-App
Bell-icon notification to staff — per role or per user, with severity levels and push-notification fallback.
- Per-role or per-user routing
- Severity levels (info / warning / urgent)
- Batched delivery to prevent notification flood
- Dismissal tracking in notification center
- Push-notification fallback when app is backgrounded
- Notification preference respect per user settings
Safety Defaults That Prevent Disasters
Automations are powerful enough to spam every customer accidentally. We don't trust the operator — or ourselves — to remember every guardrail. The defaults catch you.
Per-Rule Cooldown
Default 60 minutes per (automation, contact) pair — prevents rapid re-fire when a customer triggers the same event twice in quick succession.
- Prevents rapid re-fire on the same contact
- Configurable per rule (0 = disabled, or any minutes value)
- Default 60 minutes keeps operators safe out of the box
- Manual override with required reason logged to audit
- Fire-history check happens before action dispatch
- Cooldown state visible in automation's run log
Daily Cap Per Automation
Configurable max fires per day per automation. Hard system cap of 5,000 fires/company/day prevents runaway loops.
- Hard system cap: 5,000 fires per company per day
- Soft warning alert at 80% of configured cap
- Fire-rate dashboard shows intraday pace
- Anomaly alerts on unusual volume spikes
- Manager override with reason for planned campaigns
- Auto-pause on cap overflow with alert notification
Opt-Out Enforcement
Every SMS / email / WhatsApp action respects customer opt-out status — enforced automatically, not relying on you to check before sending.
- TCPA compliance for SMS opt-outs enforced at dispatch
- CAN-SPAM compliance for email unsubscribes
- GDPR consent check for EU contacts
- Per-channel opt-out tracked independently
- Attempted sends to opted-out contacts logged (not sent)
- Automatic unsubscribe link injection in every message
Test Fire
Routes all messaging to the operator's phone/email — never the customer's. Validates conditions and previews action sequence before you go live.
- Dry-run mode — no real-customer impact
- Full payload preview for each action
- Condition evaluation shows which branch would fire
- Action sequencing and delays visible in test output
- Manager-only access to test-fire controls
- Test-fire results logged to audit for review
Full Audit Log, Manual Re-Fire
Every automation fire is recorded with the trigger payload, condition results, per-action outcomes, and timestamps. Drill into "why did this fire?" and "what did it do?" — and re-fire a single instance manually if needed.
Every Fire Recorded
Trigger event, condition results, per-action status — all captured with millisecond timestamps and the full trigger payload.
- Timestamp on trigger receipt and each action dispatch
- Triggering entity (contact, booking, payment ID)
- Full action sequence with per-action status
- Send results per messaging action (delivered / failed)
- Payload snapshot at time of trigger
- Retention: 90 days rolling
Searchable + Filterable
Filter by automation name, trigger entity, date range, or status. Full-text search across trigger payloads and action outcomes.
- Full-text search across all log fields
- Date-range picker with time-zone aware display
- Status filter: success / partial / failure
- Per-action drill-in from the run summary row
- Export to CSV for offline review
- Saved views for recurring audit queries
Manual Re-Fire
Retry a failed instance directly from the log — one click re-evaluates conditions and re-dispatches actions with a fresh audit entry.
- One-click retry from the failed run row
- Condition re-evaluation at retry time
- Optional payload edit before re-fire
- Audit log entry created for every retry attempt
- Retry-count cap prevents infinite retry loops
- Manager-only access to the re-fire control
Transactional Outbox = Zero Event Loss
Real talk: most "automation" tools lose events when servers crash. We don't. Every trigger writes to a transactional outbox, the dispatcher processes sequentially with retry, and crashes resume from the last unprocessed event.
Trigger Events Written Transactionally
Every trigger event is written to the outbox in the same database transaction as the originating event — no events lost, no double-fires.
- Atomic write with the originating database event
- No lost events even on mid-transaction crash
- No double-fires — idempotency key per event row
- Ordered queue preserves event arrival sequence
- Persistent storage — survives server restarts
- Sub-second dispatch latency from trigger to outbox
Sequential Dispatcher
Polls every minute, processes in FIFO order. Retry-with-backoff on transient errors, configurable concurrency, crash-safe resume.
- FIFO queue — earliest event processed first
- Per-rule serialization prevents out-of-order fires
- Retry-with-backoff on transient external errors
- Crash-safe — dispatcher resumes from last checkpoint
- Configurable concurrency per deployment
- Manual dispatch trigger for on-demand processing
Resume from Outbox
On next start after any crash or deploy, the dispatcher picks up from the last unprocessed outbox entry — no manual recovery, no event replay risk.
- No manual recovery steps after crash or restart
- No event replay risk — processed events marked done
- Audit log of every restart and resume event
- Dispatch-rate monitoring dashboard
- Alert on outbox backlog exceeding threshold
- Immune to deploy churn — survives rolling restarts
Connected to Your Platform
Automations connect to every module. Triggers fire from bookings, payments, CRM, and projects. Actions write to tasks, tags, and communications — all from one rule.
Popular with these businesses