AI

Daily sales report at 8 AM: an AI agent for sales, stock and carts

A daily sales report for your online store at 8 AM: what to put in it, how an AI agent with a read-only key builds it and how to schedule it.

The CloudCart team25 min read
A cup of coffee next to a laptop whose screen shows a chat window with a short, tidy morning report of a few rows of numbers and a small chart, early morning light coming through the window
In this article · 14 sections
  1. What is a daily sales report for an online store?
  2. What to include in a daily sales report: 9 lines
  3. Analytics dashboard, order export or AI agent: which one when?
  4. How to connect the AI agent with a read-only key: 6 steps
  5. The daily sales report prompt: ready to copy
  6. How to get the report every morning at 8 AM
  7. How to read the report in 2 minutes: 6 signals and what to do
  8. Example: the morning report of a coffee store
  9. What you gain when an AI agent writes the report
  10. From the daily report to the weekly and monthly sales analysis
  11. Email, ads, Search Console and mobile traffic in the weekly report
  12. Is it safe for the agent to read the store every day?
  13. Common daily sales report mistakes
  14. Frequently asked questions

In short: a daily sales report puts yesterday's revenue against the same weekday last week on one screen, together with the number of orders, average order value, unshipped orders, products below the low-stock threshold and abandoned carts. An AI agent such as Claude Code, ChatGPT/Codex or Gemini CLI builds it from your CloudCart store with a read-only key, and you set the 8 AM schedule in the assistant itself.

Below you will find what belongs in the daily report, a ready prompt for the agent, the steps to create the key in the admin, and how each of the three tools runs a task on a schedule. The facts about CloudCart come from the platform documentation, and the scheduling steps come from the official documentation of Claude Code, ChatGPT and Gemini CLI. This article is about the owner's management report, the one you read with your coffee. Bookkeeping and tax reports for your accountant are a different topic.

What is a daily sales report for an online store?

A daily sales report is a short summary of yesterday in your store that you read in 2 minutes and use to decide what to do today. A good one holds 6 to 9 numbers, a comparison with an earlier period and a list of actions. Anything longer is a dashboard, and dashboards get opened rarely.

The difference from a monthly sales analysis is the purpose. The monthly analysis answers "where is the store heading", while the daily report catches a problem while it is still small: a payment method that stopped working, a top 5 product that sold out, orders that have been sitting unshipped since yesterday. The formulas and benchmarks for the core metrics (AOV, conversion rate, LTV, ROAS, margin) are in the guide to ecommerce KPIs. This article turns them into a daily habit.

What to include in a daily sales report: 9 lines

A daily sales report for an online store has 9 lines: revenue, orders, average order value, top products, pending orders, stock, abandoned carts, new vs returning customers and discount codes. Each line has a threshold at which you act. Without a threshold, a number is only information.

Line in the reportWhere the agent gets itCompared withWhen to act
Yesterday's revenueThe day's orders, by the statuses chosen in the Analytics settingsSame weekday last weekA drop of more than 30% with no holiday or promotion behind it
Number of ordersThe day's ordersSame weekday last weekFalls together with revenue: check payments and checkout
Average order value (AOV)Revenue ÷ ordersAverage of the last 28 daysDown more than 10% two days in a row
Top 5 productsOrder linesYesterday vs the weekA new product in the top 5: check its stock
Pending ordersOrders not yet shippedBy age: older than 24 hoursAny order older than 24 hours without shipping
StockProduct quantities and the low-stock thresholdSales over 14 daysA top 20 product runs out before the next delivery
Abandoned cartsThe Abandoned list under OrdersYesterday vs the averageA high-value cart from a registered customer
New vs returning customersCustomers on the ordersReturning share over 28 daysThe share falls three weeks in a row
Discount codesDiscounts on the ordersShare of orders with a codeA code is used more than planned

The report ends with three actions for the day, ranked by money. "Reorder 40 units of Colombia 250 g, stock covers 3 days" is an action. "Stock is low" is only an observation.

