Daily Shopify sales digest in Slack with a narrative summary

Every weekday at 8am, post yesterday's Shopify revenue, top sellers, and average order value to Slack with a short narrative on what looks unusual today.

Agentic Task
ShopifySlack BotOperationsSalesDaily DigestsAI Reports

Every weekday morning at 8am Eastern, run a Shopify sales digest for yesterday and post it in our team Slack channel. Two systems: Shopify (data) and Slack (delivery). The point of using an agent rather than a static dashboard is the short narrative at the bottom that calls out what looks different about today.

Trigger: cron, Monday through Friday at 8:00am America/New_York. Skip weekends.

Step 1. Pull yesterday's orders from Shopify using the List Orders operation. Filter to financial_status=paid, status=any, and use created_at_min / created_at_max set to the previous calendar day in America/New_York (00:00:00 to 23:59:59 local, converted to ISO 8601 with the correct offset). Paginate fully via the Link header so we get every order, not just the first page. Use a limit of 250 per page.

Step 2. From those orders, have the agent compute:

  • Gross revenue (sum of total_price across paid orders).

  • Order count.

  • Average order value (revenue / order count).

  • Refund count and refunded amount (from each order's refunds array). Keep this separate from gross revenue so a refund surge shows up rather than quietly netting out.

  • Top 5 SKUs by units sold, with product/variant name, units, and revenue contribution.

  • Biggest single order (value, customer first name + initial, and a short line on what was in it).

  • New vs returning customer mix. Treat an order as 'returning' if the customer's orders_count field shows more than one lifetime order, otherwise 'new'.

Step 3. Write a short narrative (2 to 4 sentences) that calls out anything unusual versus a typical day. Things to surface when they apply:

  • Revenue meaningfully above or below a normal day for this store.

  • One product carrying the day (eg. a single SKU is more than 40% of units or revenue).

  • An unusually high refund count.

  • AOV inflated by one giant order (note the order value alongside the headline AOV).

  • An unusually high or low new-customer share.

If yesterday looked completely normal, the narrative should just say so in one sentence rather than inventing something.

Step 4. Post the digest to Slack using the Send a Message operation. Channel: ask me during setup (default placeholder #shopify-daily). Format the message as:

  • Line 1: TL;DR with a one-line read (eg. 'Solid day, revenue up vs typical, driven by Tee Pack 3-Pack').

  • A bullet list of the headline numbers: revenue, orders, AOV, refunds, new vs returning split.

  • A 'Top sellers' section listing top 5 SKUs with units and revenue.

  • A 'What stood out' short paragraph with the narrative.

Use Slack mrkdwn formatting (single asterisks for bold, not double). Format currency as the store's currency, taken from the orders themselves rather than assumed.

Edge case: if there were zero paid orders yesterday, skip the full digest and post a single short line ('No paid orders yesterday.') instead. Don't compute averages on an empty list.

Additional information

What does this prompt do?
  • Pulls yesterday's paid Shopify orders every weekday morning so you never have to open the admin before coffee.
  • Calculates the numbers that matter most: gross revenue, order count, average order value, refunds, top five selling products, and new vs returning customer mix.
  • Writes a short, plain-English narrative on what looks different today, like a revenue spike, a refund surge, or one product carrying the day.
  • Posts the digest to your Slack channel with a TL;DR headline up top so the team gets the read at a glance.
What do I need to use this?
  • A Shopify store you can connect with admin access to orders and customers.
  • A Slack workspace, plus the channel you want the digest posted in.
  • A rough sense of what a 'normal day' looks like for your store so the narrative has something to compare against.
How can I customize it?
  • Change the schedule, for example a 7am send, a midday update, or a Monday weekly recap instead of daily.
  • Swap the Slack channel, add a second channel, or send it as a DM to the founder.
  • Adjust the headline numbers or expand the top five sellers list to top ten.

Frequently asked questions

Will this work for a small store with only a few orders a day?
Yes. On quiet days the digest just notes the lower volume. The narrative gets more useful the more activity there is to compare against a typical day.
How does it handle refunds and cancelled orders?
It only counts paid orders in revenue, and tracks refunds as a separate callout. That way a refund surge stands out instead of quietly dragging revenue down.
Can I send the digest to more than one Slack channel?
Yes. Add the extra channels when you set it up and the same digest will post to each one.
What timezone does 'yesterday' use?
You pick the timezone during setup, and the agent uses the same window when pulling orders so the day cutoff lines up with how you actually think about it.
Can it compare to last week or last month, not just yesterday vs a typical day?
Yes. Ask for a week-over-week or month-over-month line during setup and the agent will pull the wider window and add the comparison to the summary.

Stop opening Shopify before coffee.

Let Geni post yesterday's sales digest to your team Slack every weekday morning, with a plain-English read on what stood out.