Scheduled Reports
How to set up automated daily, weekly, or custom Slack reports. Schedule any alice skill to post metrics to a channel on a cron schedule.
How Scheduled Reports Work
A scheduled report is a skill with a cron trigger attached. At the configured time, alice automatically runs the skill's query, formats the result, and posts it to the designated Slack channel. No human interaction required.
The flow works like this:
- Cron fires at the scheduled time
- Alice executes the skill's query using default parameter values
- Results are formatted according to the skill's format configuration
- The formatted message is posted to the configured Slack channel
- The run is logged in the skill run history with full audit trail
Scheduled reports use the same query and format settings as manual /alice commands. If the skill works when you run it manually, it will work on a schedule.
Setting Up a Schedule
Schedules are configured in the Triggers step of the skill builder. Every skill has a Command trigger (always active) and can optionally enable a Schedule trigger, a Monitor trigger, or both.

Step 1: Enable the Schedule Trigger
Click the Schedule card in the Triggers step. When enabled, the configuration panel expands below.
Step 2: Choose a Schedule
Alice offers five quick presets, plus a custom cron expression field:
| Preset | Cron Expression | When It Runs |
|---|---|---|
| Every morning (9am weekdays) | 0 9 * * 1-5 | Monday through Friday at 9:00 AM |
| Every hour | 0 * * * * | On the hour, every hour |
| Every Monday 9am | 0 9 * * 1 | Monday mornings only |
| Daily at midnight | 0 0 * * * | Every day at 12:00 AM |
| Every 15 minutes | */15 * * * * | Four times per hour |
Click a preset to apply it, or type a custom cron expression directly. The cron expression follows standard 5-field format:
┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-7, where 0 and 7 are Sunday)
│ │ │ │ │
* * * * *
Step 3: Set the Timezone
The timezone determines when the cron fires. It defaults to America/New_York but you can change it to match your team's location. Common timezones:
| Timezone | UTC Offset | Region |
|---|---|---|
| America/New_York | UTC-5 | US East |
| America/Chicago | UTC-6 | US Central |
| America/Denver | UTC-7 | US Mountain |
| America/Los_Angeles | UTC-8 | US West |
| Europe/London | UTC+0 | UK |
| Europe/Paris | UTC+1 | Central Europe |
| Europe/Berlin | UTC+1 | Central Europe |
| Asia/Tokyo | UTC+9 | Japan |
| Asia/Shanghai | UTC+8 | China |
| Asia/Kolkata | UTC+5:30 | India |
| Australia/Sydney | UTC+11 | Australia East |
| Pacific/Auckland | UTC+13 | New Zealand |
| UTC | UTC+0 | Universal |
All times are adjusted for daylight saving time automatically.
Step 4: Select a Slack Channel
Choose the Slack channel where results will be posted. The channel selector shows all channels the alice bot has access to, including private channels the bot has been invited to.

