# 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.

Source: https://cloudcart.com/en/blog/ai-agent-daily-store-report · CloudCart · 2026-11-06

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](https://cloudcart.com/en/blog/ecommerce-kpi-metrics-ai-agent). 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 report | Where the agent gets it | Compared with | When to act |

| Yesterday's revenue | The day's orders, by the statuses chosen in the Analytics settings | Same weekday last week | A drop of more than 30% with no holiday or promotion behind it |

| Number of orders | The day's orders | Same weekday last week | Falls together with revenue: check payments and checkout |

| Average order value (AOV) | Revenue ÷ orders | Average of the last 28 days | Down more than 10% two days in a row |

| Top 5 products | Order lines | Yesterday vs the week | A new product in the top 5: check its stock |

| Pending orders | Orders not yet shipped | By age: older than 24 hours | Any order older than 24 hours without shipping |

| Stock | Product quantities and the low-stock threshold | Sales over 14 days | A top 20 product runs out before the next delivery |

| Abandoned carts | The Abandoned list under Orders | Yesterday vs the average | A high-value cart from a registered customer |

| New vs returning customers | Customers on the orders | Returning share over 28 days | The share falls three weeks in a row |

| Discount codes | Discounts on the orders | Share of orders with a code | A 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](https://cloudcart.com/en/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](https://cloudcart.com/en/blog/analytics-reports), 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 dashboard | Order export | AI agent with a key |

| Where | Analytics → the Total Sales card and the others | Orders → Export button | Claude Code, ChatGPT/Codex, Gemini CLI |

| Format | Cards and charts | CSV only, a fixed set of 46+ columns | Text and a table, in your language |

| More than 50 orders | No difference | The file arrives by email (up to 50 orders download at once); with two-factor authentication on, every export asks for a code | No difference |

| Stock and carts in one report | Separate screens | No | Yes |

| Conversion rate and sessions | Yes | No | Yes, from the Analytics reports |

| Every morning on a schedule | No | No | Yes, 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](https://cloudcart.com/en/blog/ai-assistant-store-management) (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.

- 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.

- 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.

- Create a key. Click Create Token and give it a name, for example "Morning report". The name tells you later which key does what.

- Choose Read Only. In the Permissions section the Read Only card is selected by default and marked as recommended. Leave it.

- 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.

- 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](https://cloudcart.com/en/offer/ai-claude-code), [CloudCart in ChatGPT Codex](https://cloudcart.com/en/offer/ai-chatgpt-codex) and [CloudCart in Gemini CLI](https://cloudcart.com/en/offer/ai-gemini-cli). What a full working day with the agent looks like is in the [guide to running an online store with Claude](https://cloudcart.com/en/blog/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.

> AI assistant store One read-only key, and the report arrives every morning The agent pulls revenue, orders, stock and carts into one report, with no export and no spreadsheet. Connecting it costs nothing extra from CloudCart, and you stop the key with one switch in PAT Tokens. How to connect the AI assistant →

## 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](https://code.claude.com/docs/en/desktop-scheduled-tasks)).

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](https://code.claude.com/docs/en/scheduled-tasks)). 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](https://learn.chatgpt.com/docs/automations?surface=app)).

### 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](https://google-gemini.github.io/gemini-cli/docs/cli/headless.html)). The same works for Claude Code in the terminal through claude -p, if you prefer cron.

| Tool | How it runs at 8 AM | Where the report is | Condition |

| Claude Code (desktop app) | Scheduled → New task → Daily 8:00 | The task's History | App open, computer awake |

| ChatGPT / Codex (app) | A line in a chat: "every day at 8 AM…" | Scheduled | For local files: computer on, app running |

| Gemini CLI | cron or Task Scheduler with gemini -p | The file you set | Computer 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.

- 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.

- 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.

- Orders older than 24 hours without shipping. Ship them today. Late delivery brings cancellations and bad reviews more than anything else.

- 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.

- 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.

- 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](https://baymard.com/lists/cart-abandonment-rate)). How to win them back with emails and discounts is in the [guide to abandoned carts](https://cloudcart.com/en/blog/abandoned-carts-online-store) and on the [Abandoned carts](https://cloudcart.com/en/abandoned-carts) page.

> CloudCart Pay 0% transaction fee through Dec 31, 2026 When the report shows card orders falling, check payments first. With CloudCart Pay, cards, Apple Pay and Google Pay are built into your checkout, and until the end of 2026 no card fee comes out of a paid order. How CloudCart Pay works →

## 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.

| Line | Yesterday (Tuesday) | Last Tuesday | Change |

| Revenue without shipping | €1,284 | €1,102 | +16.5% |

| Orders | 31 | 29 | +6.9% |

| Average order value | €41.42 | €38.00 | +9.0% |

| Unshipped for 24 h+ | 2 orders, €87 | 0 | action |

| Below the stock threshold | Ethiopia 250 g: 6 units, lasts 3 days |  | action |

| Abandoned carts | 4 carts, €156 | 3 carts, €98 | +1 |

| Returning customers | 13 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](https://cloudcart.com/en/blog/average-order-value-upsell-cross-sell).

> 0% commission The growth in your report stays in your margin At +16.5% revenue, a platform charging a 2% commission takes a share of the growth too. On CloudCart you pay a fixed monthly plan and 0% of your sales, so a better morning in the report is a better morning in your bank account. Calculate your commission →

## 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.

| Task | By hand in the admin | With an AI agent |

| Revenue, orders, AOV | Analytics: 3 cards, then compare by hand | One line with the change against the same weekday last week |

| Unshipped orders | Orders: filter by status and date | A list with number and amount |

| Stock | Products: quantity without sales rate | Days of stock for every top 20 product |

| Abandoned carts | Orders → Abandoned, one by one | Ranked by value, with returning customers marked |

| Marketing | Marketing suite and Sales by traffic source separately | Revenue by channel in the same report |

| "Why?" | A new export and a spreadsheet | A 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](https://cloudcart.com/en/blog/ai-prompts-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.

| Report | When | What it adds | The decision you make |

| Daily | Every day at 8 AM | Yesterday vs the same weekday last week, stock, carts | What to ship, reorder or check today |

| Weekly | Monday at 8 AM | The week vs the previous one, top 10 products, returning customer share, sessions and conversion rate from Analytics | Which products to advertise, which email to send |

| Monthly | First working day | Revenue, 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](https://cloudcart.com/en/blog/ecommerce-kpi-metrics-ai-agent), and why running the store through an agent saves hours every week is explained in [why manage your store through an AI agent](https://cloudcart.com/en/blog/ai-agent-online-store-why).

## 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 report | Where it comes from | What you decide |

| Mobile vs desktop visits | Analytics → 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 campaigns | Marketing → Campaigns → Statistics: subscribers reached, opens, clicks, conversion and revenue, updated every hour | Which campaign to copy and which step to rewrite |

| Marketing sales vs total revenue | Marketing → Marketing suite: Marketing sales (orders from campaigns, recovered carts and UTM) next to total revenue, by channel Email, SMS, Viber and Web push | How much of the revenue your marketing brings and which channel to push |

| Revenue from Google Ads, Meta and TikTok | Analytics → 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 channel | The ad accounts, if the assistant has connected access; otherwise the spend you enter | ROAS by channel: where to move the budget |

| Google Search Console | Clicks and positions by query, if the assistant has connected access | Which 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](https://cloudcart.com/en/blog/mobile-version-online-store). For the channels, see [email marketing for an online store](https://cloudcart.com/en/blog/email-marketing-online-store), [an email campaign in CloudCart and the Marketing Suite step by step](https://cloudcart.com/en/blog/email-campaign-cloudcart-step-by-step), [Meta ads](https://cloudcart.com/en/blog/meta-ads-online-store), [TikTok Shop and TikTok ads](https://cloudcart.com/en/blog/tiktok-shop-tiktok-ads), [Google Ads for an online store](https://cloudcart.com/en/blog/google-ads-online-store) and [Google Search Console for an online store](https://cloudcart.com/en/blog/google-search-console-online-store); the campaigns in CloudCart are on the [Campaigns](https://cloudcart.com/en/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.

> New store €1/month for the first 3 months on every plan The sales reports, abandoned carts and the AI assistant connection are on every plan from Baby Pack up, so your morning report can start with your first orders. The offer is for new stores until Dec 31, 2026 and applies automatically, with no code. What €1 includes →

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](https://cloudcart.com/en/pricing) (billed annually, excluding VAT: Baby Pack €14, Starter Pack €33, CC Pro €83, CC Master €249 a month). [Create a store for €1](https://cloudcart.com/en/offer/online-store-for-1-euro) and get your first morning report after your first day with orders. Questions: support@cloudcart.com.

## Frequently asked questions

**How do I get a sales report every morning?**

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.

**What should a daily sales report include?**

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.

**Can AI send me a sales report automatically?**

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.

**Why doesn't the AI agent's report match Analytics?**

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.

**Does the AI agent see conversion rate and sessions?**

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.

**Can the report include Google Ads, Meta and Search Console?**

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.

**Is it safe to give an AI agent access to my store?**

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.

**Can I export a sales report to Excel from CloudCart?**

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.