Conversion rate and sessions stay out of the daily report, because over a single day they jump around and rarely lead to a decision. The agent reads them through the same key from the Analytics reports (sessions, cart conversion), so put them in the weekly report. If you also use Google Analytics 4, compare with it once a week.

Analytics dashboard, order export or AI agent: which one when?

CloudCart gives you three ways to look at sales: the Analytics dashboard, the order export to CSV and the AI agent. The dashboard answers the questions it was built for, the export is for your accountant, and the agent builds the report you actually need and sends it on a schedule.

Analytics dashboardOrder exportAI agent with a key
WhereAnalytics → the Total Sales card and the othersOrders → Export buttonClaude Code, ChatGPT/Codex, Gemini CLI
FormatCards and chartsCSV only, a fixed set of 46+ columnsText and a table, in your language
More than 50 ordersNo differenceThe file arrives by email (up to 50 orders download at once); with two-factor authentication on, every export asks for a codeNo difference
Stock and carts in one reportSeparate screensNoYes
Conversion rate and sessionsYesNoYes, from the Analytics reports
Every morning on a scheduleNoNoYes, through the tool's scheduler

One detail keeps the report from showing wrong numbers. The Total Sales card in Analytics counts orders by the statuses selected in the Analytics settings (the gear icon at the top right of the dashboard; by default paid, completed, pending, authorized and fulfilled) and sums the order value without shipping. If the agent counts every order including shipping, its number will be higher. That is why the prompt below tells it to count by the same statuses and without shipping, so it matches the dashboard.

How to connect the AI agent with a read-only key: 6 steps

The AI agent reads your store through a PAT token (Personal Access Token), a personal access key the store owner creates in the admin. For the report, the Read Only level is enough: the agent sees everything and can change nothing.

  1. Connect the assistant. Open Claude Code, ChatGPT Codex, Cursor, VS Code or Gemini CLI and paste the prompt from the AI assistant store page. The assistant installs the CloudCart tools itself and first asks which language you want to work in.
  2. Open PAT Tokens. In the admin: Settings → PAT Tokens, or the user menu at the bottom left → PAT Tokens. Only the store owner can open this screen; administrators and moderators cannot create keys.
  3. Create a key. Click Create Token and give it a name, for example "Morning report". The name tells you later which key does what.
  4. Choose Read Only. In the Permissions section the Read Only card is selected by default and marked as recommended. Leave it.
  5. Set an expiry and IP (optional). Under Advanced Settings switch off "No expiration" and pick a date, for example 3 months ahead. If the agent runs only from your office computer, add its IP address; a key allows up to 20 addresses or networks.
  6. Copy the key straight away. The key starts with cc_pat_ and is shown only once. The platform stores only a fingerprint of it, so a lost key cannot be recovered: you delete it and create a new one. Give the key to the assistant together with your store address.

The detailed steps for each tool are on the pages CloudCart in Claude Code, CloudCart in ChatGPT Codex and CloudCart in Gemini CLI. What a full working day with the agent looks like is in the guide to running an online store with Claude.

If you sell in several countries with a separate store for each one, in its own language and currency, create a read-only key in every store and ask for one report with a section per store. Each store has its own Analytics, so its numbers stay comparable with its own dashboard.

The daily sales report prompt: ready to copy

The report prompt is an instruction that sets the period, the counting rules, the format and the actions. Write it once and use it unchanged every day, so the numbers compare fairly from one morning to the next.

"Make the morning sales report for the store for yesterday, in the store's time zone. You only read, you change nothing. Count orders by the statuses from the Analytics settings and their value without shipping. Give me: 1) revenue, number of orders and average order value against the same weekday last week, in percent; 2) the top 5 products by revenue; 3) orders not shipped for more than 24 hours, with number and amount; 4) products below the low-stock threshold and top 20 products whose stock lasts less than 7 days at the sales rate of the last 14 days; 5) yesterday's abandoned carts with number of items and amount; 6) the share of new and returning customers; 7) the discount codes used yesterday. No more than 15 lines. End with three actions for today, ranked by money. If you cannot check something, say so instead of guessing."

