---
title: "Recipe: Scheduled reports and readouts"
description: "TL;DR: On a schedule, this playbook queries your data source, summarizes the results into a readout, and delivers it to Slack or email. Trigger is a schedule (e.g. weekday mornings); outputs are a formatted summary and optional chart link."
canonical_url: "https://docs.ballet.dev/articles/recipe-scheduled-reports-and-readouts-rqFtYUEyJN"
md_url: "https://docs.ballet.dev/articles/recipe-scheduled-reports-and-readouts-rqFtYUEyJN.md"
---
# Recipe: Scheduled reports and readouts

**TL;DR:** On a schedule, this playbook queries your data source, summarizes the results into a readout, and delivers it to Slack or email. Trigger is a schedule (e.g. weekday mornings); outputs are a formatted summary and optional chart link.

## Who this is for

Data, analytics, and ops teams that send recurring metrics readouts by hand.

## What you'll need

- **Connectors:** BigQuery (or your warehouse/HTTP data API), Slack and/or email.
- **Secrets:** Warehouse/API credentials, Slack token or email API key.
- **Trigger:** Schedule (cron) for the cadence you want.

## How to build it with Ask Ballet

1. Open the Console on Home.
2. Paste the prompt below; set your query, cadence, and recipients.
3. Review the plan and confirm.
4. Connect the data source and Slack/email, then set the schedule.

```text
Build a playbook that runs every weekday at 8am. Query BigQuery for yesterday's key
metrics (signups, active users, revenue) and the week-over-week change. Summarize the
results in a short readout with the top movers and any anomalies. Post the summary to
#daily-metrics in Slack and email it to the leadership list. Include a link to the
dashboard.
```

## What the playbook does

1. **Schedule trigger** — runs on the configured cron.
2. **HTTP/Code step (query)** — runs the query against the warehouse.
3. **Code step (summarize)** — computes deltas and writes the readout.
4. **HTTP step (deliver)** — posts to Slack and/or sends the email.

## Variations and tips

- Start with a manual run to validate the query and formatting before scheduling.
- Keep heavy aggregation in the warehouse query; use the Code step for formatting.
- Feed clean tables from [Data sync and ETL](/articles/recipe-data-sync-and-etl-to-a-warehouse-XBdNlNuOsn) so reports stay reliable.

## Related articles

- [Data sync and ETL to a warehouse](/articles/recipe-data-sync-and-etl-to-a-warehouse-XBdNlNuOsn)
- [How do I manage Schedules?](/articles/how-do-i-manage-schedules-NTU9cNrk8w)
- [How do I share run output?](/articles/how-do-i-share-run-output-8VcvBxbbHT)
- [How do I edit steps (Code and HTTP)?](/articles/how-do-i-edit-steps-code-and-http-47pGJ6HgKr)
