Scheduling and campaigns

Sends at a fixed time, at each user's local time, and recurring sends.

Schedule types (schedule.type)

Type Fields Sends
now — Immediately (default)
at sendAt, timezone At that date and time. Without a zone, your company's is used
local_time date, time At that time in each device's zone. It's spread over ~26 hours, as that time arrives in each zone

Options:

  • windowMinutes: spreads the send over a window, so opens don't overload your server;
  • expireAt: don't send after that time.

You can schedule up to 365 days ahead.

"schedule": { "type": "local_time", "date": "2026-11-28", "time": "09:00" }

A scheduled send can be edited, cancelled or sent now (POST /v1/notifications/{id}/send-now) as long as it hasn't started.

Recurring campaigns

POST /v1/campaigns with:

  • name;
  • the notification (target and content);
  • the recurrence:
Field Example
freq daily, weekly, monthly
interval 2 = every 2 weeks
weekdays ["mon","thu"]
monthDay or monthWeek 15, or { "nth": -1, "weekday": "fri" } (last Friday)
time, timezone "09:00", "America/New_York"
startDate, endDate, count The campaign's limits

Each occurrence creates a normal notification, with its own history and analytics. Campaigns can be paused and resumed.

Errors

  • 2011: invalid schedule (past date, beyond the limit or missing fields).
  • 2012: invalid time zone. Use IANA names, such as America/New_York.
  • 3004: your plan doesn't include scheduling, local time or recurrences.