The last sentence matters most. It makes the agent say "I found no shipping data" instead of inventing a number. When something in the report looks odd, ask in the same chat "show me how you calculated line 1", and the agent shows the period, the statuses and the orders behind the figure.

Variations for your store

  • Large catalog. Add "check stock only for products with sales in the last 30 days", so you don't get a list of 400 items.
  • Cash on delivery. If you offer it, add "separate cash-on-delivery orders from card payments", so you see how much money has not been collected yet.
  • One store, several currencies. Add "split revenue by currency", because Analytics sums in the store currency and does not convert.
  • Seasonal store. Compare with the same day last year instead of last week during Black Friday and December.

How to get the report every morning at 8 AM

You set the schedule in the AI tool: Claude Code and ChatGPT have built-in scheduled tasks, and Gemini CLI runs on a schedule from your computer's own scheduler. These features change often, so open the documentation link before you set up the task.

Claude Code: scheduled tasks in the desktop app

In the Claude desktop app, open the Code tab, click Scheduled in the sidebar and then New task. Give it a name, paste the prompt from the previous section, turn on Only on this computer under Advanced settings, pick a folder, and in Trigger choose Daily at 8:00, or Weekdays if you don't work on Saturday and Sunday. You can also simply write in a chat "every morning at 8 make the morning store report", and Claude creates the task for you (Claude Code documentation).

A local task runs only while the app is open and the computer is awake, a few minutes after the set time. If the computer slept through 8 AM, the app starts one catch-up run for the missed time when it wakes. Each run opens its own session, which you find in the task's History list. Cloud tasks in Claude Code run with the computer off but have no access to local files, and the /loop command needs an open session (comparison of the scheduling options). For a daily report, use the task in the desktop app.

The first time, click Run now and approve the tools the agent asks for with "always allow". That way, the following mornings the task won't stop and wait for approval.

ChatGPT and Codex: scheduled tasks

In ChatGPT and Codex you create a scheduled task by writing in a chat what to do and when, for example "every day at 8 AM make the morning store report". The results land in Scheduled, which works as an inbox with an unread marker. A task that needs local files requires the computer to be on and the desktop app to be running (ChatGPT documentation).

Gemini CLI: a non-interactive prompt and the system scheduler

Gemini CLI has no built-in scheduler. It accepts a prompt without the interactive interface through the -p flag, for example gemini -p "Make the morning report…" > report.txt, and you set the time with cron on Mac and Linux or Task Scheduler on Windows (Gemini CLI documentation). The same works for Claude Code in the terminal through claude -p, if you prefer cron.

ToolHow it runs at 8 AMWhere the report isCondition
Claude Code (desktop app)Scheduled → New task → Daily 8:00The task's HistoryApp open, computer awake
ChatGPT / Codex (app)A line in a chat: "every day at 8 AM…"ScheduledFor local files: computer on, app running
Gemini CLIcron or Task Scheduler with gemini -pThe file you setComputer on

Important: the scheduled task uses the same read-only key. Never give an overnight task a key that can write. If you want the agent to act on the report, make the changes in a chat, with "show me first" and your confirmation.

How to read the report in 2 minutes: 6 signals and what to do

