diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/types/WorkflowDiagram.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/types/WorkflowDiagram.ts
index 6b71cd1935e..201054b4ff6 100644
--- a/packages/twenty-front/src/modules/workflow/workflow-diagram/types/WorkflowDiagram.ts
+++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/types/WorkflowDiagram.ts
@@ -65,6 +65,7 @@ export type WorkflowDiagramStepNodeData =
nodeType: 'action';
actionType: WorkflowActionType;
name: string;
+ logicFunctionId?: string;
runStatus?: WorkflowRunStepStatus;
hasNextStepIds: boolean;
stepId: string;
diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateNodesAndEdgesForDefaultNode.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateNodesAndEdgesForDefaultNode.ts
index eaa4709b1af..f87fbd06793 100644
--- a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateNodesAndEdgesForDefaultNode.ts
+++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/generateNodesAndEdgesForDefaultNode.ts
@@ -47,6 +47,9 @@ export const generateNodesAndEdgesForDefaultNode = ({
nodeType: 'action',
actionType: step.type,
name: step.name,
+ ...(step.type === 'LOGIC_FUNCTION'
+ ? { logicFunctionId: step.settings.input.logicFunctionId }
+ : {}),
hasNextStepIds:
isDefined(step.nextStepIds) && step.nextStepIds.length > 0,
stepId: step.id,
diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/workflow-nodes/components/WorkflowDiagramStepNodeIcon.tsx b/packages/twenty-front/src/modules/workflow/workflow-diagram/workflow-nodes/components/WorkflowDiagramStepNodeIcon.tsx
index 3f3e538d6da..4a19b81d288 100644
--- a/packages/twenty-front/src/modules/workflow/workflow-diagram/workflow-nodes/components/WorkflowDiagramStepNodeIcon.tsx
+++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/workflow-nodes/components/WorkflowDiagramStepNodeIcon.tsx
@@ -1,5 +1,6 @@
import { type WorkflowDiagramStepNodeData } from '@/workflow/workflow-diagram/types/WorkflowDiagram';
import { getWorkflowNodeIconKey } from '@/workflow/workflow-diagram/utils/getWorkflowNodeIconKey';
+import { WorkflowDiagramStepNodeLogicFunctionIcon } from '@/workflow/workflow-diagram/workflow-nodes/components/WorkflowDiagramStepNodeLogicFunctionIcon';
import { assertUnreachable } from 'twenty-shared/utils';
import { useIcons } from 'twenty-ui-deprecated/display';
import { ThemeContext } from 'twenty-ui-deprecated/theme-constants';
@@ -43,6 +44,13 @@ export const WorkflowDiagramStepNodeIcon = ({
/>
);
}
+ case 'LOGIC_FUNCTION': {
+ return (
+
+ );
+ }
case 'FORM': {
return ;
}
diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/workflow-nodes/components/WorkflowDiagramStepNodeLogicFunctionIcon.tsx b/packages/twenty-front/src/modules/workflow/workflow-diagram/workflow-nodes/components/WorkflowDiagramStepNodeLogicFunctionIcon.tsx
new file mode 100644
index 00000000000..7cb9ba221e9
--- /dev/null
+++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/workflow-nodes/components/WorkflowDiagramStepNodeLogicFunctionIcon.tsx
@@ -0,0 +1,38 @@
+import { AppChip } from '@/applications/components/AppChip';
+import { logicFunctionsSelector } from '@/logic-functions/states/logicFunctionsSelector';
+import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue';
+import { getActionIcon } from '@/workflow/workflow-steps/workflow-actions/utils/getActionIcon';
+import { useContext } from 'react';
+import { isDefined } from 'twenty-shared/utils';
+import { useIcons } from 'twenty-ui-deprecated/display';
+import { ThemeContext } from 'twenty-ui-deprecated/theme-constants';
+
+export const WorkflowDiagramStepNodeLogicFunctionIcon = ({
+ logicFunctionId,
+}: {
+ logicFunctionId?: string;
+}) => {
+ const { theme } = useContext(ThemeContext);
+ const { getIcon } = useIcons();
+ const logicFunctions = useAtomStateValue(logicFunctionsSelector);
+
+ const applicationId = isDefined(logicFunctionId)
+ ? logicFunctions.find(
+ (logicFunction) => logicFunction.id === logicFunctionId,
+ )?.applicationId
+ : undefined;
+
+ if (isDefined(applicationId)) {
+ return ;
+ }
+
+ const FallbackIcon = getIcon(getActionIcon('LOGIC_FUNCTION'));
+
+ return (
+
+ );
+};