Short answer
A good sales report template compares results with the target and the previous period, explains the gap and says what happens next. A weekly report covers bookings, activity, new pipeline and the deals that moved. A monthly report adds attainment, win rate, average deal size, sales cycle, pipeline coverage and a pipeline waterfall. Build both on one deals table with SUMIFS and COUNTIFS formulas, so the numbers update themselves.
- Every number needs two comparisons: the target and the previous period.
- Weekly reports steer activity and deals; monthly reports judge results and the pipeline behind them.
- Keep one deals table and calculate everything from it with SUMIFS, COUNTIFS and AVERAGEIFS.
- Report win rate by count and by value; they tell different stories.
- End every report with what you'll do differently, not just what happened.
On this page
This page is for sales managers, founders and sales operations staff who report on a B2B sales team every week or month, in a spreadsheet, a Word or Google Doc, or an email. It gives the report formats, the metric definitions and working Excel and Google Sheets formulas. For a rep's end-of-day activity log, use the daily sales report; for predicting next quarter, use the sales forecast template.
Weekly or monthly: what each report is for
| Weekly sales report | Monthly sales report | |
|---|---|---|
| Audience | The sales team and its manager | Leadership, finance, the board |
| Question it answers | Are we doing the right things, and which deals need help? | Did we hit the number, and is the pipeline good enough for next quarter? |
| Core metrics | Bookings, activity, new pipeline, deals that moved or stalled | Attainment, win rate, average deal size, sales cycle, coverage, pipeline movement |
| Length | Half a page or one screen | One to two pages plus a metrics table |
| Due | Monday morning, covering the previous Monday to Sunday | Within three business days of month end |
The metrics and their formulas
The formulas assume a sheet called Deals with one row per deal: A deal name, B owner, C stage, D amount, E created date, F close date, G status (Open, Won or Lost), H product, I region, and a helper column J for cycle days (formula below). On the report sheet, put the period's start date in B1, the end date in B2 and the quota in B3. They work in both Excel and Google Sheets.
| Metric | Definition | Formula |
|---|---|---|
| Bookings | Value of deals won in the period | =SUMIFS(Deals!D:D,Deals!G:G,"Won",Deals!F:F,">="&$B$1,Deals!F:F,"<="&$B$2) |
| Deals won | Count of deals won | =COUNTIFS(Deals!G:G,"Won",Deals!F:F,">="&$B$1,Deals!F:F,"<="&$B$2) |
| Deals lost | Count of deals lost | =COUNTIFS(Deals!G:G,"Lost",Deals!F:F,">="&$B$1,Deals!F:F,"<="&$B$2) |
| Lost value | Value of deals lost | =SUMIFS(Deals!D:D,Deals!G:G,"Lost",Deals!F:F,">="&$B$1,Deals!F:F,"<="&$B$2) |
| Win rate by count | Won ÷ (won + lost) | =IFERROR(Won/(Won+Lost),0) |
| Win rate by value | Bookings ÷ (bookings + lost value) | =IFERROR(Bookings/(Bookings+LostValue),0) |
| Average deal size | Bookings ÷ deals won | =IFERROR(Bookings/Won,0) |
| Average sales cycle | Average days from created to won | =AVERAGEIFS(Deals!J:J,Deals!G:G,"Won",Deals!F:F,">="&$B$1,Deals!F:F,"<="&$B$2) |
| New pipeline | Value of deals created in the period | =SUMIFS(Deals!D:D,Deals!E:E,">="&$B$1,Deals!E:E,"<="&$B$2) |
| Attainment | Bookings ÷ quota | =IFERROR(Bookings/$B$3,0) |
| Change | (This period − last period) ÷ last period | =IFERROR((This-Last)/Last,0) |
Replace the words in the short formulas (Won, Bookings and so on) with the cells that hold those results. For definitions and how to use them, see win rate, pipeline coverage and quota attainment.
Set up the data once
- Keep one deals table. Export it from your CRM or maintain it by hand, but every report reads from the same rows. Never type a total into a report.
- Add the cycle helper. In J2, enter =IF(G2="Won",F2-E2,"") and fill down. Blank text is ignored by AVERAGEIFS, so open and lost deals don't distort the average.
- Set the dates with formulas. For last week (Monday to Sunday), B1 is =TODAY()-WEEKDAY(TODAY(),2)-6 and B2 is =B1+6. For last month, B1 is =EOMONTH(TODAY(),-2)+1 and B2 is =EOMONTH(TODAY(),-1).
- Clean before you report. Fix open deals whose close date has passed, and missing amounts. Overdue open deals inflate the pipeline.
- Copy last period's figures into a "previous" column before you refresh, so the change column has something to compare with.
Sales report templates
Subject: Sales week of [date]: [bookings] booked, [attainment]% of [month] target HEADLINE: [one sentence: ahead, on track or behind, and why] THE NUMBERS (this week / target / last week) Bookings: [$] / [$] / [$] Deals won: [n] / [n] / [n] New pipeline created: [$] / [$] / [$] Meetings held: [n] / [n] / [n] DEALS THAT MOVED: [deal, stage change, amount] (up to three) DEALS AT RISK: [deal, what's wrong, what we're doing] (up to three) ONE CHANGE FOR NEXT WEEK: [what, who] HELP NEEDED: [a decision or resource, or "none"]
B1 Week start: =TODAY()-WEEKDAY(TODAY(),2)-6 B2 Week end: =B1+6 B3 Weekly target: [amount] B5 Bookings: =SUMIFS(Deals!D:D,Deals!G:G,"Won",Deals!F:F,">="&$B$1,Deals!F:F,"<="&$B$2) B6 Deals won: =COUNTIFS(Deals!G:G,"Won",Deals!F:F,">="&$B$1,Deals!F:F,"<="&$B$2) B7 New pipeline: =SUMIFS(Deals!D:D,Deals!E:E,">="&$B$1,Deals!E:E,"<="&$B$2) B8 Deals created: =COUNTIFS(Deals!E:E,">="&$B$1,Deals!E:E,"<="&$B$2) B9 Against target: =IFERROR(B5/$B$3,0) C5 to C9: last week's values (paste as values before refreshing) D5 Change: =IFERROR((B5-C5)/C5,0), filled down to D9
Columns: Rep | Calls | Emails | Meetings held | New pipeline | Bookings | Notes New pipeline for the rep in A6: =SUMIFS(Deals!$D:$D,Deals!$B:$B,$A6,Deals!$E:$E,">="&$B$1,Deals!$E:$E,"<="&$B$2) Bookings for the rep in A6: =SUMIFS(Deals!$D:$D,Deals!$B:$B,$A6,Deals!$G:$G,"Won",Deals!$F:$F,">="&$B$1,Deals!$F:$F,"<="&$B$2) Calls, emails and meetings: from your activity log, with COUNTIFS on owner, type and date.
[COMPANY] SALES REPORT: [MONTH YEAR] Prepared by [name], [date] 1. SUMMARY (three sentences) [Result against quota.] [The main reason.] [What we're changing.] 2. RESULTS Table: metric | this month | last month | change | target 3. WHAT DROVE THE RESULT [Two or three causes, each with a number: e.g. "two deals worth $110,000 slipped to October because..."] 4. PIPELINE Starting pipeline, + new, − won, − lost, ± other changes, = ending pipeline Coverage for next quarter: [open pipeline closing next quarter] ÷ [next quarter's quota] 5. BY REP, PRODUCT OR REGION [Short table, with one line of comment on any outlier] 6. NEXT MONTH [Target, the three biggest deals, and the actions with owners]
B12 Starting pipeline: [last month's ending figure, pasted as a value] B13 + New pipeline: =SUMIFS(Deals!D:D,Deals!E:E,">="&$B$1,Deals!E:E,"<="&$B$2) B14 − Won: =SUMIFS(Deals!D:D,Deals!G:G,"Won",Deals!F:F,">="&$B$1,Deals!F:F,"<="&$B$2) B15 − Lost: =SUMIFS(Deals!D:D,Deals!G:G,"Lost",Deals!F:F,">="&$B$1,Deals!F:F,"<="&$B$2) B16 Ending pipeline: =SUMIFS(Deals!D:D,Deals!G:G,"Open") B17 ± Other changes (amount edits, reopened deals): =B16-(B12+B13-B14-B15)
Rows A6 down: products (or regions). Columns B5 across: month-end dates. Cell B6: =SUMIFS(Deals!$D:$D,Deals!$H:$H,$A6,Deals!$G:$G,"Won",Deals!$F:$F,">"&EOMONTH(B$5,-1),Deals!$F:$F,"<="&B$5) Fill right and down. Use column I instead of H for regions. Add a total row with =SUM(B6:B[last row]).
Worked example: a contract manufacturer's September report
Illustrative example. The company, people and figures are fictional, to show the method.
The company: Calder Contract Manufacturing (caldercm.example), which machines and assembles parts for equipment makers. Four reps each carry a $150,000 monthly quota, so the team quota is $600,000. Deals are quotes for production runs.
| Metric | September | August | Change |
|---|---|---|---|
| Bookings | $540,000 | $480,000 | +12.5% |
| Attainment (quota $600,000) | 90% | 80% | +10 points |
| Deals won | 9 | 8 | +1 |
| Deals lost | 21 | 19 | +2 |
| Win rate by count | 9 ÷ 30 = 30% | 8 ÷ 27 = 30% | flat |
| Win rate by value | $540,000 ÷ $1,200,000 = 45% | ||
| Average deal size | $60,000 | $60,000 | flat |
| Average sales cycle | 74 days | 71 days | +3 days |
| New pipeline | $1,400,000 | $1,150,000 | +21.7% |
| Rep | Bookings | Attainment | New pipeline |
|---|---|---|---|
| Ana | $210,000 | 140% | $300,000 |
| Ben | $150,000 | 100% | $400,000 |
| Chloe | $120,000 | 80% | $450,000 |
| Dev | $60,000 | 40% | $250,000 |
| Team | $540,000 | 90% | $1,400,000 |
Pipeline movement: starting $2,900,000, plus $1,400,000 new, minus $540,000 won, minus $660,000 lost, is $3,100,000. The ending snapshot is $3,000,000, so other changes are −$100,000 (two quotes reduced after customers cut volumes).
Coverage for Q4: $2,250,000 of open pipeline closes by 31 December, against a Q4 quota of $1,800,000, which is 1.25 times. At a 45% win rate by value, $2,250,000 is likely to produce about $1,012,500. To expect $1,800,000, the team needs $1,800,000 ÷ 0.45 = $4,000,000 closing in Q4, about $1,750,000 more than it has. With a 74-day average cycle, deals created after mid-October would need a faster-than-average cycle to close this year.
The summary that opened the report:
September bookings were $540,000, 90% of quota and 12.5% up on August, with win rates flat at 30% by count and 45% by value. Q4 is the concern: open pipeline closing this year covers 1.25 times the $1,800,000 quota, and at our win rate we'd expect about $1,010,000. In October we're focusing all four reps on new opportunities that can close by December (repeat customers and quotes under $50,000), and Dev is pairing with Ana on two late-stage deals.
Reading the report: what to do when a number moves
| If this moves | Check first | Likely action |
|---|---|---|
| Bookings and new pipeline both down | Activity, and the quality of accounts being contacted | Rebuild prospecting before it shows up in next quarter |
| Bookings down, pipeline steady | Win rate and stage age | Review lost deals and deals stuck in one stage |
| Win rate down | Loss reasons, competitor mentions, discounts | Tighten qualification; update the battlecard |
| Average deal size down | Discounts, product mix, customer size | Check discount approvals |
| Sales cycle up | Deals with no next step or close plan | Clean up, then agree next steps on every deal |
| Coverage below 1 ÷ win rate | Pipeline that can close in the period | Prioritize late-stage deals; add pipeline now |
When the problem is the top of the funnel, the fix is more accounts with a real reason to contact them. Bebop finds companies that match a plain-language description, explains why each fits and writes a playbook for each account, which shortens the research behind new pipeline.
Checklist before you send
- Every number is compared with the target and the previous period.
- All totals come from formulas on the deals table, not typed values.
- Overdue close dates and missing amounts were fixed before refreshing.
- Win rate is shown by count and by value.
- The pipeline waterfall balances, with other changes explained.
- The summary is three sentences: result, reason, change.
- Each action has an owner.
Mistakes to avoid
- Activity without outcomes. 400 calls means nothing without the meetings and pipeline they produced.
- No comparison. "$540,000 booked" is meaningless without the quota and last month next to it.
- Counting overdue deals as pipeline. An open deal with a close date in August isn't Q4 pipeline.
- Averages that hide the spread. Show results by rep or product, so one big deal doesn't mask a weak month.
- Reporting without a decision. If nothing changes because of the report, shorten it.
Next step: turn this month's pipeline into next quarter's number with the sales forecast template, which weights each deal by stage.
Sources
- SUMIFS function, Microsoft Support, accessed 26 October 2026
- SUMIFS, Google Docs Editors Help, accessed 26 October 2026
- WEEKDAY function, Microsoft Support, accessed 26 October 2026
- EOMONTH function, Microsoft Support, accessed 26 October 2026
Written by the Bebop team at Blackpearl Group. Last updated .
Questions people ask
What should be included in a sales report?
Bookings against target and against the previous period, deals won and lost, win rate, average deal size, sales cycle length, new pipeline created and pipeline coverage for the next period. Add a short breakdown by rep, product or region, the deals that moved or are at risk, and a summary of what drove the result and what you'll change. Weekly reports can drop the slower metrics.
How do I make a sales report in Excel or Google Sheets?
Keep one deals table with owner, amount, created date, close date and status. On a report sheet, put the period's start and end dates in two cells, then calculate each metric with SUMIFS, COUNTIFS and AVERAGEIFS, for example =SUMIFS(Deals!D:D,Deals!G:G,"Won",Deals!F:F,">="&$B$1,Deals!F:F,"<="&$B$2) for bookings. The same formulas work in both Excel and Google Sheets.
What's the difference between a weekly and a monthly sales report?
A weekly report is for the team and its manager: bookings, activity, new pipeline and the deals that need help this week, in half a page. A monthly report is for leadership: attainment, win rate, average deal size, sales cycle, pipeline movement and coverage for next quarter, with an explanation of the result and the actions that follow. The monthly report judges; the weekly report steers.
How do you calculate win rate in a sales report?
By count, divide deals won by deals won plus deals lost in the period: 9 won and 21 lost is 30%. By value, divide the value won by the value won plus the value lost: $540,000 won and $660,000 lost is 45%. Leave open deals out of both. Show both, because a team can win few deals by count but the larger ones by value.
What is a good sales report format?
Start with a three-sentence summary (result, reason, change), then a metrics table showing this period, last period, the change and the target. Follow with what drove the result, the pipeline movement and coverage, a short breakdown by rep or product and the actions for next period with owners. Keep a weekly report to one screen and a monthly report to two pages.