> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tracklysms.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Campaign Scheduling

> Configure when your campaigns send

Trackly SMS offers flexible scheduling options for your campaigns, from immediate sends to complex recurring patterns.

## Schedule Types

### Send Now

"Send Now" is a one-time scheduled send with the `send_date` set to the current time. There is no distinct "Send Now" mode -- it is a convenience shortcut:

1. Create your campaign
2. Select **Send Now**
3. Click **Schedule**
4. A one-time schedule is created with `send_date` set to now and messages start queuing immediately

"Send now" means messages start queuing. Actual delivery depends on queue size and provider capacity.

### Scheduled Send

Send at a specific future time:

1. Select **Scheduled**
2. Pick the date and time
3. Choose timezone (your timezone or contact's local timezone)
4. Click **Schedule**

The campaign will trigger at the specified time.

### Recurring Send

Send on a repeating schedule:

1. Select **Recurring**
2. Set the send time
3. Select days of the week
4. Set a start date and end date (both are required for recurring schedules)

## Recurring Configuration

### Days of Week

Select which days the campaign should run:

```
☑️ Monday
☐ Tuesday
☑️ Wednesday
☐ Thursday
☑️ Friday
☐ Saturday
☐ Sunday
```

This sends every Monday, Wednesday, and Friday.

### Time

Set the send time in 24-hour format:

```
Send time: 10:00
```

### Date Range (Required)

Recurring schedules **require** both a start date and an end date:

```
Start date: 2024-01-01
End date: 2024-03-31
```

The campaign only runs within this date range. Both dates must be provided when configuring a recurring schedule.

## Spread Duration

Spread your sends over a time window instead of sending all messages at the exact `send_time`. Configure `spread_duration_minutes` (0-120 minutes) to stagger delivery:

```
Send at: 10:00 AM
Spread duration: 60 minutes
→ Messages delivered between 10:00 AM and 11:00 AM
```

This reduces carrier throttling and improves deliverability for large campaigns.

<Warning>
  When using **local timezone** with a spread duration, the system validates that the spread window won't push past the **9 PM TCPA limit**. A schedule with `send_time: 20:30` and `spread_duration_minutes: 60` will be rejected because it could deliver messages after 9 PM.
</Warning>

## Local Timezone Sending

Target contacts at their optimal local time:

<Tabs>
  <Tab title="Fixed Timezone">
    ```
    Send at: 10:00 AM EST
    ```

    All contacts receive at 10 AM Eastern, regardless of their location.
  </Tab>

  <Tab title="Contact's Timezone">
    ```
    Send at: 10:00 AM (local)
    ```

    * NYC contact: 10:00 AM ET
    * Chicago contact: 10:00 AM CT
    * LA contact: 10:00 AM PT
  </Tab>
</Tabs>

### How Local Timezone Works

1. The contact's timezone is stored on the Contact record
2. The campaign triggers in rolling waves across timezones
3. Eastern contacts get it first, Pacific contacts later

Contacts without timezone data receive messages in your account's default timezone.

## Frequency Capping

Prevent over-messaging with frequency caps:

```
Skip contacts who received a message within: 24 hours
```

### How It Works

When the campaign evaluates a contact:

1. Check when they last received a message
2. If within the cap window, skip them
3. If outside the window, include them

### Recommendations

| Use Case             | Cap      |
| -------------------- | -------- |
| Daily campaigns      | 24 hours |
| Every-other-day      | 48 hours |
| Weekly digest        | 6 days   |
| Aggressive promotion | 12 hours |

## Scheduling Best Practices

### Optimal Send Times

General guidelines (test for your audience):

| Day      | Best Times    | Avoid                   |
| -------- | ------------- | ----------------------- |
| Weekdays | 10 AM - 2 PM  | Before 8 AM, after 9 PM |
| Saturday | 10 AM - 12 PM | Very early, very late   |
| Sunday   | 11 AM - 1 PM  | Morning before 10 AM    |

### Time Zone Considerations

* **B2C**: Local timezone is usually best
* **B2B**: Fixed timezone (business hours) may work better
* **Promotional**: Consider recipient's likely activity times

### Avoiding Conflicts

When running multiple campaigns:

1. Space sends at least 2-4 hours apart
2. Use frequency capping to prevent double-sending
3. Check for overlapping schedules

## Campaign Calendar

The calendar view for scheduled campaigns is not yet available.

## Pausing and Resuming

### Pause a Campaign

Pausing a campaign sets its schedule status to `off`. To temporarily stop a recurring campaign:

1. Find the campaign in the list
2. Click **Pause** (this sets `status='off'` on the schedule)
3. Campaign stops sending new messages

### Resume a Campaign

1. Click **Resume** on a paused (`off`) campaign
2. The status is set back to `on` and it continues from the next scheduled occurrence

<Note>
  Pausing (setting status to `off`) does not cancel messages already in the queue -- it only prevents new messages from being queued.
</Note>

## Editing Scheduled Campaigns

You can edit scheduled campaigns before they send:

| What            | Editable?                      |
| --------------- | ------------------------------ |
| Audience        | ✅ Yes                          |
| Creative/Offers | ✅ Yes                          |
| Send time       | ✅ Yes                          |
| Sending list    | ⚠️ May affect pending messages |

Editing a recurring campaign affects all future occurrences. Past sends are unchanged.

## Canceling a Campaign

To cancel a scheduled send:

1. Find the campaign
2. Click **Cancel** or **Delete**
3. Confirm cancellation

Messages already in the queue may still send. Create a support ticket from your dashboard (**Support > New Ticket**) to cancel queued messages.

## Next Steps

<CardGroup cols={2}>
  <Card title="A/B Testing" icon="flask" href="/guides/campaigns/ab-testing">
    Split test your messages
  </Card>

  <Card title="Message Execution" icon="paper-plane" href="/guides/campaigns/execution">
    How sending works
  </Card>
</CardGroup>
