Skip to main content

Scheduled email

Outcome

A dashboard view you care about lands in your team's inbox on the configured cadence as a PDF, with a per-recipient list and a sensible quiet-hours rule.

Prerequisites

ScopeWhat it lets you do
reports.dashboard.writeSave schedules on views
reports.email.sendSend / un-send schedules

How rendering works

The scheduler is process-level (not pg-boss) — it polls every minute or so and fires on the schedule. Rendering uses headless Chromium to produce a faithful copy of the dashboard view.

Setting up a schedule

  1. Open the view you want to schedule. View picker → Schedule email.

  2. Pick frequency:

    FrequencyExamples
    DailyWeekday-only, weekend-only, all-week.
    WeeklyMondays at 7am, Fridays at end-of-day.
    MonthlyFirst business day.
    CronExpert mode.
  3. Pick recipients:

    • Distribution list (e.g. billing-team@).
    • Individual users.
    • Role groups (e.g. all supervisors).
  4. Pick PDF options:

    OptionUse
    Page sizeLetter, A4.
    OrientationPortrait, landscape.
    Color themeLight (default), Dark.
    Cover pageYes / no.
  5. Pick quiet-hours:

    QuietEffect
    NoneSend any time.
    Holidays onlySkip US/UK holidays (tenant-configured).
    Off-hours windowSkip weekends + nights.
  6. Save. The schedule activates immediately; the next firing time is shown.

Managing schedules

/admin/dashboard-schedules lists every schedule:

ColumnMeaning
ViewThe dashboard view rendered.
CadenceWhen it fires.
RecipientsList size.
Last sentLast successful send.
Last statusSENT, FAILED.

Click into a row → run history + edit.

Pause / unpause

Use Pause when:

  • You're rebuilding the underlying view (avoid sending half-built).
  • A recipient list needs cleanup.
  • You're going on extended leave (avoid filling inboxes).

Pause stops firing; resume continues without backfilling missed runs.

Per-recipient overrides

If a recipient wants:

  • A different cadence (weekly vs daily) → make a separate schedule.
  • A subset of widgets → make a different view + schedule on that.
  • No PDF, just a link → the schedule has a Link only mode.

Validation

CheckExpected
Schedule fires at configured timeYes; logged.
PDF renders with the dashboard's filtersYes.
Quiet-hours skips firingsYes; logged as SKIPPED.
Pause stops firingYes; resume continues.

Troubleshooting

SymptomCauseFix
Email never arrivesSMTP credentials, recipient bouncedCheck the schedule's run history.
PDF is blankRender timeout, view loaded too slowlyIncrease render timeout, or simplify the view.
Sent twiceDuplicate firing during retryAudit log shows both; ping support.
Holidays not skippedTenant holiday calendar emptyAdmin → tenant calendar.

Where to next