Before you start
What “working” looks like
- Your sales export sits in one tab, exactly as your system produced it.
- A checks panel tells you when something is wrong before you trust the numbers.
- The dashboard total matches your accounting system’s sales report for the same months.
- You can see monthly sales, the latest month at a glance, top customers and sales by category.
- Next month, you import the new export and everything updates. Nothing is rebuilt.
What you need
- A sales export at invoice-line level for the last 12 complete months, as CSV or Excel (step 02 explains which report).
- Your system’s total sales excluding VAT for the same months, to check against.
- A Google account the business controls (see guide 01 for why).
- For the free route: a free ChatGPT account at chatgpt.com.
- For the AI workspace route: Claude Pro or ChatGPT Plus, with that company’s desktop app on Mac or Windows.
No export to hand yet? Practise with our invented sample export (CSV): 12 months of sales for a fictional office-supplies business. Every name and number in it is made up. The expected results in this guide are for that file.
01
Decide what the dashboard must answer
A dashboard that answers everything answers nothing. This guide builds one that answers three questions most owners ask every month:
- Are sales growing, and how did the latest month compare with the one before?
- Which product categories bring in the money?
- Which customers matter most, and has any of them gone quiet?
If your questions are different, ask ChatGPT for help before you start. It needs no data for this:
Copy this prompt
I run a [type of business] with about [number] customers. Each month I want a one-page sales dashboard built in Google Sheets from my accounting export. Suggest the five measures that would most help me decide where to focus next month, and explain in one sentence why each matters. Don’t suggest anything that needs data beyond invoice date, customer, product, category and amount.
02
Export the right report
Every system names this report differently. Look for a sales report that lists one row per invoice line, often called “sales by item”, “sales detail”, “invoice line detail” or “item sales”. A monthly summary report is not enough.
- Choose the last 12 complete months. Leave out the current, unfinished month.
- Make sure the report includes: invoice date, invoice or credit-note number, customer, product, category (or product group) and the amount excluding VAT.
- Include credit notes. They reduce sales and belong in the total.
- Export as CSV if you can; Excel also works.
- Run your system’s normal sales summary for the same months and write down the total excluding VAT. You will check against it in step 04.
Choose your route
Two ways to build the dashboard
Free route: Google Sheets with ChatGPT as a helper
You build the workbook yourself with the formulas below. ChatGPT adapts them to your columns and explains errors. Your sales data never leaves your spreadsheet.
Continue with the free route ↓AI workspace route: Claude Cowork or ChatGPT Work
For readers with Claude Pro or ChatGPT Plus. The AI builds the whole workbook to the same specification, and your job is to check its work. This route sends your sales data to the AI company.
Continue with the AI workspace route ↓03 · Free route
Set up the spreadsheet and import the export
- In Google Drive, create a folder named
Sales dashboard – liveand a new Google Sheet inside it namedSales dashboard. - Rename the first tab
Data. Add two more tabs namedChecksandDashboard. - With the
Datatab open, select File → Import → Upload and choose your export. - For Import location, choose Replace current sheet. Leave the separator on Detect automatically. Select Import data.
- Select View → Freeze → 1 row so the headings stay visible.
This guide assumes the sample file’s column order: A Invoice date, B Invoice number, C Document type, D Customer code, E Customer name, F Sales rep, G Product code, H Product description, I Category, J Quantity, K Unit price excl VAT, L Amount excl VAT, M VAT, N Amount incl VAT. If yours is different, step 05 shows how to adapt the formulas.
04 · Free route
Check the data before you build anything
In the Checks tab, enter these labels in column A and formulas in column B. The last column shows what the sample export should give.
| Label | Formula | Sample result |
|---|---|---|
| Rows of data | =COUNTA(Data!A2:A) | 1004 |
| Total sales excl VAT | =SUM(Data!L2:L) | R2 210 729 |
| First date | =MIN(Data!A2:A) | 1 Sep 2025 |
| Last date | =MAX(Data!A2:A) | 30 Aug 2026 |
| Dates not recognised | =COUNTA(Data!A2:A)-COUNT(Data!A2:A) | 0 |
| Credit notes | =COUNTIF(Data!C2:C,"Credit note") | 5 |
| Credit note value | =SUMIF(Data!C2:C,"Credit note",Data!L2:L) | −R1 225 |
| Lines with no category | =COUNTIFS(Data!A2:A,"<>",Data!I2:I,"") | 3 |
| Lines that appear more than once | =SUMPRODUCT((Data!B2:B<>"")*(COUNTIFS(Data!B2:B,Data!B2:B,Data!G2:G,Data!G2:G,Data!L2:L,Data!L2:L)>1)) | 2 |
Then work through these before going further:
- Total sales excl VAT must match the total you wrote down in step 02. If it doesn’t, the export is missing something, or includes VAT or extra months.
- First and last date should cover your 12 complete months and nothing else.
- Dates not recognised must be 0. If not, see “Dates show as text” under common fixes.
- Lines with no category will show as a blank group in the category view. Fix the product setup in your system when you can.
- Lines that appear more than once counts both copies. In the sample, one line was exported twice. Genuine repeats (the same product twice on one invoice) are possible; check a couple before assuming an error.
05 · Free route
Match the formulas to your export
Using the sample file? Skip to step 06. If your export’s columns are different, let ChatGPT rewrite the formulas. Give it the column headings and a few invented rows, never the export itself.
- Copy your header row from the
Datatab. - Write two or three example rows by hand, with invented customer names and rounded amounts, so ChatGPT can see the date and number formats.
- Open chatgpt.com, start a new chat and paste the prompt below with your details filled in.
Copy this prompt
I’m building a sales dashboard in Google Sheets. My sales export is in a tab called Data. These are its column headings, in order, starting in column A: [paste header row]. Here are three example rows with invented names: [paste rows].
The guide I’m following expects these columns: A invoice date, B invoice number, C document type (Invoice or Credit note), E customer name, G product code, I category, L amount excluding VAT.
1. Tell me which of my columns holds each of these, and flag anything missing or ambiguous instead of guessing. 2. Rewrite each of these formulas for my columns, one per line: [paste the formulas from steps 04 and 06–08].
06 · Free route
Build the monthly view
- In the
Dashboardtab, typeMonthin A4,Sales excl VATin B4 andInvoicesin C4. - In A5, enter
=EDATE(EOMONTH(MAX(Data!A2:A),-1)+1,-11). This finds the month 11 months before your latest one. - In A6, enter
=EDATE(A5,1)and copy it down to A16. You now have 12 months ending with the latest. - In B5, enter
=SUMIFS(Data!L2:L,Data!A2:A,">="&A5,Data!A2:A,"<"&EDATE(A5,1))and copy it down to B16. - In C5, enter
=COUNTUNIQUEIFS(Data!B2:B,Data!C2:C,"Invoice",Data!A2:A,">="&A5,Data!A2:A,"<"&EDATE(A5,1))and copy it down to C16. - Select A5:A16 and choose Format → Number → Custom date and time, then a month-and-year format such as “Aug 2026”.
- Select A4:B16 and choose Insert → Chart. In the chart editor, set the chart type to Column chart.
With the sample, B16 (August 2026) shows R212 939 and B15 (July) shows R202 035. The 12 months in column B add up to the total in your checks panel.
07 · Free route
Show the latest month at a glance
In the Dashboard tab, put these labels in E4:E8 and formulas in F4:F8:
| Label | Formula | Sample result |
|---|---|---|
| Latest month | =A16 | Aug 2026 |
| Sales excl VAT | =B16 | R212 939 |
| Change on previous month | =B16/B15-1 | 5.4% |
| Invoices | =C16 | 43 |
| Average sales per invoice | =B16/C16 | R4 952.07 |
Format F4 as month and year, F6 as a percentage, and F5 and F8 as currency. “Average sales per invoice” is net of credit notes, so a month with many returns will show a lower figure.
08 · Free route
Add top customers and categories
Top 10 customers, and who has gone quiet
- In H4, enter
=QUERY(Data!A1:N,"select E, sum(L) where E is not null group by E order by sum(L) desc limit 10 label E 'Customer', sum(L) 'Sales excl VAT'",1). It fills H4:I14 with your 10 largest customers over the 12 months. - In J4, type
Last 3 months. In J5, enter=SUMIFS(Data!L2:L,Data!E2:E,H5,Data!A2:A,">="&A14)and copy it down to J14.
In the sample, Riverside Interiors is the largest customer at R254 836. Karoo Logistics is second over the year but shows R0 for the last three months. That is the kind of line this view exists to catch: a large customer who has gone quiet deserves a call this week.
Sales by category
In H17, enter =QUERY(Data!A1:N,"select I, sum(L) where A is not null group by I order by sum(L) desc label I 'Category', sum(L) 'Sales excl VAT'",1). It lists every category with its sales over the 12 months, largest first, on the same page as everything else.
With the sample, Paper and printing leads at R1 043 574, and a row with a blank category shows the R7 671 on the three lines that have none.
03 · AI workspace route
Make a safe upload copy and turn off training
- Open your export and delete every column that names or identifies a person or business: customer name, sales rep, phone numbers, email addresses, physical addresses, ID numbers and bank details. Keep the customer code; the dashboard uses it instead of the name.
- On your computer, create a folder named
Sales dashboardand save the copy there assales-export-upload.csv. Practising? Do the same to the sample file: delete its Customer name and Sales rep columns. - In Claude: select your name, then Settings → Privacy, and turn off Help improve our AI models.
- In ChatGPT: open your account menu, then Settings → Data controls, and turn off Improve the model for everyone.
04 · AI workspace route
Open your AI workspace
Follow the instructions for the tool you pay for. Both lead to the same place.
Claude Cowork (Claude Pro)
- Install the Claude Desktop app for Mac or Windows from
claude.ai/downloadand sign in. - If your message box offers Chat and Cowork, select Cowork. Newer accounts have one combined experience and no separate option.
- Select Projects in the left navigation, create a project and choose Use an existing folder. Pick your
Sales dashboardfolder. - Leave the approval mode on Manual for the first build, so Claude asks before each action.
ChatGPT Work (ChatGPT Plus)
- Install the ChatGPT desktop app for Mac or Windows and sign in.
- In the message box, switch from Chat to Work.
- Keep Work locally selected, not Cloud. Only Work locally can use files on your computer.
- Give ChatGPT access to your
Sales dashboardfolder when it asks. Approve each action it proposes during the first build.
Both apps change often. If a label here doesn’t match what you see, look for the option to give the app access to a folder on your computer.
05 · AI workspace route
Ask for the whole workbook in one go
Paste this prompt into Claude or ChatGPT. It is the same for both.
Copy this prompt
Build a sales dashboard workbook from sales-export-upload.csv. It is a sales export at invoice-line level for the last 12 complete months.
Make three tabs. 1. Data: the export exactly as supplied. Do not change, sort, clean or remove anything. 2. Checks: live formulas showing the number of rows; total sales excluding VAT; the first and last invoice date; how many dates aren’t real dates; the number and value of credit notes; lines with no category; and lines that appear more than once (same invoice number, product and amount). 3. Dashboard: live formulas showing sales excluding VAT and the number of invoices for each of the last 12 months, ending with the latest month in the data, with a column chart; the latest month’s sales, change on the previous month, invoices and average sales per invoice; the top 10 customer codes by sales over the 12 months, with each one’s sales in the last three months beside it; and sales by category, largest first.
Rules: every number on Checks and Dashboard must be a formula that reads the Data tab, so replacing the Data tab next month updates everything. Use amounts excluding VAT. Credit notes stay in and reduce sales. Don’t invent or estimate anything. If a column you need is missing or unclear, stop and ask me.
Save it as Sales dashboard.xlsx in this folder. Then give me a short table of every value on the Checks tab.
06 · AI workspace route
Check its work
- Open the workbook. Select three numbers on the Dashboard tab and confirm the formula bar shows a formula, not a typed number.
- Compare the total on the Checks tab with the total you wrote down in step 02. Practising with the sample? Every Checks value should match the “Sample result” column in step 04.
- Compare one month on the Dashboard with your accounting system’s report for that month. With the sample, August 2026 is R212 939 from 43 invoices.
- Read the top 10 customer codes. With the sample, C001 leads at R254 836 and C002, second over the year, shows R0 for the last three months.
- If anything differs, tell the AI exactly which number is wrong and what it should be, and ask it to show the formula it used. Check again after every fix.
07 · AI workspace route
Save the monthly refresh
Keep this prompt. You will use it every month in step 09.
Monthly refresh prompt
This is my monthly sales dashboard refresh. Use my current Sales dashboard workbook and this month’s export, sales-export-upload.csv. Replace the whole Data tab with the new export exactly as supplied. Don’t change any formula, tab, chart or layout.
Then give me: every value on the Checks tab; the latest month’s sales, change on the previous month, invoices and average sales per invoice; any top-10 customer code whose last three months are well below their usual level; and anything unusual in the checks. Save the result as a new workbook named Sales dashboard followed by the month and year.
Claude Cowork
Open your project and paste the prompt into its Instructions, so Claude follows it in every task in that project. Each month you will start a new task there and say “Run the monthly refresh.”
Claude’s scheduled tasks can’t read folders on your computer and don’t offer a monthly option, so you run the refresh yourself after exporting. That suits the job: someone has to export from your system first anyway.
ChatGPT Work
Save the prompt as a note in your Sales dashboard folder. Each month, open the desktop app, switch to Work with Work locally selected, give it the same folder and paste the prompt.
Work can also save a reference file with reusable instructions as a template, which saves pasting the prompt each month.
08 · AI workspace route
Know what you’re trusting
- The workbook is yours. It keeps working without the AI tool; only the refresh needs it.
- Keep last month’s workbook. If a refresh goes wrong, you can compare the two or go back.
- The AI’s summary is a convenience. The Checks tab is the evidence. Read the checks, not only the summary.
09
Refresh it next month
- Export the same report for the latest 12 complete months.
- Free route: open the
Datatab and repeat File → Import → Upload → Replace current sheet. AI workspace route: make the upload copy as in step 03, then run your saved refresh from step 07. - Open
Checks. Compare the total with your system’s sales summary and look at every other line. - Open
Dashboard. Everything has moved on by one month.
10
Keep it useful
- Monthly: refresh, check, then spend five minutes on the three questions from step 01. Write down one action.
- Quarterly: ask whether the three questions are still the right ones.
- When your system changes: compare the new export’s columns with the old ones before importing, and use step 05 to adapt the formulas.
Common fixes
- Dates show as text (Dates not recognised is above 0)
- Check File → Settings → Locale matches the date format in your export, then import again. Exporting dates as year-month-day avoids the problem altogether.
- The total is higher than your accounting report
- Look for VAT-inclusive amounts, an extra month, or lines exported twice.
- A formula shows #ERROR! or #VALUE!
- If your spreadsheet uses semicolons, replace the commas between formula parts with semicolons. Otherwise paste the formula and error into ChatGPT and ask what is wrong, without any data.
- One customer appears twice with slightly different names
- “Riverside Interiors” and “Riverside Interiors (Pty) Ltd” split one customer’s total and can push them out of the top 10. Correct the name in your system. Or group by customer code instead: change every
EtoDin the top-customers formula, andData!E2:EtoData!D2:Din the Last 3 months formula. - The latest month looks too low
- The export probably includes the current, unfinished month. Export complete months only.
Official instructions used in this guide
Tool interfaces change. These official instructions were checked on 26 September 2026:
If you would rather not do this alone
Bring the export you have. We’ll help you turn it into numbers you can act on.
This guide is enough on its own when your sales come from one system, the checks panel matches your accounting report, and three questions cover what you need to know each month.
It’s worth getting help when:
- sales come from more than one system, such as a till and an online shop;
- the checks never quite match your accounting report;
- you need margins, targets or cash collected, not only sales;
- several people need different views of the same numbers;
- or you’ve built it and nobody uses it.