Online Selling & Inventory

Sales Tracker Spreadsheet: Log Every Sale, Track Targets by Rep and See Revenue, AOV and Margin at a Glance

How to build a sales tracker spreadsheet in Excel or Google Sheets: one sales log table, monthly summaries with SUMIFS or a PivotTable, targets and attainment by rep, average order value, gross margin, repeat customers and commission, with a worked example for a small wholesale team.

Sales tracking dashboard with monthly revenue, sales chart and performance indicators

Quick answer: a sales tracker spreadsheet works best with one log table where every sale is a row (date, order ID, customer, rep or channel, product, quantity, unit price, discount, cost), plus a summary sheet that rolls the log up by month, rep, product and customer. The core formula is a conditional sum:

=SUMIFS(Sales[Revenue],Sales[Month],$A5,Sales[Rep],B$4)

From there you can track revenue against targets, average order value (AOV), gross margin, repeat customers and commission without retyping anything. Below is the structure and a worked example for a small wholesale team; all figures are illustrative.

Step 1: The sales log

Column What goes in it Formula or tip
Date Order or invoice date Data validation: date
Month First day of the month =EOMONTH([@Date],-1)+1
Order ID Unique reference Use it to link invoices
Customer Name or customer ID Drop-down from a Customers table
Rep / Channel Who or where the sale came from Drop-down
Product / SKU From a Products table Drop-down
Qty, Unit price, Discount % Inputs
Revenue Net of discount =[@Qty]*[@[Unit price]]*(1-[@[Discount %]])
Unit cost Looked up =XLOOKUP([@SKU],Products[SKU],Products[Cost])
Gross profit Revenue − cost =[@Revenue]-[@Qty]*[@[Unit cost]]
Status Paid, invoiced, returned, cancelled Exclude cancelled rows from totals

Format the range as an Excel table named Sales (Ctrl+T). New rows inherit the formulas, and every summary updates automatically. Keep sales tax out of Revenue so your figures stay comparable across states and channels.

Once you have several comparable periods, use completed sales as the baseline for a sales forecast. Keep open deals separate from booked revenue so the same sale is not counted twice.

Step 2: Monthly summary

  • Revenue by month: =SUMIFS(Sales[Revenue],Sales[Month],A5,Sales[Status],"<>Cancelled")
  • Number of orders (one row per order): =COUNTIFS(Sales[Month],A5,Sales[Status],"<>Cancelled"). If an order can span several rows, count unique IDs in Excel 365: =COUNTA(UNIQUE(FILTER(Sales[Order ID],Sales[Month]=A5)))
  • AOV: =Revenue/Orders
  • Gross margin %: =SUMIFS(Sales[Gross profit],Sales[Month],A5)/SUMIFS(Sales[Revenue],Sales[Month],A5)

Prefer clicking to typing? Insert a PivotTable with Month in rows, Rep in columns and Sum of Revenue in values, then add slicers for Product and Status.

Step 3: Targets and attainment by rep

Keep monthly targets in a small table (Targets: Month, Rep, Target). Attainment is actual divided by target:

=SUMIFS(Sales[Revenue],Sales[Rep],A5,Sales[Month],$B$1)/XLOOKUP(1,(Targets[Rep]=A5)*(Targets[Month]=$B$1),Targets[Target])

Worked example: a three-person wholesale team, one month

Rep Target Revenue Attainment Orders AOV Commission (3%)
Maya $40,000 $43,200 108% 48 $900.00 $1,296.00
Jon $35,000 $29,750 85% 41 $725.61 $892.50
Priya $30,000 $31,500 105% 35 $900.00 $945.00
Team $105,000 $104,450 99.5% 124 $842.34 $3,133.50

With a 38% gross margin, the month produced about $39,691 of gross profit. The team almost hit target, but the detail tells a different story: Jon’s order count is close to Priya’s, yet his AOV is about $175 lower. That points to smaller baskets or heavier discounting rather than a lack of activity, which is a coaching conversation about bundles and pricing, not about calling more prospects.

Two formulas worth adding to the rep table:

  • Average discount given: =AVERAGEIFS(Sales[Discount %],Sales[Rep],A5,Sales[Month],$B$1)
  • Gross margin by rep: =SUMIFS(Sales[Gross profit],Sales[Rep],A5)/SUMIFS(Sales[Revenue],Sales[Rep],A5)

Commission plans vary widely (tiers, thresholds, margin-based). Keep the plan’s rules on its own sheet and reference them, so a change in the plan doesn’t mean rewriting formulas.

Step 4: Products and customers

  • Top products: revenue and gross profit per SKU, sorted descending with =SORTBY(Summary,Summary[Revenue],-1). A product can sell a lot and still earn little; look at both columns.
  • Repeat customers: in the Customers table, count orders with =COUNTIFS(Sales[Customer],[@Customer],Sales[Status],"<>Cancelled"), then the share of revenue from customers with more than one order.
  • Dormant accounts: last order date per customer with =MAXIFS(Sales[Date],Sales[Customer],[@Customer]), and a flag when it’s older than 90 days. Those are the first calls to make next month; a client tracking setup helps keep that follow-up organized.

Step 5: A one-page dashboard

On a separate sheet, show month-to-date revenue vs target, revenue by month (line chart, this year vs last year), revenue by rep or channel (bar chart), AOV and gross margin trend, and the top 10 products. Keep inputs and charts apart so nobody edits the dashboard by accident. For layout and chart ideas, see the Excel dashboard templates guide.

Keeping the tracker accurate

  • Log sales daily or import your invoicing or e-commerce export weekly instead of typing totals.
  • Record returns and credit notes as negative rows (or a Returned status) rather than deleting the original sale.
  • Reconcile monthly revenue with your accounting or invoice totals.
  • Lock formula columns and summary sheets; here’s how to protect formulas in Excel.

Ready-to-invoice sales feed straight into your invoice template, and costs per product link to your inventory spreadsheet.

Common mistakes

  • A new tab every month, which makes year-to-date and trend analysis painful.
  • Mixing gross and net (before and after discounts, with and without tax).
  • Averaging monthly AOVs instead of dividing total revenue by total orders.
  • Tracking revenue only and missing margin erosion from discounts.
  • Hard-coded targets inside formulas instead of a Targets table.

Related guide: Order Tracking Spreadsheet.

Frequently asked questions

How is a sales tracker different from a CRM?

A CRM manages contacts and deals before they close; a sales tracker records what actually sold. Many small teams use a pipeline sheet for open deals and this tracker for closed sales.

Can I track sales by channel instead of by rep?

Yes. Use the same Rep / Channel column for marketplaces, your website, retail or wholesale, and add channel costs (fees, shipping) to compare profit, not just revenue.

Does this work in Google Sheets?

Yes. SUMIFS, COUNTIFS, XLOOKUP, MAXIFS, UNIQUE, FILTER and SORTBY all work in Google Sheets; replace table references with regular ranges.

More guides are in Online selling & inventory.