# How to schedule a message

Pushwoosh makes it simple to schedule messages across multiple channels, including [push notifications](/product/messaging-channels/push-notifications), [emails](/product/messaging-channels/emails), [in-app messages](/product/messaging-channels/in-apps), [WhatsApp](/product/messaging-channels/whatsapp-messages), and [SMS](/product/messaging-channels/sms). 

Whether you're sending a one-time message, scheduling messages for specific dates, or setting up recurring campaigns, the Customer Journey Builder offers flexible options to manage your campaign timing effectively. For push notifications, you can also use the [one-time push message form](/product/messaging-channels/push-notifications/scheduled-push). For one-time emails, you can use the [one-time email form](/product/messaging-channels/emails/sending-emails/send-one-time-emails).

This guide provides step-by-step instructions for scheduling messages through the Customer Journey Builder, applicable to all supported messaging channels.

## How to schedule messages that start a communication flow

Scheduling is configured in the [**Audience-based entry**](/product/customer-journey/journey-elements/entry-elements/audience-based-entry/#entry-schedule) element via **Entry schedule**:

* **One-time entry:** users enter the journey once. Choose **Immediately** (as soon as the journey is activated) or **Schedule for a specific day** (date and time).
* **Recurring entry:** users enter repeatedly. Choose **On specific dates** (multiple dates you pick) or **Periodically** (e.g. every 1 day, every 1 week).

### Configure the entry schedule

1. Add the **Audience-based entry** element and define the users who will enter the journey. Select the **Audience source** to determine who will receive the message or [create a segment](/product/audience-data-and-segmentation/segmentation/). Once the audience is set, you can proceed to schedule the message.
2. In the **Audience-based entry** element, set **Entry schedule** and choose **One-time entry** or **Recurring entry**, then pick the option that matches when the message should be sent.
3. Set the time and timezone as described in the sections below. For details, see [Audience-based entry](/product/customer-journey/journey-elements/entry-elements/audience-based-entry/).

<Aside type="tip">
Optionally, enable **Allow users who match the segment later to enter the journey** so users who qualify after launch enter automatically. [Learn more](/product/customer-journey/journey-elements/entry-elements/audience-based-entry/#add-users-when-they-start-matching-the-segment-later).
</Aside>

### Schedule a message for a specific date and time

To send a message on a specific date and time:

1. Set **Entry schedule** to **One-time entry**, then choose **Schedule for a specific day**. Set the date and time.
2. Select the timezone:
   * **Subscriber's device timezone (default):** entry uses each subscriber's device timezone. If timezone is missing, a fallback is used. Click **Change fallback** to change it.
   * **Specific timezone:** pick a timezone from the dropdown for a fixed entry time.

<Aside type="note">
If a subscriber's scheduled entry time (in their local timezone) has already passed, they will not be included in the campaign unless you choose to let them enter immediately. [Learn more](/product/customer-journey/journey-elements/entry-elements/audience-based-entry/#schedule-for-a-specific-day).
</Aside>

Once the schedule is set, click **Apply** to confirm.

<img src="/journey-elements-audience-based-entry-2.webp" alt="Audience-based entry: Schedule for a specific day with date, time and timezone"/>

### Schedule a message for multiple specific dates

To send messages on multiple specific dates:

1. Set **Entry schedule** to **Recurring entry**, then choose **On specific dates**.
2. Pick the dates in the calendar. Click **+ Add Date** to add more dates.
3. Set the time and timezone the same way as for [Schedule for a specific day](#schedule-a-message-for-a-specific-date-and-time) (Subscriber's device timezone or Specific timezone).

<img src="/journey-elements-audience-based-entry-5.webp" alt="Audience-based entry: Recurring entry on specific dates"/>

<Aside type="note">
Subscribers whose scheduled time has already passed for a specific date will be included in the next available scheduled date.
</Aside>

Once the schedule is set, click **Apply** to confirm.

### Set up a recurring message to be sent at regular intervals

To send messages at regular intervals (e.g. daily, weekly):

1. Set **Entry schedule** to **Recurring entry**, then choose **Periodically**.
2. In **ENTRY EVERY**, set the interval (e.g. every 1 day, every 1 week) and pick the days (of the week or month, depending on the interval).
3. Set the time and timezone the same way as for [Schedule for a specific date and time](#schedule-a-message-for-a-specific-date-and-time).

<img src="/journey-elements-audience-based-entry-6.webp" alt="Audience-based entry: Recurring entry periodically with interval, selected days, time and timezone"/>

<Aside type="note">
Subscribers whose scheduled time has already passed will be included on the next scheduled day.
</Aside>

Once the schedule is set, click **Apply** to confirm.

After you've set the scheduling options, add the message element and configure the rest of your journey. Once you've reviewed all the configurations, click **Launch campaign**.

## How to schedule messages that continue a communication flow

If your scheduled message is part of an ongoing journey, you can insert a Time Delay element to control when the message is sent within the flow. For this:


1. Insert the **Time Delay** element between the preceding communication elements and the message you wish to schedule:

<video src="/shared-7.webm" title="Customer Journey Builder showing Time Delay element inserted between entry point and message" autoplay loop muted playsinline />

2. Double-click the **Time Delay** element. In the **Time Delay Option** field, select either **Specific time**:

<img src="/shared-9.webp" alt="Time Delay element configuration dialog with Specific time option"/>

or **Date**:

<img src="/shared-4.webp" alt="Time Delay element configuration dialog with Date option"/>

<Aside type="tip">
Within the **Time Delay** element, you can set other delivery conditions: waiting for fixed durations, specific days of the week, or until the user triggers a specified event. [Learn more about how to use the Time Delay element](/product/customer-journey/journey-elements/flow-controls/time-delay/).
</Aside>

## Example scenario: Setting up a recurring push notification for a fitness app

Let’s say you're running a fitness app and want to send motivational push notifications to users to keep them engaged. You decide to send the same notification every Monday at 9:00 AM, reminding users to log their workout progress.

1. **Create a basic push flow.** Add the **Audience-based entry** to the journey canvas and select an **Audience source**.

2. **Set recurring entry.** In the **Audience-based entry** element, set **Entry schedule** to **Recurring entry**, then choose **Periodically**. In **ENTRY EVERY**, set **every 1 week** and select **Monday**.

3. **Set time and timezone.** Set the time to **9:00 AM** and select **Subscriber's device timezone** so notifications are sent based on each user's local time.

4. **Review and finalize the journey.** Proceed to configure the rest of your journey and create push notification content.

<Aside type="tip" title="Example message">
* **Title:** Keep Moving! 💪

* **Message:** Hey [First Name], log your workout and stay on track with your fitness goals. Let’s make this week count! 🏋️‍♂️

<img src="/shared-32.webp" alt="Fitness app push notification preview with title and message content"/>
</Aside>

Finally, add the [**Exit**](/product/customer-journey/journey-elements/flow-controls/exit/) element to your journey. Before launching the journey, review the entire setup to ensure everything is configured correctly.

The recurring notification is now ready to remind users to log their workouts every Monday at 9:00 AM in their local timezones.