Scheduled email

Send a published report by email on a schedule, as a PDF, a zip of CSVs or a JSON file, with each member seeing only the rows their access shows.

A schedule emails a published report to the people you pick, on the days you pick. Each delivery sends the published version as it is at that moment, with current data. A report with editions can send the latest on a schedule, or each new one when it's published. See In email, PDFs and embeds.

The email carries your organization's logo and accent, from Settings, Brand, and says it was sent for you by Halo.

Make a schedule

You need edit access to the report. Deliveries send only the published version, so until the report is published they're skipped.

  1. Open the report, and choose Schedule email… from its menu.

  2. Set When, Who and What, described below.

  3. Choose Schedule it.

Email schedules, in the same menu, lists the report's schedules. Settings, Schedules lists every schedule of the reports you can edit.

When

RepeatsSends
Every dayEach day, At a time
Every weekdayMonday to Friday
Weekly, on…The weekdays you pick
Monthly, on a dayA Day of the month
Monthly, on a weekdaySuch as the first Monday
On the last day of the monthThe month's last day
Custom (cron expression)A five-field cron expression

The form shows the next three runs before you save. Times follow the Time zone you pick, so a 09:00 schedule goes at 09:00 local all year. A time the clocks skip goes just after the gap, and a time that happens twice goes once.

A custom expression takes standard fields, names such as MON and JAN, ranges, lists and steps, plus L (the last day of the month; 5L, the last Friday) and # (1#1, the first Monday). The minute must be one number, so a schedule sends at most hourly.

Who

  • Members and groups: up to 100 members and 20 groups. Groups are read at each delivery, so new members get it.

  • Other email addresses: up to 50. Press Enter, or type a comma, semicolon or space, after each; a list pasted from your mail program splits by itself, and an address that isn't one stays in the box to be put right. Addresses outside the organization need the Share publicly permission.

An address that belongs to a member is sent as that member.

What

Send it as one of these:

FormatWhat arrives
PDFThe published report, every page, as it prints
CSV (zip)One spreadsheet per chart and table, with their rows, such as 01 Overview - Revenue by region.csv
JSONEvery chart and table's rows in one file, for tools

CSV and JSON need the Export data permission. Sending them outside the organization also needs People who open public links and embeds can export data turned on.

Filters apply the reader filters you've set on the report, to every element whose dataset has the field. To use them, change the report's controls before you open the form.

Subject and an optional Message, which goes above the report, finish it off. The message can have bold, italic, links and lists, and the email shows them; its plain-text part has the words alone.

A written summary

Add a written summary puts a few sentences by Halo AI in the email, labeled "Written by Halo" with their date. It uses credits for each send. See Credits and limits. Adding one takes the Use Halo AI permission, and the schedule's owner has to keep it, or the email goes without.

  • Members read a summary written from the same rows as their own copy, so row policies hold. It can mention goals falling short over that data, as that member reads them.

  • Addresses outside your organization get one only if someone approves it. Up to a day before a send, Halo AI writes one from what a public link shows, with no mention of goals, and the people who could publish the report are told. Open the schedule to read it, then Approve or Decline. An approval is good for that send, that published version, and those addresses and filters alone, so changing them means a new draft. A draft nobody answers holds back the next for 7 days. Otherwise, and for Send now, the address gets the email without one.

A summary can never stop an email. If Halo AI is off, out of credits or failing, the email goes without one, and the job's steps say why. Summaries don't appear on public report pages.

Subscribe yourself

Anyone who can see a report can have its scheduled emails sent to them, without asking whoever looks after the schedule. Open the report, choose Email me this report from its … menu, and switch on the emails you want. Each one is your own copy, showing what you can see, and it stops if you can no longer see the report.

Switch one off to stop it, however you got it. If it reaches you through a group or your address, the group and the address stay on it and you're left out.

Report emails in your account lists every scheduled email you get here, with Stop.

Whoever looks after a schedule can turn off Let people subscribe themselves. Then no one new can subscribe, and those already on it stay until someone removes them. Each subscriber is one of the schedule's members, so they show in its recipients, and subscribing and stopping are in the audit log.

Bounces, spam reports and unsubscribing

Halo looks after your sending reputation so a stale list doesn't hurt it:

  • An address that bounces for good, such as a mailbox that no longer exists, gets no more report emails from your organization. One that bounces for a while, such as a full mailbox, keeps getting them.

  • An address whose reader reports an email as spam gets no more report emails from your organization.

  • People outside your organization can unsubscribe with the link at the foot of each email, or their mail app's unsubscribe button, without signing in. They stop getting that email.

Each delivery's recipients show these as skipped, with the reason, and whoever looks after the schedule gets a notification when an address bounces or reports spam. Admins see every address in Settings, Schedules, under Addresses report emails skip, and can choose Send again once the address is fixed.

Who sees which rows

Row policies still apply by email. A schedule belongs to its report's editors, but each recipient sees the report as themselves:

RecipientGets
Any, when no dataset in the report has row policiesOne shared file. There's nothing to tell them apart
A member, when a dataset has row policiesTheir own copy, rendered as them, with their role, groups and attributes
An outside addressWhat a public link shows: datasets with row policies show them no rows

Your own access never widens anyone's. A member who can't see the report is skipped, and so is anyone who has left.

What's in the data files

CSV and JSON hold the rows behind the charts and tables a reader sees, page by page in print order, including pages hidden from navigation. Each asks what it asks when the report opens, with the report's and page's filters, your schedule's filters, and the starting values of its controls and parameters. Top N controls, cross-filters and drill-downs are a reader's, so they're left out.

A chart sends at most 10,000 rows unless it sets its own limit, and a table sends at most 100,000. A query that failed shows up as an error in its file rather than stopping the delivery. For more rows, see Exports.

Look after a schedule

ActionWhat it does
Send nowSends it straight away, paused or not, and tells you how it went
The schedule's switchPauses or resumes it. A paused schedule has no next run
ChangeOpens the form. Save schedule makes you its owner
Delete scheduleAsks first, then removes it for good: a deleted schedule doesn’t go to the Trash. Past deliveries keep their records
Past deliveriesLists each send: what started it, its format, how many it reached, and why any failed

A delivery's status is Sent, Partly sent, Failed or Skipped, and it links to its job, which has a step for each recipient ("Sent to Pat (PDF attached)"). A retry sends only to those not yet sent. A report can have up to 20 schedules.

Big files

Files up to 10 MB are attached. Past that, the email carries a link that works for 7 days. Members also get a link to the report in Halo Data.

Why a delivery might not go

Whoever saved a schedule last is its owner, and deliveries run with their access. A delivery fails, and the owner is told, if they've left, can no longer edit the report, or have lost Export data for a CSV or JSON schedule. Someone who can edit the report takes it over by saving it.

Recipients are checked at each delivery. Outside addresses are skipped if the owner can no longer share publicly, and for CSV and JSON if the report no longer allows downloads.

Everything here is in the audit log, including who was sent, skipped and failed.