Read the morning report from the top and stop at the first line that has crossed its threshold. The six signals below cover nearly every morning when something in the store has gone wrong.

  1. Revenue is down, and so are orders. Place a test order with a card and with every other payment method you offer. The most common cause is a payment or shipping method that stopped working at checkout.
  2. Revenue is down, orders are the same. Average order value has dropped: check whether a discount code is spreading wider than planned and whether a high-priced product has sold out.
  3. Orders older than 24 hours without shipping. Ship them today. Late delivery brings cancellations and bad reviews more than anything else.
  4. A top 20 product runs out within 7 days. Order from the supplier today. The low-stock notification comes for each product or variant separately, while the report gathers them into one list with how many days the stock lasts.
  5. A high-value abandoned cart. Open Orders → Abandoned, open the cart and send the customer a recovery link. The automatic abandoned cart email goes out by itself if it is switched on; the manual one is for customers you want to win back personally.
  6. The returning customer share is falling. This is a signal for the week, not the day: plan an email to customers who haven't bought in 60 to 90 days.

The abandoned carts on the CloudCart list belong to registered customers and email subscribers who have been inactive longer than the set time (60 minutes by default). Every cart, recovered or not, leaves the list after 7 days without activity. The abandoned cart rate in Analytics is calculated differently: from all started carts that never reached checkout. So the count in the report and the rate in Analytics are not directly comparable. On average, 70.22% of online shopping carts are abandoned (Baymard Institute). How to win them back with emails and discounts is in the guide to abandoned carts and on the Abandoned carts page.

Example: the morning report of a coffee store

Here is the report the agent returns for a store selling coffee beans. The numbers are illustrative, and the format is exactly the one from the prompt above.

LineYesterday (Tuesday)Last TuesdayChange
Revenue without shipping€1,284€1,102+16.5%
Orders3129+6.9%
Average order value€41.42€38.00+9.0%
Unshipped for 24 h+2 orders, €870action
Below the stock thresholdEthiopia 250 g: 6 units, lasts 3 daysaction
Abandoned carts4 carts, €1563 carts, €98+1
Returning customers13 of 31 (42%)11 of 29 (38%)+4 points

The three actions the agent gives at the end: reorder 40 units of Ethiopia 250 g (it sells 2 a day); ship the two late orders today; send a recovery link for the €64 cart, because that customer has bought three times before. Average order value rose because the "3 origins × 250 g" bundle entered the top 5. How to build bundles like that is in the guide to average order value, upsell and cross-sell.

What you gain when an AI agent writes the report

The AI agent saves you a tour of 5 screens every morning and calculates things no dashboard shows on its own: how many days the stock lasts at the current sales rate, which customers with an abandoned cart have bought before, which ad channel brought orders. You read the finished conclusion and the three actions instead of assembling the numbers yourself.

TaskBy hand in the adminWith an AI agent
Revenue, orders, AOVAnalytics: 3 cards, then compare by handOne line with the change against the same weekday last week
Unshipped ordersOrders: filter by status and dateA list with number and amount
StockProducts: quantity without sales rateDays of stock for every top 20 product
Abandoned cartsOrders → Abandoned, one by oneRanked by value, with returning customers marked
MarketingMarketing suite and Sales by traffic source separatelyRevenue by channel in the same report
"Why?"A new export and a spreadsheetA question in the same chat: "show me the orders behind the drop"

The second gain is the action after the report. In a separate chat, with a key that can write, the agent prepares what the report recommends: a segment of customers who haven't bought in 60 to 90 days, a draft campaign for them, a new discount code or a new description for a product that is losing positions. It shows you what it will change first, and you confirm. Prompts for tasks like these are in the collection of ready AI prompts for an online store.

From the daily report to the weekly and monthly sales analysis

The daily report catches problems, the weekly one shows the trend, and the monthly one sets the budget. All three come from the same key, with a different period and different questions.

ReportWhenWhat it addsThe decision you make
DailyEvery day at 8 AMYesterday vs the same weekday last week, stock, cartsWhat to ship, reorder or check today
WeeklyMonday at 8 AMThe week vs the previous one, top 10 products, returning customer share, sessions and conversion rate from AnalyticsWhich products to advertise, which email to send
MonthlyFirst working dayRevenue, AOV, LTV, CAC, ROAS and margin (with ad spend and cost prices from you)Ad budget and prices

