---
title: Create a Scheduled Campaign
description: "## Goal Create a campaign that shows a layout at a planned time or on a recurring schedule. ## When to Use This Use a scheduled campaign when content should appear because of time, such as: - shift handover messages…"
url: "https://twinnoverse.com/docs/create-a-scheduled-campaign/"
updated: "2026-06-18"
category: Dashboard Builder / Dashboard Builder Guides
---

# Create a Scheduled Campaign

## Goal

Create a campaign that shows a layout at a planned time or on a recurring schedule.

## When to Use This

Use a scheduled campaign when content should appear because of time, such as:

- shift handover messages
- lunch or break content
- recurring safety reminders
- planned maintenance notices

Use a scheduled campaign for **planned interruption**.
If content should appear because something happened, use **Event Triggers** instead.

---

## Before You Start

Make sure you already have:

- a saved layout for the campaign content
- at least one claimed device if you want to test on a real screen
- a normal playlist assigned to that device if you want to confirm playback returns to the baseline afterward

The campaign sits on top of the device's normal playlist behavior.

---

## Step 1: Create the Campaign Layout

1. Create the layout that the campaign will show.
2. Save it before opening **Campaigns**.

When building the layout:

- design for a **16:9 landscape screen**
- keep the message simple because campaign content is usually temporary
- use [Choosing the Right Widgets](https://twinnoverse.com/docs/how-to-choose-the-right-dashboard-widgets/) if you are unsure which widget type fits the message

---

## Step 2: Open Scheduled Campaigns

1. Open **Campaigns**.
2. Stay in the **Scheduled Campaigns** section.
3. Click **Create Campaign**.

---

## Step 3: Fill in the Basic Campaign Settings

Enter the main campaign fields:

1. **Campaign name**
2. **Delivery mode**
   - `fullscreen`
   - `overlay`
3. **Layout**
4. **Display duration**
5. **Priority**
6. **Status**

### What These Fields Mean

**Delivery mode**

- `fullscreen` replaces the normal screen while the campaign is active
- `overlay` appears above the normal screen without fully replacing it

**Display duration**

This is how long the campaign layout stays visible when it is rendered.

In the current product:

- duration must be a whole number greater than `0`
- the default campaign display duration is usually `10` seconds

**Priority**

- higher number = higher priority
- use higher priority only when you really need one campaign to win over another

**Status**

Available statuses are:

- `draft`
- `active`
- `paused`
- `archived`

If you are still preparing the campaign, keep it in **draft** until you are ready.

---

## Step 4: Set the Schedule Window

The schedule fields use the **local time on the admin side**, then Twinnoverse converts that to UTC when saving.

There are two schedule modes:

- **one-time**
- **recurring**

### One-Time Campaign

For a one-time campaign:

1. enter the **start date**
2. enter the **start time**
3. enter the **window minutes**

Important behavior:

- for one-time campaigns, the UI calculates the end time automatically from:
  - `start time + window minutes`
- window minutes must be at least `1`

This means a one-time campaign is active only during that time window.

### Recurring Campaign

Enable recurrence only if the campaign should repeat.

For a recurring campaign:

1. turn on **recurring**
2. enter the **start date and time**
3. enter the **end date and time**
4. choose a recurrence pattern
5. review the generated rule summary

In the current product, recurrence supports:

- `minutely`
- `hourly`
- `daily`
- `weekly`
- `custom`

For recurring campaigns:

- the end date/time must be after the start date/time
- the recurrence interval must be a whole number greater than or equal to `1`
- daily and weekly rules use the start time as the recurring time

---

## Step 5: Choose the Recurrence Pattern

Use a simple preset when possible.

### Hourly

Use this when the campaign should repeat every hour or every few hours.

### Minutely

Use this for repeated reminders in short intervals.

### Daily

Use this for content that should appear every day at the same time.

### Weekly

Use this for content that should repeat on a specific weekday.

### Custom

Use this only if you need to edit the recurrence rule directly.

The current campaign form stores the recurrence rule as a rule string. The presets help build that rule for you automatically.

---

## Step 6: Choose the Target

Choose one target mode:

- **all devices**
- **selected devices**

In the current implementation, scheduled campaigns target:

- `all_devices`
- `device` list

Use **all devices** when the content is organization-wide.
Use **selected devices** when only certain screens should receive the campaign.

If you choose selected devices, you must select at least one device before saving.

---

## Step 7: Save and Activate

1. Save the campaign.
2. Set it to **active** when ready.

If you want to test safely:

- create the campaign in **draft**
- review all fields
- set a near-future schedule
- activate it only when you are ready to verify playback

---

## Step 8: Test on a Device

Check the real device behavior:

1. wait for the campaign window to begin
2. confirm the layout appears on the correct screen
3. confirm the delivery mode behaves as expected
4. confirm playback returns to the normal playlist after the campaign ends

Expected runtime behavior:

- fullscreen campaigns preempt normal playback
- overlay campaigns appear on top of the current content
- when the campaign ends, the device returns to its normal playlist

---

## Important Distinction: Window vs Display Duration

These are not the same thing:

- **schedule window** = when the campaign is allowed to run
- **display duration** = how long the campaign layout stays visible when it is shown

Example:

- campaign starts at `12:00`
- one-time window is `30` minutes
- display duration is `10` seconds

This means the campaign is eligible during the `12:00` to `12:30` window, while each campaign render uses the configured display duration.

---

## Best Practices

- use **fullscreen** for major interruptions
- use **overlay** for lighter messaging
- keep campaign layouts simple and readable
- test with one device before broad rollout
- use near-future times when testing
- avoid too many overlapping campaigns

## Avoid

- setting a campaign to `active` before the schedule is verified
- using very short durations for content that needs time to read
- using fullscreen campaigns during critical monitoring periods unless necessary
- treating campaigns as a replacement for normal playlist planning
