On a schedule
Get yesterday's sales every morning
Each morning you see yesterday's order count, total sales and top products.
- Runs
- On a schedule
- Apps
- Shopify
- AI
- Not needed
- Access
- read_orders (read)
Send this to your assistant
Create a ClickRuntime automation: every day at 8am, email me how many Shopify orders I got yesterday, total sales, how many are paid and fulfilled, and the top 5 products.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Every morning a store owner opens Shopify to find out how yesterday went, clicks through Analytics, switches the date range, and tries to remember what the comparison was last week. It takes several minutes, and on busy mornings it does not happen at all, so a drop in orders or a surprise bestseller goes unnoticed for days. Staff who are not given admin access never see the numbers, and so they cannot connect their own work to the results.
Each morning the automation queries yesterday's orders, adds up revenue and order count, splits the orders by paid and fulfilled, ranks the line items by sales, and emails the summary to you and anyone else on the list. It runs on the schedule you choose. Store owners, marketers and operations staff use it to start the day with the same short view of the store's performance.
What you get out of it
The day starts with the numbers
Yesterday's revenue and orders are waiting when you open your email. No clicking through Analytics means the review actually happens, even on days when everything is hectic. By the time the first coffee is ready you know whether yesterday's orders rose or fell.
Top products are clear
The ranking of line items shows what sold best. You can restock a bestseller before it runs out and feature it in the next email or on the homepage. Seeing a $19 accessory outsell the flagship product tells you what to restock first.
Paid and fulfilled split shows backlog
Seeing how many orders are paid but not yet fulfilled tells the warehouse what is waiting. A growing gap means shipping is falling behind, and you can respond that morning.
Staff see results without admin access
Anyone on the list gets the figures without needing a Shopify login. Marketing and packing staff can see how their work connects to sales, which keeps the team engaged. A packer or marketer who has no Shopify login still sees how yesterday's work turned into revenue.
A dated history of sales
The daily emails build into a record of how the store performed each day. Looking back at a promotion or a slow week is a matter of searching your inbox.
How it works
What happens, step by step
Every morning at 8 in your store's time zone, the automation collects yesterday's Shopify orders.
It totals the number of orders and sales, and how many were paid and fulfilled.
It ranks the products by how many were sold.
You get an email with the totals and your top products.
Before it runs live
- Connect Shopify
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Shopify steps into one automation
Under the hood
The code that runs this automation
from collections import Counter
from datetime import date, timedelta
from clickruntime import on_trigger, credentials, http, notify
STORE = "your-store.myshopify.com"
def gql(query, variables=None):
resp = http.post(f"https://{STORE}/admin/api/2025-07/graphql.json",
headers={"X-Shopify-Access-Token": credentials.connection("shopify", "store")},
json={"query": query, "variables": variables or {}})
resp.raise_for_status()
return resp.json()["data"]
QUERY = """query($q: String!) { orders(first: 250, query: $q) { nodes {
displayFinancialStatus displayFulfillmentStatus totalPriceSet { shopMoney { amount currencyCode } }
lineItems(first: 50) { nodes { title quantity } } } } }"""
@on_trigger
def run(event):
day = date.today() - timedelta(days=1)
orders = gql(QUERY, {"q": f"created_at:>={day} created_at:<{date.today()}"})["orders"]["nodes"]
total = sum(float(o["totalPriceSet"]["shopMoney"]["amount"]) for o in orders)
paid = sum(o["displayFinancialStatus"] == "PAID" for o in orders)
fulfilled = sum(o["displayFulfillmentStatus"] == "FULFILLED" for o in orders)
top = Counter()
for o in orders:
for li in o["lineItems"]["nodes"]:
top[li["title"]] += li["quantity"]
lines = [f"Orders: {len(orders)}", f"Sales: {total:,.2f}", f"Paid: {paid} · Fulfilled: {fulfilled}", "", "Top products:"]
lines += [f" {qty} × {title}" for title, qty in top.most_common(5)]
notify.email_me(f"Shopify sales for {day}", "\n".join(lines))
return {"orders": len(orders), "sales": total}FAQ
Common questions
What time period does 'yesterday' cover?
Does revenue include refunds and shipping?
Can I send it to several people with different content?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Get last week's orders as a CSV
Every Monday you get all of last week's orders in one file, with customer, total and status.
See how it worksGet a daily list of abandoned checkouts
Each evening you get today's abandoned checkouts with the customer email, cart value and recovery link, so you can follow up.
See how it worksGet warned when stock runs low
Each morning you see the variants running low, and each one is only flagged once.
See how it worksKeep exploring
Set up “Get yesterday's sales every morning” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.