For the weekly and monthly reports, create separate scheduled tasks, each with its own prompt. The formulas for LTV, CAC, ROAS and margin are in the guide to the 10 ecommerce KPIs, and why running the store through an agent saves hours every week is explained in why manage your store through an AI agent.

Email, ads, Search Console and mobile traffic in the weekly report

The weekly report becomes a management report when the channels that bring the sales sit next to them: email campaigns, ads on Meta, Google Ads and TikTok, Google search and the share of mobile visits. The agent takes the store data with the CloudCart key, and the ad platform data only if your assistant has connected access to it (a connector or MCP server in Claude, ChatGPT or Gemini CLI).

Line in the weekly reportWhere it comes fromWhat you decide
Mobile vs desktop visitsAnalytics → Sessions by device type (mobile, desktop and tablet, compared with the previous period)If most visits are mobile but orders come from desktop, test checkout on a phone
Email campaignsMarketing → Campaigns → Statistics: subscribers reached, opens, clicks, conversion and revenue, updated every hourWhich campaign to copy and which step to rewrite
Marketing sales vs total revenueMarketing → Marketing suite: Marketing sales (orders from campaigns, recovered carts and UTM) next to total revenue, by channel Email, SMS, Viber and Web pushHow much of the revenue your marketing brings and which channel to push
Revenue from Google Ads, Meta and TikTokAnalytics → Sales by traffic source: ad orders are recognised by the parameter in the address (gclid and gad_source for Google Ads, fbclid for Meta Ads, ttclid for TikTok Ads)Which ad channel brought orders, and how much money
Spend and ROAS by channelThe ad accounts, if the assistant has connected access; otherwise the spend you enterROAS by channel: where to move the budget
Google Search ConsoleClicks and positions by query, if the assistant has connected accessWhich product pages are losing positions and need a new description

Revenue by ad channel comes from the store itself, without connecting the ad accounts. CloudCart records the source on the first visit of the session and attaches it to the order, even if the customer comes back later by typing your address. So an order from a Meta ad completed an hour later stays on the Meta Ads line. The card counts by the statuses from the Analytics settings and without shipping, just like Total Sales. The agent reads it through the read-only key (the sales-by-traffic-source report in the Admin API), and for ROAS you divide that revenue by the spend from the ad platform. The tables at the bottom of the Marketing suite (campaigns, products, RFM) refresh every 6 hours, so revenue from a campaign sent today can appear there up to 6 hours later. In the morning report, yesterday's campaigns are already counted.

The share of mobile visits is the line that most often explains a drop in conversion rate. When you read it, keep two Analytics rules in mind: in most cards tablets count as desktop (the Sessions by device type card shows them on a separate line), and one person on a phone and then on a laptop counts as two sessions. How to make the store easy to use on a phone is in the guide to the mobile version of an online store. For the channels, see email marketing for an online store, an email campaign in CloudCart and the Marketing Suite step by step, Meta ads, TikTok Shop and TikTok ads, Google Ads for an online store and Google Search Console for an online store; the campaigns in CloudCart are on the Campaigns page.

Is it safe for the agent to read the store every day?

Yes, if the key is Read Only: with such a key the agent runs only read requests and cannot change a price, an order or a setting. The rights come from the key you created.

  • Expiry. A new key has no expiry by default. Set an expiry date and renew the key, for example every 3 months.
  • Stop it with one click. In PAT Tokens every key has an active switch. A switched-off key stops at once and works again with the same value when you switch it back on. Deleting is permanent.
  • Last used. The last-used column updates only on successful requests, so it reliably shows whether the report really runs every morning.
  • Request limit. The CloudCart Admin API allows 300 requests a minute per store, shared by the mobile app, agents and scripts. The morning report uses a small part of that.
  • A separate key for each task. Create one key for the report and another for work in chat. If you stop one, the other keeps working.
  • Customer data in the report. Names and emails of customers with abandoned carts are personal data under the GDPR, whose data minimisation principle says to process only what you need (GDPR on EUR-Lex). Ask for order numbers and amounts in the scheduled report, and look up the customer in the admin only when you act.

