List icon
SlackIncomingWebhook icon
Schedule icon

Monthly Miro Board Inventory Digest to Slack

List every Miro board in a team with Kestra on a monthly schedule and post a Slack digest with the total board count for inventory reviews.

Categories
Business

Miro workspaces grow one board at a time until nobody can say how many exist or who owns them. This blueprint puts a number on it every month. io.kestra.plugin.miro.boards.List queries a team and returns both a page of board objects and the total count of boards matching the filter, and the flow posts that count to Slack as a digest. The board list itself stays on the execution's outputs, ready for whoever wants to dig into names and owners after seeing the headline number.

How it works

  1. list_boards (io.kestra.plugin.miro.boards.List) lists boards for the team_id input with limit: 50. The task outputs {{ outputs.list_boards.total }} (all boards matching the filter, across pages), {{ outputs.list_boards.size }} (boards in this page), {{ outputs.list_boards.offset }}, and {{ outputs.list_boards.boards }} (the page of board objects).
  2. notify posts the total and the page size to Slack as plain scalars, keeping the JSON payload safe.
  3. The errors block posts a distinct Slack alert if the listing fails, so a silent month is never read as an empty workspace.
  4. A disabled-by-default Schedule trigger runs the digest at 08:00 on the first of each month.

What you get

  • A monthly headline number for board sprawl, delivered where the team already reads.
  • Month-over-month growth visible by scrolling the Slack channel, no dashboard required.
  • The full first page of board objects preserved on each execution for deeper inspection.
  • A failure alert so a broken token shows up as an error, not as a missing digest.

Who it's for

  • Workspace admins asked "how many boards do we have and who owns them" before license renewals.
  • IT and ops teams tracking collaboration-tool sprawl across the organization.
  • Team leads who want a periodic nudge to archive what nobody opened since last quarter.

Why orchestrate this with Kestra

One API call answers the question once; answering it every month, keeping the history, and telling someone when the call fails is an orchestration job. Kestra adds the schedule, the secret-managed token, scalar outputs that interpolate safely into the Slack payload, and an execution history that becomes a month-by-month record of workspace growth.

Prerequisites

  • A Miro OAuth access token with boards:read scope.
  • The Miro team ID to inventory.
  • A Slack incoming webhook for the digest channel.

Secrets

  • MIRO_ACCESS_TOKEN: Miro OAuth 2.0 access token.
  • SLACK_WEBHOOK_URL: Slack incoming webhook URL.

Quick start

  1. Add the two secrets to your Kestra namespace.
  2. Execute the flow with your team ID and check the Slack digest against the board count in the Miro UI.
  3. Set disabled: false on the monthly trigger.

How to extend

  • Narrow the inventory with the task's query, owner, or projectId properties to digest one owner's or one project's boards.
  • Page through larger teams by re-running the task with the offset property and combining pages downstream.
  • Store {{ outputs.list_boards.total }} in Kestra's KV store each month and alert when growth exceeds a threshold.
  • Pair the digest with the stale board cleanup blueprint to act on the sprawl the digest reveals.

Links

Orchestrate with Kestra
Orchestrate Slack with Kestra
Share this Blueprint
See How

New to Kestra?

Use blueprints to kickstart your first workflows.