diff --git a/mailpoet/assets/js/src/automation/testing.tsx b/mailpoet/assets/js/src/automation/testing.tsx
index cca99d2a80..0e25be0005 100644
--- a/mailpoet/assets/js/src/automation/testing.tsx
+++ b/mailpoet/assets/js/src/automation/testing.tsx
@@ -1,3 +1,4 @@
+import { ReactNode } from 'react';
import { useMutation } from './api';
import { id } from './id';
@@ -68,7 +69,15 @@ export function CreateTestingWorkflowButton(): JSX.Element {
);
}
-export function CreateWorkflowFromTemplateButton(): JSX.Element {
+type TemplateButtonProps = {
+ template: string;
+ children?: ReactNode;
+};
+
+export function CreateWorkflowFromTemplateButton({
+ template,
+ children,
+}: TemplateButtonProps): JSX.Element {
const [createWorkflowFromTemplate, { loading, error }] = useMutation(
'workflows/create-from-template',
{
@@ -85,14 +94,14 @@ export function CreateWorkflowFromTemplateButton(): JSX.Element {
await createWorkflowFromTemplate({
body: JSON.stringify({
name: `Test from template ${new Date().toISOString()}`,
- template: 'delayed-email-after-signup',
+ template,
}),
});
window.location.reload();
}}
disabled={loading}
>
- Create testing workflow from template
+ {children}
{error && (
{error?.data?.message ?? 'An unknown error occurred'}
diff --git a/mailpoet/lib/Automation/Engine/Builder/CreateWorkflowFromTemplateController.php b/mailpoet/lib/Automation/Engine/Builder/CreateWorkflowFromTemplateController.php
index 4a43080f97..94ba515e53 100644
--- a/mailpoet/lib/Automation/Engine/Builder/CreateWorkflowFromTemplateController.php
+++ b/mailpoet/lib/Automation/Engine/Builder/CreateWorkflowFromTemplateController.php
@@ -10,7 +10,7 @@ use MailPoet\UnexpectedValueException;
class CreateWorkflowFromTemplateController {
/** @var WorkflowStorage */
private $storage;
-
+
/** @var WorkflowBuilder */
private $templates;
@@ -30,6 +30,9 @@ class CreateWorkflowFromTemplateController {
case 'delayed-email-after-signup':
$workflow = $this->templates->delayedEmailAfterSignupWorkflow($name);
break;
+ case 'welcome-email-sequence':
+ $workflow = $this->templates->welcomeEmailSequence($name);
+ break;
default:
throw UnexpectedValueException::create()->withMessage('Template not found.');
}
diff --git a/mailpoet/lib/Automation/Integrations/MailPoet/Templates/WorkflowBuilder.php b/mailpoet/lib/Automation/Integrations/MailPoet/Templates/WorkflowBuilder.php
index e9e4f1f208..7cd419a3c7 100644
--- a/mailpoet/lib/Automation/Integrations/MailPoet/Templates/WorkflowBuilder.php
+++ b/mailpoet/lib/Automation/Integrations/MailPoet/Templates/WorkflowBuilder.php
@@ -48,6 +48,32 @@ class WorkflowBuilder {
return new Workflow($name, $steps);
}
+ public function welcomeEmailSequence(string $name): Workflow {
+ $triggerStep = $this->segmentSubscribedTriggerStep();
+
+ $firstWaitStep = $this->waitStep(60 * 60);
+ $triggerStep->setNextStepId($firstWaitStep->getId());
+
+ $sendFirstEmailStep = $this->sendEmailActionStep(1);
+ $firstWaitStep->setNextStepId($sendFirstEmailStep->getId());
+
+ $secondWaitStep = $this->waitStep(3 * 60 * 60);
+ $sendFirstEmailStep->setNextStepId($secondWaitStep->getId());
+
+ $sendSecondEmailStep = $this->sendEmailActionStep(2);
+ $secondWaitStep->setNextStepId($sendSecondEmailStep->getId());
+
+ $steps = [
+ $triggerStep,
+ $firstWaitStep,
+ $sendFirstEmailStep,
+ $secondWaitStep,
+ $sendSecondEmailStep,
+ ];
+
+ return new Workflow($name, $steps);
+ }
+
private function waitStep(int $seconds): Step {
return new Step($this->uniqueId(), Step::TYPE_ACTION, $this->waitAction->getKey(), null, [
'seconds' => $seconds,