Weekly Acuity practice performance report in Slack

By General Input

Every Sunday at 8pm, turn the past week of Acuity Scheduling bookings into a plain-English performance report with insights and next-week actions, posted to Slack and logged to Google Sheets.

Integrations

  • Acuity Scheduling
  • Slack
  • Google Sheets

Type

Agentic Task

Categories

  • Operations
  • Personal Productivity

Every Sunday at 8pm on a cron trigger, generate a written weekly performance report for my Acuity Scheduling practice and post it to Slack, then log the numeric snapshot to Google Sheets so I have a running history.

Step 1: Pull the past seven days of appointments from Acuity Scheduling using List Appointments with minDate set to seven days ago and maxDate set to now, both in the Acuity account timezone. Paginate by sorting direction ascending and re-issuing the call with minDate equal to the datetime of the last row returned, per Acuity's pagination guidance, until no new rows come back. Also call List Appointments for the prior seven-day window (14 days ago through 7 days ago) so you can compute week-over-week change.

Step 2: Call List Appointment Types once and build a lookup keyed by appointment type id so every appointment row can be enriched with its price (a decimal string like "120.00") and duration in minutes. Do not assume price is a number — parse the decimal string.

Step 3: Compute the numbers for both windows. For the current week: total booked revenue, appointments broken down by type (count and revenue per type), no-show rate, cancellation rate, top five clients by spend (sum price across their appointments that week), and best-earning day-of-week / time-of-day slot. Use Acuity's paid field ("yes"/"no" string) and the noShow and canceled flags correctly. Then repeat for the prior seven days and compute deltas. Flag any appointment types trending up or down by more than a meaningful threshold (say 25% change in count or revenue).

Step 4: Draft a plain-English narrative report, not a numbers dump. Lead with the three most important insights based on the deltas and totals — things like "no-show rate doubled to 12% this week", "90-minute sessions grew 40% week over week", or "Wednesday afternoons are your best-earning slot". Then give two concrete recommended actions for next week (for example: send a reminder text to Tuesday bookings since that's where the no-shows cluster; open a second 90-minute slot on Wednesday). Keep the tone practical and owner-to-owner, not corporate.

Step 5: Post the narrative to Slack via Send a Message in the channel the user picks during setup. Format with a clear headline (date range), the three insights as bullets, the two recommended actions as bullets, and a compact metrics block at the bottom (revenue, appointments, no-show %, cancellation %, WoW revenue change).

Step 6: Append one row to a Google Sheets tab via Append Values with the numeric snapshot: week-ending date, total revenue, appointment count, completed count, no-show count, cancellation count, no-show rate, cancellation rate, top-earning appointment type, and week-over-week revenue delta. The practice owner will use this as a running history to look back on trends across months.

Ask the user during setup for: the Slack channel to post to, the Google Sheets spreadsheet id and tab name for the history log, and confirm the Acuity account timezone (fall back to the account default). If any Acuity type has no price, treat it as zero revenue but still count the appointment.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageWin back LiveChat visitors whose chats went unansweredLet support send one-off Loops emails without an engineerStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardChat quality review board for LiveChat support leadsLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seats