Scheduler & Smart Alerts

Configure how and when a report is delivered — and make delivery conditional so it only arrives when it matters.

A short animated walkthrough that plays by itself. Use the chapter bar to jump to a step, or open it on its own page.

A subscription is a scheduled delivery of a report. Turn on Use as alert and the same subscription becomes a smart alert: it still runs on the schedule, but only sends when the conditions you set are met.

ℹ️ Requires Scheduler Access Creating subscriptions requires scheduler access, granted per user on the Users screen.

Creating a Subscription

Open Subscriptions from the report's Advanced actions, or Create Subscription from a visual's ☰ menu.

Schedule

SettingOptions
FrequencyEvery Minute, Hourly, Daily, Monthly
TimeThe hour to send, in 24-hour format. Not used for minute or hourly frequencies.
Minute GranularityFor minute-based schedules: every 1, 2, 3, 5, 10, 20, or 30 minutes.
DaysFor daily schedules, pick the weekdays — M T W T F S S.
DatesFor monthly schedules, pick the days of the month.
💡 Combining Schedules One report can carry several subscriptions. Weekday mornings plus an extra Monday midday run is two subscriptions on the same report, not one complicated schedule.

Schedule Window

Under Advanced, a Start Date and End Date bound the whole schedule. It defaults to the next year from today, and can be extended by another year at any time.

Delivery

SettingOptions
Send viaEmail, Telegram, or Webhook
SenderThe instance default, or a specific communication channel
RecipientsWho receives it
Add recipients asEmail only. BCC (the default) hides recipients from each other; the email's To line shows the sender's address. To lists every recipient on the To line, so everyone can see who else received it and reply to all. Subscriptions saved before this option existed send as BCC. When recipients come from a table column, each row's recipients get their own email, so To only shows the addresses from that row.
Send with custom msgTurn on to write your own Subject and Content for the delivery

Grouping Recipients by Data

Group updates on attribute splits one subscription into an individual delivery per distinct value of a chosen attribute — so each region's manager receives their own region's figures from a single configured subscription rather than one subscription per region.

Running Once Per Filter Value

Run individually for each value of a filter goes further: it re-runs the whole report once per value of a filter component on the dashboard, sending a separate update each time. The report each recipient receives is genuinely filtered to their value, not a slice of one shared render.

SettingMeaning
FilterWhich filter component to iterate. Dropdown, single-select, and list filters are eligible.
Values to run individually forA comma-separated list, for example North, South, East. Leave it empty to run for every value currently in that filter.
💡 Leave the Values Empty An empty list resolves the filter's values fresh on every run. Add a new region to your data and it is included automatically — a fixed list would silently keep skipping it.

Looking Up Each Value's Recipient

Running per value is only half the problem; each run still has to reach the right person. The Sender visual (recipient lookup) solves that by reading recipients out of your own data.

Point it at a table visual on the dashboard holding two columns — one matching the filter value, one holding the contact — and pick each:

SettingMeaning
VisualA table with value and recipient columns. Only table visuals can be read back this way.
Column matching the filter valueJoined against the value being run.
Column with the recipient contactThe email, phone, or webhook contact to deliver to.
💡 The Recipient List Maintains Itself Because recipients come from a table in the report, the routing is data, not configuration. Someone changes owner in the source system and the next run goes to the new owner — no one has to remember to edit the subscription.

Webhook Delivery

A webhook subscription calls a URL as a GET request, with an optional custom parameter — for wiring PersivX into another system rather than into someone's inbox. To send a POST request with a JSON body instead, pick a webhook communication channel set up for POST in Sender. The channel then supplies the URL and body.

Attachments & Format

OptionWhat it does
Attach Report LinkInclude a link back to the report. On by default; a custom link can be supplied instead of the default one.
Attach data in excelAttach the data as a spreadsheet, one sheet per table, formatted like a download from the report: filter buttons on the header row, the header frozen in place (and pinned columns, where the table has them), merged cells and row shading. Tables inside a Tab visual are included from every tab the subscription's owner can access, in tab order, even tabs that load only when opened. Tables in a section marked Skip from exports are left out. You name the attachment, and a date is added to the file name: today's date (the day it is sent) by default, or yesterday's if you set Date to append to Yesterday, which suits a morning email covering the previous day. For example, Sales 19-10-2026.xlsx.
Attach ScreenshotRender the report as an image and include it.

