diff --git a/src/platform/plugins/shared/workflows_management/public/assets/empty_state.svg b/src/platform/plugins/shared/workflows_management/public/assets/empty_state.svg
new file mode 100644
index 0000000000000..ddf93a32c69db
--- /dev/null
+++ b/src/platform/plugins/shared/workflows_management/public/assets/empty_state.svg
@@ -0,0 +1,14 @@
+
diff --git a/src/platform/plugins/shared/workflows_management/public/components/index.ts b/src/platform/plugins/shared/workflows_management/public/components/index.ts
new file mode 100644
index 0000000000000..8bb805c497465
--- /dev/null
+++ b/src/platform/plugins/shared/workflows_management/public/components/index.ts
@@ -0,0 +1,10 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the "Elastic License
+ * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
+ * Public License v 1"; you may not use this file except in compliance with, at
+ * your election, the "Elastic License 2.0", the "GNU Affero General Public
+ * License v3.0 only", or the "Server Side Public License, v 1".
+ */
+
+export { WorkflowsEmptyState } from './workflows_empty_state';
diff --git a/src/platform/plugins/shared/workflows_management/public/components/workflows_empty_state/index.ts b/src/platform/plugins/shared/workflows_management/public/components/workflows_empty_state/index.ts
new file mode 100644
index 0000000000000..8bb805c497465
--- /dev/null
+++ b/src/platform/plugins/shared/workflows_management/public/components/workflows_empty_state/index.ts
@@ -0,0 +1,10 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the "Elastic License
+ * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
+ * Public License v 1"; you may not use this file except in compliance with, at
+ * your election, the "Elastic License 2.0", the "GNU Affero General Public
+ * License v3.0 only", or the "Server Side Public License, v 1".
+ */
+
+export { WorkflowsEmptyState } from './workflows_empty_state';
diff --git a/src/platform/plugins/shared/workflows_management/public/components/workflows_empty_state/workflows_empty_state.test.tsx b/src/platform/plugins/shared/workflows_management/public/components/workflows_empty_state/workflows_empty_state.test.tsx
new file mode 100644
index 0000000000000..356b079f3d228
--- /dev/null
+++ b/src/platform/plugins/shared/workflows_management/public/components/workflows_empty_state/workflows_empty_state.test.tsx
@@ -0,0 +1,84 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the "Elastic License
+ * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
+ * Public License v 1"; you may not use this file except in compliance with, at
+ * your election, the "Elastic License 2.0", the "GNU Affero General Public
+ * License v3.0 only", or the "Server Side Public License, v 1".
+ */
+
+import { I18nProvider } from '@kbn/i18n-react';
+import { fireEvent, render, screen } from '@testing-library/react';
+import React from 'react';
+import { WorkflowsEmptyState } from './workflows_empty_state';
+
+// Mock useKibana hook
+jest.mock('@kbn/kibana-react-plugin/public', () => ({
+ useKibana: () => ({
+ services: {
+ http: {
+ basePath: {
+ prepend: (path: string) => `/mock-base-path${path}`,
+ },
+ },
+ },
+ }),
+}));
+
+const renderWithIntl = (component: React.ReactElement) => {
+ return render({component});
+};
+
+describe('WorkflowsEmptyState', () => {
+ it('renders the empty state with title and description', () => {
+ renderWithIntl();
+
+ expect(screen.getByText('Get Started with Workflows')).toBeInTheDocument();
+ expect(screen.getByText(/Workflows let you automate and orchestrate/)).toBeInTheDocument();
+ expect(screen.getByText(/Start by creating a workflow/)).toBeInTheDocument();
+ });
+
+ it('renders the create button when user can create workflows', () => {
+ const onCreateWorkflow = jest.fn();
+ renderWithIntl(
+
+ );
+
+ const createButton = screen.getByText('Create a new workflow');
+ expect(createButton).toBeInTheDocument();
+
+ fireEvent.click(createButton);
+ expect(onCreateWorkflow).toHaveBeenCalledTimes(1);
+ });
+
+ it('does not render the create button when user cannot create workflows', () => {
+ renderWithIntl();
+
+ expect(screen.queryByText('Create a new workflow')).not.toBeInTheDocument();
+ });
+
+ it('does not render the create button when onCreateWorkflow is not provided', () => {
+ renderWithIntl();
+
+ expect(screen.queryByText('Create a new workflow')).not.toBeInTheDocument();
+ });
+
+ it('renders the footer with documentation link', () => {
+ renderWithIntl();
+
+ expect(screen.getByText('Need help?')).toBeInTheDocument();
+ expect(screen.getByText('Read documentation')).toBeInTheDocument();
+ });
+
+ it('renders the illustration image', () => {
+ renderWithIntl();
+
+ const images = screen.getAllByRole('presentation');
+ const mainImage = images.find((img) => img.tagName === 'IMG');
+ expect(mainImage).toBeInTheDocument();
+ expect(mainImage).toHaveAttribute(
+ 'src',
+ '/mock-base-path/plugins/workflowsManagement/assets/empty_state.svg'
+ );
+ });
+});
diff --git a/src/platform/plugins/shared/workflows_management/public/components/workflows_empty_state/workflows_empty_state.tsx b/src/platform/plugins/shared/workflows_management/public/components/workflows_empty_state/workflows_empty_state.tsx
new file mode 100644
index 0000000000000..c30757321fd62
--- /dev/null
+++ b/src/platform/plugins/shared/workflows_management/public/components/workflows_empty_state/workflows_empty_state.tsx
@@ -0,0 +1,90 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the "Elastic License
+ * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
+ * Public License v 1"; you may not use this file except in compliance with, at
+ * your election, the "Elastic License 2.0", the "GNU Affero General Public
+ * License v3.0 only", or the "Server Side Public License, v 1".
+ */
+
+import { EuiButton, EuiEmptyPrompt, EuiImage, EuiLink, EuiTitle } from '@elastic/eui';
+import { FormattedMessage } from '@kbn/i18n-react';
+import { useKibana } from '@kbn/kibana-react-plugin/public';
+import React from 'react';
+
+interface WorkflowsEmptyStateProps {
+ onCreateWorkflow?: () => void;
+ canCreateWorkflow?: boolean;
+}
+
+export function WorkflowsEmptyState({
+ onCreateWorkflow,
+ canCreateWorkflow = false,
+}: WorkflowsEmptyStateProps) {
+ const { http } = useKibana().services;
+ return (
+
+ }
+ title={
+