Delay steps can be inserted at any stage of your workflow execution, they can happen after or before any action. The workflow execution will be halted for the given amount of time and then resumed to the next step in the flow.The action can also be skipped using the skip parameter conditionally to allow more complex usecases of when to wait and when to send an email immediately.
Delay with skip condition
Delay and Inbox step
Here, we are delaying the execution of the next step by 1 day and skipping the delay step if the isCriticalMessage function returns true.
Here, we are delaying the execution of the in-app step by 30 minutes and sending the in-app notification only if the subscriber has goalReminderInAppAllowed set to true for subscriber. If during 30 minutes delay window, subscriber sets goalReminderInAppAllowed to false, the in-app step will be skipped.
export const goalReminderInAppAfterDelay = workflow( 'goal-reminder-in-app-after-delay', async ({ step, subscriber }) => { await step.delay('delay-step', async () => { return { type: 'regular', amount: 30, unit: 'minutes', }; }); await step.inApp( 'in-app-step', async () => { return { subject: `Don't Forget Your Fitness Goals Today!`, body: `Hey ${subscriber.firstName}, it's been a while since you logged your last activity. Keep up the momentum and complete your workout to stay on track with your goals!`, }; }, { skip: () => subscriber.data?.goalReminderInAppAllowed === false, } ); });
Changing the step content after triggering the workflow with delay step will not affect the
existing pending delayed notification content.