Screenshots have their own options:

  • Add as attachment as well — include the image as a file, not only inline
  • Skip screenshot in email body (attachment only) — send the image only as an attachment, with nothing inline. Turning it on also turns on Add as attachment as well, and the image is always attached while it is on. Email only: Telegram still sends the image. Combined with Send Screenshot only, the email keeps just your message text, with no header, report name or report link, and the image attached
  • Send Screenshot only — strip the header, report name, and report link, leaving just the image
  • Full table screenshot — capture the whole table rather than the visible portion, up to 500 rows
  • Orientation — Portrait or Landscape
  • Screenshot browser size — an explicit Width and Height in pixels for the browser that renders the capture. Both default to Auto
💡 When to Set a Size Leave it on Auto unless the delivered image isn't capturing what you expect. A wide dashboard clipped on the right, or a tall one cut off at the bottom, is the case for setting an explicit size — you are choosing the viewport the report is rendered into, so a larger one fits more in.
ℹ️ Excel Attachment Requires Export Rights The data attachment option appears only where you have data-export permission on the report.

Run With a Saved View

Under Advanced, Run with saved view sends the report as it appears under a specific saved state, rather than with its default filters. This is how one report serves several audiences: save a view per audience, then point a subscription at each.

Screenshot Timeout

Under Advanced, Screenshot timeout (seconds) sets how long this subscription's runs wait for the report to load before capturing it. Leave it blank to use the server default (30 seconds unless your administrator has changed it).

The run waits up to that long for the report to finish loading, then captures whatever has loaded by then. So a slow report that arrives with empty or half-drawn visuals is the case for raising it. If the page itself doesn't open within the timeout, the run fails. The setting applies only to this subscription, and covers every way it is captured, including alerts and data attachments.

Smart Alerts

Turn on Use as alert and add one or more conditions. Each condition names a column from the visual, an operator, and a value:

Operator
Less than
Less than or equal to
Equals
Greater than
Greater than or equal to

The subscription then runs on its schedule as usual, but only delivers when the conditions hold.

Conditions are evaluated against the visual's own data, so pick a column that is on the visual. If the column is later renamed or removed, or a condition is left without a value, the alert cannot be evaluated — Run on demand tells you which condition is at fault, so you can edit the subscription and pick the column again.

ℹ️ "Alert conditions were not met" Is Not an Error Running an alert on demand when nothing crosses the threshold reports that nothing was sent. That is the alert working as intended, and it is recorded as a successful run, not a failure.
💡 Schedule Frequently, Deliver Rarely An alert checked every 10 minutes that sends twice a month is doing its job. Because delivery is conditional, a tight schedule costs you nothing in inbox noise — which is the difference between an alert people act on and one they filter away.

Managing Subscriptions

  • Activate / deactivate — pause a subscription without deleting it and losing its configuration
  • Run on demand — trigger a delivery immediately, which is how you verify a new subscription without waiting for its slot
  • Extend by one year — push out the schedule window
  • Edit — change any of the settings above
  • Delete — remove the subscription permanently, after a confirmation. A deleted subscription stops running immediately and cannot be recovered; deactivate instead if you may want it back. You can delete your own subscriptions, and report admins can delete anyone's.
  • History — see every delivery the subscription has made, recipient by recipient (see below)

Delivery History

Click History on a subscription to see what was sent, to whom, and what went wrong. Runs are listed newest first, each with a count of deliveries sent, failed and skipped, and one line per recipient:

RecipientThe email address, Telegram chat or webhook contact. For per-value subscriptions, the filter value it was sent for is shown underneath.
StatusSuccess, Failure, or Skipped (an alert whose conditions weren't met, or a per-value run where no recipient could be found). Webhook deliveries also show the HTTP status the receiving service returned.
DetailsFor a failure, the error — for a webhook, the start of the receiving service's response, which is usually where a messaging provider explains a rejected number or message.

Webhook calls are made one per recipient, so each recipient's status is its own. Email and Telegram send to a list in one go, so recipients sent together succeed or fail together. If a run fails before anything is sent — the report couldn't be loaded, for instance — each recipient is listed as failed with that reason.

A run with any failed delivery is marked as failed in the subscription monitor on your home page, and Run now reports how many deliveries failed. You can see the history of your own subscriptions; report admins can see the history of every subscription on their reports. The latest 500 deliveries are shown. History is recorded from this release onwards, so older runs don't appear.

Datasource Refresh Subscriptions

The same scheduler drives datasource refreshes, not just report delivery — so a refresh and the report that depends on it are configured in one place with the same frequency controls.

⚠️ Order Your Schedules A report delivery scheduled before its datasource refresh completes will send yesterday's numbers. Leave enough gap between the refresh and the delivery for the refresh to finish.