Skip to content

Automation — Production Readiness

FieldValue
Date2026-08-13
StatusReady for merge / staging go-live (billable Marketplace add-on)
ScopeAutomation module automation v1.0.0
Branchfeature/automation-module
CompanionAutomation production · Developer guide · User guide

Executive summary

Automation is a billable Marketplace SKU ($29/mo, $290/yr). It is not default-included. Workspaces install from Marketplace after migrate; existing tenants are unchanged until they subscribe.

Go / No-Go: Go for staging → production after CI on companion PRs and the ops follow-ups below.

GateResult
Activation bypass closed (create inactive → activate())Pass
Outbound webhook SSRF + timeoutsPass
Schedule 90s window + 2-minute dedup + cache lockPass
Run job failed() + per-run cache lock + $timeout 60sPass
Pest Automation suitesPass (local) — confirm CI on Backend PR
Playwright test:e2e:automationPass (local) — confirm on staging
Docs + marketing SKUPass

Deploy order

  1. Backend php artisan migrate --force (schema + catalog + permissions)
  2. Update queue workers to include automations before emails,default
  3. Confirm scheduler: automation:dispatch-schedules every minute (withoutOverlapping(5), onOneServer)
  4. Deploy SPA (Automation nav + builder)
  5. Deploy Docs + marketing site
  6. Staging smoke (below) before production traffic

Suggested merge order: Backend → Frontend → Docs → Website.

Optional env: AUTOMATION_WEBHOOK_SECRET (default HMAC when a webhook action omits its own secret).


Pre-flight checklist

#CheckOwnerPass?
1Migrations applied on staging/prod (automation_* tables + catalog row + permission grants)Ops
2Catalog shows automation published, billable, not default-includedOps
3Queue daemon: --queue=automations,emails,default --timeout=90Ops
4Scheduler runs automation:dispatch-schedules; shared Redis/cache for onOneServerOps
5AUTOMATION_WEBHOOK_SECRET set if default webhook HMAC is desiredOps
6Frontend routes gated with RequireAccess (module=automation, automation.view)QA
7Pest Automation suites green in CIEng
8Playwright npm run test:e2e:automation green on stagingQA

Staging smoke (human)

  1. Marketplace → install Automation (paid add-on; test gateway / entitled workspace)
  2. Sidebar shows Automation for a role with automation.view
  3. Templates → Use template → workflow opens inactive
  4. Save & activate a Manual + Create task (or notification) workflow
  5. Run → Runs page shows pending/running then completed or failed with logs
  6. Pick a module-gated trigger (e.g. WhatsApp Message Received without WhatsApp Cloud) → Save & activate stays disabled / API 422; workflow remains inactive. See current smoke in Automation 1.3.0 readiness.
  7. Optional: schedule daily H:i in workspace timezone; wait for dispatcher; confirm a single run (no duplicates)

Superseded scope: This page documents the original v1.0.0 ship. Current catalog is 1.3.0 — use Automation 1.3.0 production readiness for go-live. Contact created is now wired (not “coming soon”).


Rollback

LayerAction
FrontendRedeploy previous SPA; Automation nav disappears until re-deploy
Backend codeRedeploy previous release; keep migrations (catalog insert is additive)
Module disableMarketplace uninstall / cancel subscription (workflow rows retained)
SchemaDo not roll back Automation migrations in production without a data plan

Monitoring

  • Run statuses: pending / running / completed / failed / skipped / cancelled
  • automation_logs step detail; Nightwatch on ExecuteAutomationRunJob and automation:dispatch-schedules
  • Failed jobs: php artisan queue:failed on the automations queue
  • Platform audit + Spatie activity on workflow CRUD

Accepted residual risk

ItemSeverityNotes
DNS-rebinding to private IPs after hostname allowLowLiteral private IPs and localhost are blocked; hostname resolve is best-effort
Unwired catalog triggers visible in builderInfoCannot activate; intentional stubs
Delay continuation uses the same run idInfoPer-run cache lock waits then continues; do not use ShouldBeUnique on run id
Staff default role includes automation.runInfoSame pattern as other module defaults; customize per workspace

Sign-off

RoleNameDateDecision
Eng☐ Ready
QA☐ Ready
Ops☐ Ready

Release decision: Ready for production opt-in after CI green and staging smoke.

Official documentation for the EloSync SaaS Platform.