docs/Notification schedules/Personal (event-based)
time, but bent to each participant

Personal scheduling — Day N, after registration.

Personal schedules attach to the participant, not the calendar. Day 1 means the day they joined.

A personal schedule does not fire at a fixed calendar date. Instead it fires relative to the moment each participant joined your study. Two participants who enrol a week apart will each receive their Day 1 notification on their own Day 1 — not on the same Monday.

What Day N means

When you set a personal schedule, you define a start and a stop in terms of days after registration, not calendar dates. Samply translates that offset into a real timestamp for each participant individually at the moment they enrol.

Day labelActual anchor pointPractical note
Day 1The moment they joined (plus ~1 minute).Notifications set for Day 1 fire almost immediately after enrolment.
Day 2Midnight of the next calendar day in the chosen timezone.A participant who joins at 21:00 on Monday gets their Day 2 notifications on Tuesday.
Day NMidnight of the Nth calendar day after the join date.Day 14 = midnight of the 14th day counted from the join day.

The repeating pattern you choose (daily, specific weekdays, every other day) then runs between those two anchored timestamps. Samply expands the schedule against each participant's personal window and writes one queue entry per firing time.

Building a personal schedule in the form

Personal schedules use the same schedule form as all other types. The sections that differ from a standard repeating schedule are Step 6 (Start) and Step 7 (Stop).

Step 6 — When to start

Choose one of two relative-start options:

On day N after registration
Samply counts N calendar days from the join date and fires the first notification at midnight of that day. Set N = 1 to start immediately after joining; set N = 3 to leave a two-day buffer before the schedule begins.
After X days / hours / minutes from registration
An exact duration offset from the join timestamp. Use this when you need sub-day precision — for example, start 4 hours after joining rather than waiting until the next midnight.

You can also choose a fixed calendar date as the start, which turns the schedule into a hybrid: it still uses the personal stop anchor but the start is the same for everyone.

Step 7 — When to stop

The same two options apply: stop on Day N after registration, or stop after a precise duration. The stop is exclusive — a schedule set to stop on Day 15 fires its last notification at the end of Day 14.

Step 2 — The repeating interval

Within the personal window, choose a repeating pattern: every day, specific weekdays, every other day, and so on. You can also add multiple intervals to the same schedule — for example, three separate time-of-day rows (09:00, 13:00, 18:00) to send three notifications per day.

To send at random times within daily windows instead of fixed clock times, select Time window instead of specific time points. This makes the schedule both personal and randomized. See Randomized schedules for the window controls.

Timezone handling

By default, all times in a personal schedule are interpreted in the timezone you select at the top of the form. Enable Adjust to participant timezone to have Samply re-anchor each participant's times to their device timezone instead.

When participant timezone adjustment is on, a 20:00 notification fires at 20:00 in Berlin for a Berlin participant and at 20:00 in Tokyo for a Tokyo participant — each at their local evening. The device timezone is recorded at enrolment and can be updated by the participant from the app settings.

Future participants

The Recipients section of the form lets you choose between current participants only, or all future participants too. When All future participantsis checked, Samply applies the personal schedule to every new enrolment automatically — no manual action needed.

This is the setting to enable for open-recruitment studies where participants join continuously over weeks or months. Without it, participants who join after the schedule is created receive no notifications from it.

Example configurations

14-day diary study
  • Start: Day 1 after registration.
  • Stop: Day 15 after registration (end of Day 14).
  • Interval: daily at 20:00.
  • Recipients: all current and future participants.
Result: Every participant gets 14 evening pings, starting the day they join, regardless of when others enrolled.
Burst protocol — weeks 1 and 3 only
  • Schedule A — Start: Day 1, Stop: Day 8. Interval: daily at 12:00.
  • Schedule B — Start: Day 15, Stop: Day 22. Interval: daily at 12:00.
  • Both schedules target the same participants.
Result: Two independent personal schedules cover two separate weeks. The quiet week in between needs no schedule.
Intervention study — active phase from Day 3
  • Start: Day 3 after registration.
  • Stop: Day 10 after registration.
  • Interval: three times a day (09:00, 13:00, 18:00) — add three separate intervals.
Result: Participants complete a two-day baseline (Days 1–2) before the intervention notifications begin on Day 3.

Common mistakes

Setting a fixed calendar stop date instead of a relative one
If you set stop to a specific date in the past, no notifications fire for anyone who joins after that date. Use a relative stop (Day N) whenever participants join on different days.
Forgetting to check future participants
A personal schedule with only current participants selected will silently ignore everyone who joins later. For open-recruitment studies, always check All future participants.
Day 1 meaning different things in your analysis
Samply counts Day 1 as the join day. If your protocol defines Day 1 as the first full calendar day after joining, set your start to Day 2 in the form.

What to read next

Once a schedule is saved, Samply expands it into a per-participant queue of sends. See The scheduled queue to understand how to read and manage it.