If you do not see your channel in the list, make sure the alice bot has been invited to it. In Slack, go to the channel and type /invite @alice.
The channel selection is required for scheduled reports. Without it, alice has nowhere to post the results.
Common Schedule Patterns
Daily Standup Metrics
Post key business metrics to #ops every weekday morning before standup.
- Schedule: Every morning (9am weekdays) --
0 9 * * 1-5 - Skill type: Summary output with MRR, active users, churn rate, and new signups
- Channel:
#opsor#daily-standup
This is the most popular schedule pattern. The team opens Slack, sees the numbers, and walks into standup informed.
Weekly Revenue Report
Post a detailed revenue breakdown every Monday morning for leadership review.
- Schedule: Every Monday 9am --
0 9 * * 1 - Skill type: Summary with revenue metrics or Table with subscription details
- Channel:
#revenueor#leadership
End-of-Day Digest
Summarize the day's activity after business hours.
- Schedule: Custom cron
0 18 * * 1-5(6pm weekdays) - Skill type: Summary with daily totals (new customers, revenue, failed payments)
- Channel:
#ops
Hourly Payment Health Check
Monitor payment success rates throughout the day.
- Schedule: Every hour --
0 * * * * - Skill type: Summary with payment success rate, failed count, and past-due count
- Channel:
#payment-alerts
For lower-frequency monitoring, consider a Monitor trigger instead, which only notifies when a condition is met.
Monthly Business Review
Post comprehensive metrics on the first of each month.
- Schedule: Custom cron
0 9 1 * *(9am on the 1st) - Skill type: Summary with MRR, ARR, churn rate, net revenue retention, new customers
- Channel:
#leadershipor#monthly-review
Custom Cron Examples
| Use Case | Cron | Description |
|---|---|---|
| Twice a day | 0 9,17 * * 1-5 | 9am and 5pm weekdays |
| Every 30 minutes | */30 * * * * | On the hour and half-hour |
| Quarterly | 0 9 1 1,4,7,10 * | 9am on Jan 1, Apr 1, Jul 1, Oct 1 |
| Weekends only | 0 10 * * 0,6 | 10am Saturday and Sunday |
| First Monday of month | 0 9 1-7 * 1 | 9am on the first Monday |
Parameters in Scheduled Reports
When a skill runs on a schedule, there is no user to provide parameter values. Alice uses the default value for every parameter.
This means:
- Every required parameter must have a default value, or the scheduled run will fail
- The defaults you set in the builder are the values used every time the schedule fires
- If you want to change what the scheduled report queries, update the parameter defaults in the skill editor
For example, if your skill has a days parameter that defaults to 30, the scheduled report always queries the last 30 days. To change it to 7 days, edit the skill and update the default.
Managing Scheduled Reports
Viewing All Schedules
Navigate to Dashboard > Skills and filter by the "Scheduled" trigger type to see all skills with active cron triggers. Each skill shows its schedule expression and next run time.

Toggling On and Off
You can temporarily disable a schedule without deleting the skill or its configuration. Open the skill, go to the Triggers step, and click the Schedule card to toggle it off. The cron configuration is preserved, so you can re-enable it later.
This is useful for:
- Pausing during holidays or company events
- Temporarily muting a noisy schedule while debugging
- Testing a schedule before going live
Editing a Schedule
Open the skill editor, navigate to the Triggers step, and modify the cron expression, timezone, or channel. Changes take effect on the next scheduled run.
Run History
Every scheduled execution is logged in the skill's run history. Navigate to the skill detail page to see:
- When each run executed
- Whether it succeeded or failed
- The result data that was posted
- Duration of the execution
Failed runs show error details. Common failure reasons:
- Required parameter without a default value
- Source connection expired or revoked
- Slack channel deleted or bot removed
- Query syntax error
Plan Limits
Free| Plan | Scheduled Reports | Minimum Frequency |
|---|---|---|
| Free | 1 schedule | Weekly only |
| Pro | Unlimited | Any frequency |
| Business | Unlimited | Any frequency |
Free plans are limited to one scheduled report, and it must run on a weekly cadence (once per week). This is enough to get a taste of automated reporting. Upgrade to Pro for unlimited schedules at any frequency.
ProPro and Business plans can attach cron schedules to any number of skills with any cron expression, including sub-hourly frequencies like every 15 minutes.
Troubleshooting
Report not posting: Check that the alice bot is a member of the target channel. Run /invite @alice in the channel. Also verify the channel ID in the trigger configuration is correct.
Wrong timezone: If the report posts at the wrong time, check the timezone setting in the Triggers step. The default is America/New_York, which may not match your team.
Empty results: If the query returns no data, alice still posts a message indicating zero results. If you prefer silence when there is no data, consider using a Monitor instead, which only notifies when a condition is met.
Failed runs: Check the run history on the skill detail page. Common causes are expired source credentials (reconnect in Sources) or a query referencing a table that was renamed.
Duplicate messages: If a skill has both a cron trigger and a separate scheduled skill for the same data, you may get duplicate posts. Consolidate into one skill with one cron trigger.
Related
- Creating a Skill -- build a skill to schedule
- Monitors -- alert when conditions are met instead of posting on a schedule
- Formatting Output -- choose the best format for automated posts
- Parameters -- set defaults for scheduled execution
- Actions -- action buttons on scheduled report messages
- Slash Commands -- run the same skill manually between scheduled posts
- Plans -- compare schedule limits across tiers
Was this page helpful?
Formatting Output
How to format alice skill results in Slack. Configure table, summary, list, and text output types with column formatting and templates.
Monitors
How to set up metric alerts in Slack. Configure threshold-based monitoring that notifies you when churn, MRR, or any metric crosses a limit.