Common daily sales report mistakes

  • The agent's number doesn't match Analytics. The cause is almost always the statuses and shipping. Tell the agent to count by the statuses from the Analytics settings and without shipping.
  • Comparing with yesterday instead of the same weekday last week. Monday and Saturday differ naturally; comparing Tuesday with Tuesday shows the real change.
  • A 40-line report. Nobody reads a long report. Keep it to 15 lines and three actions.
  • An overnight task with write access. The schedule is for reading. Make changes in a chat, after you see what will change.
  • Conversion rate in the daily report. Over a single day, conversion rate swings and leads to wrong decisions. Ask the agent for it in the weekly report, from the Analytics reports.
  • The prompt changes every day. Different rules give different numbers. Save the prompt in the task and touch it rarely.

CloudCart gives you the data for the morning report through a read-only key, and Claude Code, ChatGPT or Gemini CLI arrange it and send it at 8 AM every day. Plan prices are on the pricing page (billed annually, excluding VAT: Baby Pack €14, Starter Pack €33, CC Pro €83, CC Master €249 a month). Create a store for €1 and get your first morning report after your first day with orders. Questions: support@cloudcart.com.

Frequently asked questions

Connect an AI assistant (Claude Code, ChatGPT/Codex or Gemini CLI) to your store with a Read Only key from PAT Tokens and give it a scheduled task for 8 AM. In Claude Code that is Scheduled → New task → Daily, in ChatGPT it is a line like "every day at 8 AM…", and Gemini CLI runs with cron. The report appears in the task history or in the file you set.

Revenue, number of orders and average order value against the same weekday last week, the top 5 products, orders unshipped for more than 24 hours, products below the stock threshold, abandoned carts, the returning customer share and the discount codes used. End with three actions for the day. No more than 15 lines.

Yes. Claude Code and ChatGPT have built-in scheduled tasks that run the report at a set time, and Gemini CLI runs on a schedule from your computer's system scheduler. Local tasks work while the computer is on; if it was asleep, Claude Code starts one catch-up run when it wakes.

Usually the agent counts other statuses or includes shipping. The Total Sales card in CloudCart counts orders by the statuses from the Analytics settings and sums their value without shipping. Tell the agent to use the same rules and the two numbers match.

Yes. With a Read Only key the agent reads the CloudCart Analytics reports, sessions and conversion included, besides orders, products, stock, customers and abandoned carts. Conversion rate swings a lot from day to day, so look at it in the weekly report.

Yes. Revenue from Google Ads, Meta Ads and TikTok Ads is in Analytics → Sales by traffic source, and the agent reads it with the Read Only key. Spend and clicks come from the ad accounts only if the assistant has connected access to them through a connector or MCP server, and Search Console works the same way. Put the channels in the weekly report, because daily spend and clicks swing a lot.

With a Read Only key the agent cannot change anything in the store. You can give the key an expiry date and an IP restriction, and stop it with one switch in PAT Tokens. Only the store owner can create a key, and it is shown only once.

Yes, as a CSV file that opens in Excel: Orders → Export downloads the orders matching the current filters. With more than 50 orders the file arrives by email, and with two-factor authentication on you enter a code first. For daily use, the AI agent's report saves you this export.

Sources

  1. Claude Code documentationcode.claude.com
  2. comparison of the scheduling optionscode.claude.com
  3. ChatGPT documentationlearn.chatgpt.com
  4. Gemini CLI documentationgoogle-gemini.github.io
  5. Baymard Institutebaymard.com
  6. GDPR on EUR-Lexeur-lex.europa.eu
The CloudCart teamChecked against the platform documentation. Questions: support@cloudcart.com

Build your online store

The first 3 months on every plan are €1/month. Questions: support@cloudcart.com

Create a store for €1