diff --git a/src/ApiServer/fixtures/revisions.js b/src/ApiServer/fixtures/revisions.js
index 048a9d2b..eafa7ba1 100644
--- a/src/ApiServer/fixtures/revisions.js
+++ b/src/ApiServer/fixtures/revisions.js
@@ -163,28 +163,27 @@ export default [
     },
     icon: "bot",
     upgradesAvailable: false,
-    triggers: {
-      manual: {
-        enable: true,
-      },
-      scheduler: {
-        enable: false,
-      },
-      webhook: {
-        enable: false,
-      },
-      event: {
-        enable: false,
-        type: null,
-        subject: null,
-      },
-    },
-    tokens: [
-      {
-        token: "7AFBE8B30B2958B2B1879AAAF59B68EC31BF7C581F6D1C0833F64F623A667102",
-        label: "default",
-      },
-    ],
+    triggers: [{
+      type: "manual",
+      enabled: true,
+      conditions: null,
+    },{
+      type: "webhook",
+      enabled: false,
+      conditions: null,
+    },{
+      type: "scheduler",
+      enabled: false,
+      conditions: null,
+    },{
+      type: "event",
+      enabled: true,
+      conditions: [{operation: "matches", field: "type", value: "io.boomerang.test"}, {operation: "matches", field: "subject", value: "australia"}],
+    },{
+      type: "github",
+      enabled: true,
+      conditions: [{operation: "in", field: "event", values: ["create", "delete"]}, {operation: "in", field: "repository", values: ["australia","img","test"]}],
+    }],
     config: [
       {
         key: "token",
diff --git a/src/ApiServer/fixtures/summaries.js b/src/ApiServer/fixtures/summaries.js
index d7c46101..8d6ba09f 100644
--- a/src/ApiServer/fixtures/summaries.js
+++ b/src/ApiServer/fixtures/summaries.js
@@ -135,15 +135,27 @@ const summaries = [
     name: "ML Train – Bot Efficiency",
     shortDescription: "Train and store ML model for Bot Efficiency.",
     status: "active",
-    triggers: {
-      scheduler: { enable: false },
-      webhook: { enable: false },
-      event: {
-        enable: false,
-        type: null,
-        subject: null,
-      },
-    },
+    triggers: [{
+      type: "manual",
+      enabled: true,
+      conditions: null,
+    },{
+      type: "webhook",
+      enabled: false,
+      conditions: null,
+    },{
+      type: "scheduler",
+      enabled: false,
+      conditions: null,
+    },{
+      type: "event",
+      enabled: true,
+      conditions: [{operation: "matches", field: "type", value: "io.boomerang.test"}, {operation: "matches", field: "subject", value: "australia"}],
+    },{
+      type: "github",
+      enabled: true,
+      conditions: [{operation: "in", field: "event", values: ["create", "delete"]}, {operation: "in", field: "repository", values: ["australia","img","test"]}],
+    }],
     labels: [
       {
         key: "testing",
@@ -163,7 +175,6 @@ const summaries = [
       },
     ],
     scope: "team",
-    tokens: [],
     storage: {
       activity: {
         enabled: true,
@@ -317,15 +328,27 @@ const summaries = [
     name: "ML Train – Bot Efficiency",
     shortDescription: "Train and store ML model for Bot Efficiency.",
     status: "active",
-    triggers: {
-      scheduler: { enable: false },
-      webhook: { enable: false},
-      event: {
-        enable: false,
-        type: null,
-        subject: null,
-      },
-    },
+    triggers: [{
+      type: "manual",
+      enabled: true,
+      conditions: null,
+    },{
+      type: "webhook",
+      enabled: false,
+      conditions: null,
+    },{
+      type: "scheduler",
+      enabled: false,
+      conditions: null,
+    },{
+      type: "event",
+      enabled: true,
+      conditions: [{operation: "matches", field: "type", value: "io.boomerang.test"}, {operation: "matches", field: "subject", value: "australia"}],
+    },{
+      type: "github",
+      enabled: true,
+      conditions: [{operation: "in", field: "event", values: ["create", "delete"]}, {operation: "in", field: "repository", values: ["australia","img","test"]}],
+    }],
     labels: [
       {
         key: "purpose",
@@ -333,7 +356,6 @@ const summaries = [
       },
     ],
     scope: "system",
-    tokens: [],
     storage: {
       activity: {
         enabled: true,
@@ -379,23 +401,27 @@ const summaries = [
     name: "Java - Deploy",
     shortDescription: "",
     status: "active",
-    triggers: {
-      manual: {
-        enable: true,
-      },
-      scheduler: {
-        enable: false,
-      },
-      webhook: {
-        enable: true,
-      },
-      event: {
-        enable: false,
-        type: null,
-        subject: null,
-      },
-    },
-    tokens: [],
+    triggers: [{
+      type: "manual",
+      enabled: true,
+      conditions: null,
+    },{
+      type: "webhook",
+      enabled: false,
+      conditions: null,
+    },{
+      type: "scheduler",
+      enabled: false,
+      conditions: null,
+    },{
+      type: "event",
+      enabled: true,
+      conditions: [{operation: "matches", field: "type", value: "io.boomerang.test"}, {operation: "matches", field: "subject", value: "australia"}],
+    },{
+      type: "github",
+      enabled: true,
+      conditions: [{operation: "in", field: "event", values: ["create", "delete"]}, {operation: "in", field: "repository", values: ["australia","img","test"]}],
+    }],
     storage: {
       activity: {
         enabled: true,
@@ -441,23 +467,27 @@ const summaries = [
     name: "Java - Build",
     shortDescription: "Java - Build",
     status: "active",
-    triggers: {
-      manual: {
-        enable: true,
-      },
-      scheduler: {
-        enable: false,
-      },
-      webhook: {
-        enable: true,
-      },
-      event: {
-        enable: false,
-        type: null,
-        subject: null,
-      },
-    },
-    tokens: [],
+    triggers: [{
+      type: "manual",
+      enabled: true,
+      conditions: null,
+    },{
+      type: "webhook",
+      enabled: false,
+      conditions: null,
+    },{
+      type: "scheduler",
+      enabled: false,
+      conditions: null,
+    },{
+      type: "event",
+      enabled: true,
+      conditions: [{operation: "matches", field: "type", value: "io.boomerang.test"}, {operation: "matches", field: "subject", value: "australia"}],
+    },{
+      type: "github",
+      enabled: true,
+      conditions: [{operation: "in", field: "event", values: ["create", "delete"]}, {operation: "in", field: "repository", values: ["australia","img","test"]}],
+    }],
     storage: {
       activity: {
         enabled: true,
diff --git a/src/Features/Editor/Configure/Configure.tsx b/src/Features/Editor/Configure/Configure.tsx
index e4ec6201..2c72abee 100644
--- a/src/Features/Editor/Configure/Configure.tsx
+++ b/src/Features/Editor/Configure/Configure.tsx
@@ -94,27 +94,7 @@ function ConfigureContainer({ quotas, workflow, settingsRef }: ConfigureContaine
           timeout: workflow.timeout ?? null,
           retries: workflow.retries ?? null,
           labels: workflow.labels ? Object.entries(workflow.labels).map(([key, value]) => ({ key, value })) : [],
-          triggers: {
-            manual: {
-              enable: workflow.triggers?.manual?.enable ?? true,
-            },
-            event: {
-              enable: workflow.triggers?.event?.enable ?? false,
-              subject: workflow.triggers?.event?.subject ?? "",
-              type: workflow.triggers?.event?.type ?? "",
-            },
-            scheduler: {
-              enable: workflow.triggers?.scheduler?.enable ?? false,
-            },
-            webhook: {
-              enable: workflow.triggers?.webhook?.enable ?? false,
-            },
-            github: {
-              enable: workflow.triggers?.github?.enable ?? false,
-              events: workflow.triggers?.github?.events ?? [],
-              repositories: workflow.triggers?.github?.repositories ?? [],
-            },
-          },
+          triggers: workflow.triggers ?? [],
           config: workflow.config ?? [],
         }}
         validationSchema={Yup.object().shape({
@@ -136,27 +116,20 @@ function ConfigureContainer({ quotas, workflow, settingsRef }: ConfigureContaine
           name: Yup.string().required("Name is required").max(64, "Name must not be greater than 64 characters"),
           retries: Yup.number(),
           timeout: Yup.number(),
-          triggers: Yup.object().shape({
-            manual: Yup.object().shape({
-              enable: Yup.boolean(),
-            }),
-            event: Yup.object().shape({
-              enable: Yup.boolean(),
+          triggers: Yup.array().of(
+            Yup.object().shape({
               type: Yup.string(),
-              subject: Yup.string(),
-            }),
-            scheduler: Yup.object().shape({
-              enable: Yup.boolean(),
-            }),
-            webhook: Yup.object().shape({
-              enable: Yup.boolean(),
-            }),
-            github: Yup.object().shape({
-              enable: Yup.boolean(),
-              events: Yup.array().of(Yup.string()),
-              repositories: Yup.array().of(Yup.string()),
-            }),
-          }),
+              enabled: Yup.boolean(),
+              conditions: Yup.array().of(
+                Yup.object().shape({
+                  operation: Yup.string(),
+                  field: Yup.string(),
+                  value: Yup.string().optional(),
+                  values: Yup.array().of(Yup.string()).optional(),
+                })
+              ),
+            })
+          ),
         })}
       >
         {(formikProps) =>
@@ -331,8 +304,8 @@ function Configure(props: ConfigureProps) {
                     id="triggers.manual.enable"
                     data-testid="triggers.manual.enable"
                     label="Enable"
-                    onToggle={(checked: boolean) => handleOnToggleChange(checked, "triggers.manual.enable")}
-                    toggled={values.triggers.manual.enable}
+                    onToggle={(checked: boolean) => handleOnToggleChange(checked, "triggers.manual.enabled")}
+                    toggled={values.triggers.some((trigger) => trigger.type === "manual" && trigger.enabled)}
                   />
                 </div>
               </Section>
@@ -343,11 +316,11 @@ function Configure(props: ConfigureProps) {
                     id="triggers.scheduler.enable"
                     data-testid="triggers.scheduler.enable"
                     label="Enable"
-                    onToggle={(checked: boolean) => handleOnToggleChange(checked, "triggers.scheduler.enable")}
-                    toggled={values.triggers.scheduler.enable}
+                    onToggle={(checked: boolean) => handleOnToggleChange(checked, "triggers.scheduler.enabled")}
+                    toggled={values.triggers.some((trigger) => trigger.type === "scheduler" && trigger.enabled)}
                   />
                 </div>
-                {values.triggers.scheduler.enable ? (
+                {values.triggers.some((trigger) => trigger.type === "scheduler" && trigger.enabled) ? (
                   <InlineNotification
                     lowContrast
                     kind="info"
@@ -373,14 +346,14 @@ function Configure(props: ConfigureProps) {
                     <Toggle
                       id="triggers.webhook.enable"
                       label="Enable"
-                      toggled={values.triggers.webhook.enable}
+                      toggled={values.triggers.some((trigger) => trigger.type === "webhook" && trigger.enabled)}
                       onToggle={(checked: boolean) => handleOnToggleChange(checked, "triggers.webhook.enable")}
                       tooltipContent="Enable workflow to be executed by a webhook"
                       tooltipProps={{ direction: "top" }}
                       reversed
                     />
                   </div>
-                  {values.triggers.webhook.enable && (
+                  {values.triggers.some((trigger) => trigger.type === "webhook" && trigger.enabled) && (
                     <ComposedModal
                       modalHeaderProps={{
                         title: "Webhook Usage",
@@ -423,14 +396,14 @@ function Configure(props: ConfigureProps) {
                     <Toggle
                       id="triggers.event.enable"
                       label="Enable"
-                      toggled={values.triggers.event.enable}
-                      onToggle={(checked: boolean) => handleOnToggleChange(checked, "triggers.event.enable")}
+                      toggled={values.triggers.some((trigger) => trigger.type === "event" && trigger.enabled)}
+                      onToggle={(checked: boolean) => handleOnToggleChange(checked, "triggers.event.enabled")}
                       tooltipContent="Enable workflow to be triggered by received events."
                       tooltipProps={{ direction: "top" }}
                       reversed
                     />
                   </div>
-                  {values.triggers.event.enable && (
+                  {values.triggers.some((trigger) => trigger.type === "event" && trigger.enabled) && (
                     <>
                       <p className={styles.sectionDescription}>
                         The following filters will be applied to any incoming event based on the{" "}
diff --git a/src/Types/index.tsx b/src/Types/index.tsx
index b0bf0e54..7ecf27f9 100644
--- a/src/Types/index.tsx
+++ b/src/Types/index.tsx
@@ -152,27 +152,7 @@ export interface Workflow {
     date: string;
   };
   config: Array<DataDrivenInput>;
-  triggers: {
-    manual: {
-      enable: boolean;
-    };
-    event: {
-      enable: boolean;
-      subject: string;
-      type: string;
-    };
-    scheduler: {
-      enable: boolean;
-    };
-    webhook: {
-      enable: boolean;
-    };
-    github: {
-      enable: boolean;
-      events: Array<string>;
-      repositories: Array<string>;
-    };
-  };
+  triggers: Array<WorkflowTrigger>;
   templateUpgradesAvailable: boolean;
   workspaces: Array<{
     name: string;
@@ -192,6 +172,33 @@ export enum WorkflowStatus {
   Inactive = "inactive",
 }
 
+export interface WorkflowTrigger {
+  enabled: boolean;
+  type: WorkflowTriggerType;
+  conditions: Array<WorkflowTriggerCondition>;
+}
+
+export enum WorkflowTriggerType {
+  Manual = "manual",
+  Scheduler = "scheduler",
+  Event = "event",
+  Webhook = "webhook",
+  GitHub = "github",
+}
+
+export interface WorkflowTriggerCondition {
+  operation: WorkflowTriggerConditionOperation;
+  field: string;
+  value: string;
+  values: Array<string>;
+}
+
+export enum WorkflowTriggerConditionOperation {
+  Matches = "matches",
+  Equals = "equals",
+  In = "in",
+}
+
 export type WorkflowViewType = ObjectValuesToType<typeof WorkflowView>;
 export type EdgeExecutionConditionType = ObjectValuesToType<typeof EdgeExecutionCondition>;
 
@@ -746,26 +753,6 @@ export interface ConfigureWorkflowFormValues {
   timeout: number;
   retries: number;
   labels: Array<{ key: string; value: string }>;
-  triggers: {
-    manual: {
-      enable: boolean;
-    };
-    event: {
-      enable: boolean;
-      type: string;
-      subject: string;
-    };
-    scheduler: {
-      enable: boolean;
-    };
-    webhook: {
-      enable: boolean;
-    };
-    github: {
-      enable: boolean;
-      events: Array<string>;
-      repositories: Array<string>;
-    };
-  };
+  triggers: Array<WorkflowTrigger>;
   config: Array<DataDrivenInput>;
 }