New to Kestra?
Use blueprints to kickstart your first workflows.
Watch Miro for new boards with a Kestra trigger and post each board name and view link to Slack so IT sees every new shared surface.
Every new Miro board is a new place where diagrams, credentials pasted into stickies, and customer data can end up shared beyond the team. Most organizations only find out what boards exist during an annual audit. This blueprint closes that gap with io.kestra.plugin.miro.boards.Trigger, which polls Miro on an interval and fires an execution when new boards appear. The flow enriches the detection with a boards.Get call and posts the board's name, creation time, and view link to Slack, giving security and IT eyes on every new shared surface within minutes.
watch_boards (io.kestra.plugin.miro.boards.Trigger) polls Miro every 15 minutes (interval: PT15M). When new boards are detected, it fires with {{ trigger.id }}, {{ trigger.name }}, and {{ trigger.createdAt }} describing the first new board, {{ trigger.count }} carrying the number detected in the cycle, and {{ trigger.boards }} holding the full list.get_board (io.kestra.plugin.miro.boards.Get) fetches the detected board by {{ trigger.id }}, exposing its viewLink and sharing policy as flat outputs.notify posts the board name, creation timestamp, cycle count, and view link to Slack.errors block posts a distinct Slack alert if the audit flow fails, so a revoked token never silently stops the reviews.disabled: true; flip it once the secrets are in place.Miro can list boards, but watching for new ones means polling, remembering what was already seen, fanning detections into notifications, and alerting when the watcher itself breaks. Kestra's trigger handles the polling and state, the flow handles enrichment and delivery, and every detection is preserved in the execution history as an audit trail.
boards:read scope.MIRO_ACCESS_TOKEN: Miro OAuth 2.0 access token.SLACK_WEBHOOK_URL: Slack incoming webhook URL.disabled: false on the watch_boards trigger.teamId or projectId properties to audit only sensitive teams.{{ trigger.boards }} with a ForEach task to notify on every board in a busy cycle, not just the first.sharingPolicy from get_board allows public access to a higher-severity alert with an If task.interval for tighter detection windows, or raise it for quieter workspaces.