diff --git a/backend/src/routes/adminFeatureFlags.js b/backend/src/routes/adminFeatureFlags.js
index 1b3badd0..65114458 100644
--- a/backend/src/routes/adminFeatureFlags.js
+++ b/backend/src/routes/adminFeatureFlags.js
@@ -88,6 +88,11 @@ const KNOWN_FLAGS = [
// per-event-type presets and global watermark defaults tab. Strictly opt-in;
// gates all slideshow admin UI (per-event card, type preset, settings tab).
'slideshow',
+ // Workflow / automation engine — admin-configurable visual flows (triggers,
+ // conditions, branches, loops, approval gates). Strictly opt-in; master
+ // kill-switch for the Workflows admin area AND the engine's runtime side
+ // effects (no run is created/resumed while off).
+ 'workflows',
];
// Spec defaults for any flag missing from the DB (e.g. a row added by a
@@ -117,6 +122,7 @@ const DEFAULT_FLAGS = {
projects: false,
whatsapp: false,
slideshow: false,
+ workflows: false,
};
async function readAllFlags() {
diff --git a/frontend/src/contexts/FeatureFlagsContext.tsx b/frontend/src/contexts/FeatureFlagsContext.tsx
index c97d4c1b..218d81d2 100644
--- a/frontend/src/contexts/FeatureFlagsContext.tsx
+++ b/frontend/src/contexts/FeatureFlagsContext.tsx
@@ -64,6 +64,9 @@ export const DEFAULT_FLAGS: FeatureFlags = {
whatsapp: false,
// Live Slideshow ("Diashow") — opt-in; gates all slideshow admin UI.
slideshow: false,
+ // Workflow / automation engine — opt-in; gates the Workflows admin area
+ // and the engine runtime (triggers/actions/gates).
+ workflows: false,
};
export const FEATURE_FLAGS_QUERY_KEY = ['feature-flags'] as const;
diff --git a/frontend/src/features/settings/tabs/FeaturesTab.tsx b/frontend/src/features/settings/tabs/FeaturesTab.tsx
index 5816bb3f..9434b923 100644
--- a/frontend/src/features/settings/tabs/FeaturesTab.tsx
+++ b/frontend/src/features/settings/tabs/FeaturesTab.tsx
@@ -23,6 +23,7 @@ import {
Wallet,
FolderKanban,
MonitorPlay,
+ Workflow,
} from 'lucide-react';
import { useTranslation } from 'react-i18next';
import { Button, Card } from '../../../components/common';
@@ -134,6 +135,24 @@ export const FeaturesTab: React.FC = () => {
/>
+ {/* Automation — the visual workflow engine. Master kill-switch for the
+ Workflows admin area and the runtime; off by default. */}
+
+ setFlag('workflows', next)}
+ />
+
+
{/* Clients (#354 follow-up). Visual grouping for the CRM-area
sub-features. The "Clients" sidebar section itself is gated
by a derived `clients` flag (computed from whether any
diff --git a/frontend/src/i18n/locales/de.json b/frontend/src/i18n/locales/de.json
index 0f2b9671..9b680e94 100644
--- a/frontend/src/i18n/locales/de.json
+++ b/frontend/src/i18n/locales/de.json
@@ -1663,7 +1663,8 @@
"accounting": "Buchhaltung",
"insights": "Auswertungen & Zugriff",
"customers": "Kunden",
- "clients": "CRM"
+ "clients": "CRM",
+ "automation": "Automatisierung"
},
"status": {
"stable": "stabil",
@@ -1779,6 +1780,11 @@
"slideshow": {
"title": "Live-Diashow",
"description": "Ein separater Vollbild-„Diashow“-Link pro Event für Beamer bei Live-Events – übernimmt neue Uploads automatisch, mit Voreinstellungen je Event-Typ und globalen Wasserzeichen-Vorgaben unter Einstellungen → Diashow."
+ },
+ "workflows": {
+ "title": "Workflows",
+ "description": "Visuelle Automatisierungen auf einer Canvas erstellen – Auslöser, Bedingungen, Verzweigungen, Schleifen und Freigabe-Gates für Admins. Deine Mahnstufen und Buchungsschritte werden zu bearbeitbaren Abläufen. Strikt optional.",
+ "sidebar": "Workflows"
}
},
"customerSurface": {
diff --git a/frontend/src/i18n/locales/en.json b/frontend/src/i18n/locales/en.json
index 1eeee74f..cf3c178b 100644
--- a/frontend/src/i18n/locales/en.json
+++ b/frontend/src/i18n/locales/en.json
@@ -1219,7 +1219,8 @@
"accounting": "Accounting",
"insights": "Insights & Access",
"customers": "Customers",
- "clients": "CRM"
+ "clients": "CRM",
+ "automation": "Automation"
},
"status": {
"stable": "stable",
@@ -1335,6 +1336,11 @@
"slideshow": {
"title": "Live Slideshow",
"description": "A separate fullscreen \"Diashow\" link per event for projectors at live events — auto-picks-up new uploads, with per-event-type presets and global watermark defaults under Settings → Slideshow."
+ },
+ "workflows": {
+ "title": "Workflows",
+ "description": "Build visual automations on a canvas — triggers, conditions, branches, loops and admin approval gates. Your reminder ladder and booking steps become editable flows. Strictly opt-in.",
+ "sidebar": "Workflows"
}
},
"customerSurface": {
diff --git a/frontend/src/services/featureFlags.service.ts b/frontend/src/services/featureFlags.service.ts
index 176c83d8..ee396eab 100644
--- a/frontend/src/services/featureFlags.service.ts
+++ b/frontend/src/services/featureFlags.service.ts
@@ -66,7 +66,11 @@ export type FeatureKey =
| 'whatsapp'
// Live Slideshow ("Diashow") — per-event fullscreen kiosk link + presets +
// global watermark settings tab. Strictly opt-in; gates all slideshow UI.
- | 'slideshow';
+ | 'slideshow'
+ // Workflow / automation engine — admin-configurable visual flows (triggers,
+ // conditions, branches, loops, approval gates) built on a canvas. Strictly
+ // opt-in; gates the Workflows admin area and the engine runtime.
+ | 'workflows';
export type FeatureFlags = Record;