Daily Clover sales recap in Slack
Every night after close, get a friendly Clover sales recap in Slack with revenue, top items, payment mix, and anything that looked off.
Every evening after close, at 9pm in the merchant's local timezone, run a Clover sales recap and post it to a Slack channel. Use a cron trigger; Clover does not push webhooks and is not a poll provider, so cron + list operations is the right pattern.
Start by reading the merchant profile in Clover with Get Merchant. Cache the currency code and timezone off the response. Every monetary value returned by Clover is an integer in the smallest currency unit (cents for USD), so divide by 100 before formatting, and format every number in the merchant's currency using the code from Get Merchant.
Compute the business day window in the merchant's local timezone: midnight-to-now on the day the workflow fires. Convert those boundaries to millisecond epochs and use them as a modifiedTime filter (Clover filter syntax: filter=modifiedTime>{startMs}&filter=modifiedTime<{endMs}) on the three list calls.
Pull the day's activity with three Clover calls: List Orders filtered on modifiedTime for the day (paginate with limit=1000 and offset; drop orders whose state is not paid/locked so voids don't skew totals), List Payments filtered on modifiedTime for the day, and List Refunds filtered on modifiedTime for the day. Then, for each order returned, call List Order Line Items so the top-items breakdown is accurate. If the order count is high, you can instead re-fetch orders with expand=lineItems to inline them and skip the per-order calls.
Hand the raw numbers to an agent step to digest them into a friendly recap. The recap should include: total sales (payments minus refunds), transaction count, average ticket, cash vs card mix (bucket payment tenders by label), top five items by revenue derived from the line items, busiest hours (bucket orders by createdTime hour in the merchant's local timezone), and anything unusual, for example an oversized refund, an outlier ticket much larger than the day's median, or a payment tender the merchant rarely sees.
For the anomaly callouts, also pull the prior seven days using the same List Orders / List Payments / List Refunds calls with a seven-day modifiedTime window, average by day, and highlight anything today that deviates meaningfully (for example, sales up or down more than 20% versus the seven-day average, refunds more than double the average, or transaction count off by 25%).
Post the recap to Slack using the Slack Bot integration's Send a Message operation. Format the numbers as currency in the merchant's currency (symbol from the currency code, and the appropriate decimal places, for example 2 for USD). Use Slack mrkdwn (single asterisks for bold, not double). Structure it as a short summary line up top, then a bulleted breakdown, then a small 'Worth a look' section only if there is something anomalous to flag. Keep it under a screen's worth of text; the owner should be able to read it on their phone in ten seconds.
Reasonable defaults the user can tweak: post time (9pm local), target Slack channel, anomaly thresholds (20% sales delta, 10% refund ratio), and how many top items to list (default five).
Additional information
What does this prompt do?
- Pulls today's Clover sales, payments, and refunds after you close and turns the numbers into a plain-English recap.
- Posts the recap to a Slack channel so the owner sees how the day went without opening the Clover dashboard.
- Highlights the day's top items, busiest hours, and cash vs card mix, and calls out anything that deviates from the last seven-day average.
- Flags unusual signals like an oversized refund or an outsized single ticket so nothing important gets missed.
What do I need to use this?
- A Clover merchant account with orders, payments, and inventory in one place
- A Slack workspace and a channel where the recap should land
- A rough sense of your normal daily volume so the anomaly callouts feel useful
How can I customize it?
- Change the post time to match when you close, or run it earlier for lunch-service recaps
- Pick the Slack channel and decide who gets @-mentioned when something looks off
- Tune the anomaly threshold (for example, flag refunds above 10% of the day's sales instead of the default)
Frequently asked questions
Do I need a Clover developer account or any coding?
Will this work for a merchant outside the US?
What time does the recap post?
How does it know what counts as unusual?
Can I send it to more than one channel or to a DM?
Related templates
Close the register, open Slack, know your day.
Get a plain-English Clover recap in Slack every night so you never have to open the dashboard just to see how the day went.