goldnead/statamic-automations
A lightweight Statamic addon for event-driven automations. Build rules that trigger on content saves, form submissions, or schedules, then run notifications, webhooks, and custom jobs—all configurable from the control panel, with support for your own custom triggers and actions.
entitlements.check_access node answers "does this address hold product X right now?" at the moment a flow executes, rather than inheriting the state captured when the run was triggered. For any flow with a delay between trigger and send — trial nudges, renewal reminders, win-back, drip onboarding — this is the difference between a correct message and an embarrassing one. It directly enables a class of products (delayed, state-aware communication) that was previously unreliable or required custom code.mode: forbid lets you encode product rules like "never pitch Product A to someone who already has it" without building segment refresh jobs. This is a revenue-protection and brand-safety decision as much as a technical one.mode: require ends the run when access is gone, so expiration/revocation messaging can be sequenced confidently: send the "your access has ended" message only to people who actually lost access, and the "you're still in grace" nudge only to those who still have it.decide() (active or grace period; not revoked, expired, scheduled, or pending). That is a deliberate decision not to re-implement entitlement semantics in the flow layer — the PM avoids a second, drifting source of truth for "who has access."forbid never passes because the check broke. This is a defensible default (don't grant, don't promise, don't upsell on unknown state) but it is a product choice worth documenting in flow runbooks, because it converts upstream addon instability into visible flow failures.send_email mail in a headless browser; 2.29.1 seals that browser off (sanitised HTML, JavaScript off, dead proxy, sandbox on, allow-listed URLs only). This is what makes it defensible to enable previews in an approval workflow for customer-facing mail: the preview surface now treats email HTML as hostile input rather than trusted markup. It also defines the fidelity trade-off — third-party images (CDN, tracking pixels, file://, relative paths) become transparent pixels, so the preview is an approximation, not a pixel-perfect proof.automations/thumbs/{uuid}/) on both database and flat-file drivers. That turns "delete the automation" into a genuine cleanup operation, which supports retention/GDPR decisions and prevents orphaned screenshot storage from accumulating — a small but real operational-budget decision.automations.thumbnails.timeout (default 20s per mail) and the no_sandbox escape hatch are product-visible settings: they decide how long an editor waits and how a containerised/root deployment behaves. Preview availability becomes a hosting prerequisite, not a free feature.goldnead/statamic-flow-canvas ^1.6.1 — a dependency upgrade, not a re-platform.Adopt when all of the following hold:
product_slug, resolved via the Statamic user owning the address and via a subject of type email.goldnead/statamic-flow-canvas ^1.6.1 requirement. On root/container hosts Chromium runs unsandboxed unless you set automations.thumbnails.no_sandbox / STATAMIC_AUTOMATIONS_NO_SANDBOX — the HTML and network are still sanitised, but the sandbox is not there.Look elsewhere or defer when:
forbid deliberately unable to pass on a broken check.To executives: This release closes a correctness gap in lifecycle messaging. Until now, a flow decided whether to send based on who the customer was when the flow started — which is wrong for a mail that goes out ten days later. The new action re-checks entitlement at send time using the entitlements system's own definition of access, so we stop pitching products to people who already bought them and stop telling lapsed customers they still have access. Alongside it, the canvas mail preview — the "photo" of an email shown to editors — is now hardened: the rendering browser runs with scripting off, a request-blocking proxy, an on-by-default sandbox, and sanitised HTML, so previewing customer mail no longer means trusting whatever that mail references. Deleting an automation now also deletes its stored preview images, so retention is handled for us. All of it ships with no migration and no new infrastructure beyond a headless Chromium for previews; the defaults are deliberately conservative, and if an entitlement check can't be made the run fails rather than guessing.
To engineering: Small, additive, opt-in. One new flow node, entitlements.check_access, with email, product_slug, and mode (require / forbid); it auto-registers only when the entitlements addon is detected. Access resolution delegates to the addon's decide() — no duplicated entitlement rules on our side. Failure semantics are explicit and worth instrumenting: unmet condition stops the run, uncheckable condition fails the node. Separately, 2.29.1 hardens the 2.28.0 thumbnail renderer: HTML is reduced before Chromium sees it (scripts, frames, plugins, SVG, stylesheets, <base>, meta refresh, image-set(), CSS escapes stripped; loadable URLs restricted to data:, cid:, or the app host, everything else becomes a 1px transparent pixel), JavaScript is off, a dead proxy catches all requests including loopback except the app host, and the sandbox stays on except under root or when automations.thumbnails.no_sandbox / STATAMIC_AUTOMATIONS_NO_SANDBOX is set. New automations.thumbnails.timeout (default 20s per mail) replaces the fixed 30. Deleting an automation deletes automations/thumbs/{uuid}/ on both drivers. Requires goldnead/statamic-flow-canvas ^1.6.1 (plain CSS canvas components, fixing installations that only have this addon). No migration; set STATAMIC_AUTOMATIONS_NO_SANDBOX=true only if Chromium fails to start sandboxed on a non-root user. Treat flow failure rates as a new operational metric, and watch thumbnail storage/timeouts as a second.
How can I help you explore Laravel packages today?