The Sales dashboard
Dials, connects, pitches, sales and time to first dial, per rep, with weekly leaderboards, from the calls and deals your team logs in HubSpot. It sits under Dashboard, then Sales, in the app on Pro and Agency, once HubSpot is connected.
10-min read, last updated 31 October 2026
What counts
The Sales page states its definitions at the top, and they are fixed, so every rep and every portal is counted the same way. The four that are always in view:
- Dial: A call your team made.
- Connect: A dial of 1 minute or more.
- Pitch: Any call of 5 minutes or more, made or received.
- Sale: A deal in a closed won stage, counted on its close date for the lead's owner.
All definitions on the page opens the rest:
- Talk time: Time on calls, made or received.
- Days on the phone: Days with at least one call, made or received.
- Lead: Every new contact in HubSpot, counted on the day it was created. Imported contacts count on their import day.
- Reached: A lead that has had a call of 1 minute or more, made or received.
- Pitched lead: A lead that has had a pitch.
- Won lead: A lead with a closed won deal that closed on or after the day the lead came in.
- Under-worked: A lead at least 3 days old, never reached, not won, dialled 1 to 5 times.
- Connect rate: Connects, of dials.
- Pitch rate: Pitches, of calls of 1 minute or more, made or received.
- Dials to first connect: A rep's dials to a lead up to and including their first connect with it, averaged over the leads they first connected with in this range.
- Lead connect rate: Of the leads a rep first dialled in this range, the share they have connected with so far.
- Reach rate / Close rate: Leads reached, of leads received. Pitched leads that were won, of pitched leads. Both rise as leads age.
Crowflow reads the calls your team logs in HubSpot, whether your dialer logs them or someone does it by hand. A call with no direction counts as a dial, because a dialer that leaves the direction blank is nearly always dialling out. Calls still in progress (queued, ringing, connecting or on the line) are left out until HubSpot records how they ended. A call to your team is an inbound call: never a dial, though a long one is a pitch.
The Lead sentence on your page names the lead sources your lead definition counts, from the HubSpot connection page. That page also lists every definition under What counts on the Sales page.
Calls and deals, and leads
The page has two rows of figures, each under its own header, and the table below them keeps the same split.
- Calls made and deals closed in this range: Dials, Talk time, Connected (1 min+), Connect rate, Dials to first connect, Pitches (5 min+), Pitch rate, Lead connect rate and Sales. What happened on the days in the range. Calls count for the rep who made or took them, on the day of the call; sales count on the deal’s close date, for the lead’s owner
- Leads received in this range, followed to today: Leads, Dialled within 1 hour, Median time to first dial, Not yet dialled, Under-worked, Reach rate and Close rate. The leads that arrived in HubSpot during the range, and everything that has happened to them since, up to the last sync. A lead from the 1st that was first called on the 20th counts for the 1st
The two never share a rate. Dividing this week’s sales by this week’s leads would set sales from last month’s leads against leads that have not had time to buy. The rates in each band come from that band alone:
- Connect rate: connects, of dials
- Pitch rate: pitches, of calls of 1 minute or more, made or received. Every pitch is one of those calls, so it never passes 100%
- Reach rate: leads reached, of leads received
- Close rate: won leads that were pitched, of pitched leads
Each lead figure means exactly what its definition says. A lead is reached only by a call of 1 minute or more, and pitched only by a pitch, so a lead that bought with no logged call is won but not reached. Under-worked counts leads at least 3 days old that nobody has reached and that are not won leads, dialled 1 to 5 times: the ones that were given up on early.
Rates are worked out from the totals, never by averaging reps. A rate over fewer than 20 shows in grey with the note “Fewer than 20 in the denominator”, and a rate with nothing to divide by shows a dash. The Lead source filter narrows the leads band only: calls carry no lead source.
The main dashboard’s Deals and Revenue are a different count: every deal, by the day it was created in HubSpot, won or not.
Pitches and sales
A pitch is any call of 5 minutes or more, made or received. It counts for the rep on the call, on the day of the call. A lead with at least one pitch is a pitched lead.
A sale is a deal in a stage HubSpot marks closed won. In HubSpot, each deal stage has a probability, and the stage whose probability is Closed won is the sale. Crowflow reads your stages from HubSpot on every sync, so to change which stages count as a sale, change the stage’s probability in HubSpot (Settings, Objects, Deals, Pipelines). That also keeps HubSpot’s own reports in step. A deal with several contacts counts once.
- The day: the deal’s close date, as a UTC day. A won deal with no close date, or a close date after your last sync, is left out until it has one that has passed
- The rep: the lead’s owner. The lead is the deal’s first associated contact (the lowest contact ID, the same rule calls use), and the sale goes to that contact’s current owner in HubSpot. If the contact has no owner, or the deal has no contact, it goes to the deal owner, and otherwise to Unassigned. So Sales and Won so far credit the same person as Leads do
- Won lead: a lead with a closed won deal that closed on or after the day the lead came in. An imported customer whose deal closed before the contact was created is not a won lead
A sale can happen with no logged call: a deal closed on email or in a meeting still counts as a sale for the lead’s owner, and its lead is won but neither reached nor pitched.
Imported deals count on the close date HubSpot holds for them. If your deals were imported in bulk, older sales may sit together on the import day; ranges after the import are not affected.
Dials to first connect
How many dials it takes a rep to get through to a lead. For each rep and each lead they dialled, Crowflow counts the rep’s dials to that lead up to and including their first connect with it. The connecting dial counts, so the least it can be is 1. The figure is the average over the leads first connected in the range, on the day of that connect.
- Per rep: each rep’s dials to a lead are counted on their own. A lead two reps worked counts once for each of them, in the team figure too
- Only dials end it: a call the lead makes to your team does not, and a dial with no length is never a connect
- Lead connect rate sits beside it: of the leads a rep first dialled in the range, the share they have connected with so far. Read the two together. A rep who drops hard leads early needs fewer dials but connects with fewer leads
- History starts where your plan’s call history starts, so a lead whose dialling began before that is counted from there and reads slightly low
A dial linked to no contact counts as a dial but belongs to no lead, so it is in neither figure.
Leaderboards
Under the tiles, the leaderboards rank your reps on the range you picked. Each board shows its top 5 (3 on a phone), then Show all, with the team’s own figure at the foot. Click a name to see that rep period by period.
| Board | Ranks by | A rep is ranked from |
|---|---|---|
| Most dials | Dials | 1 dial |
| Most talk time | Talk time, calls made and received | Any talk time |
| Most connects | Connects (dials of 1 min+) | 1 connect |
| Best connect rate | Connects, of dials | 150 dials |
| Best pitch rate | Pitches, of calls of 1 min+ | 20 calls of 1 min+ |
| Most pitches | Pitches | 1 pitch |
| Most pitches per day | Pitches, per day on the phone | 3 days on the phone, or every day of a shorter range |
| Most sales | Sales | 1 sale |
| Fastest to new leads | Dialled within 1 hour, of leads received | 20 leads received |
| Dials to first connect | Not ranked: listed beside lead connect rate | 20 leads connected |
- Who is ranked: reps who are active users in HubSpot. Unassigned and reps who have left are not ranked, and still count in the team figure and the rep table. With a rep filter, the boards rank only the reps picked, and need at least two
- Not ranked: a rep under a board’s threshold is listed under it, with the reason. Rates rank only from 20 in the denominator, so a board never ranks a figure the page shows in grey
- Ties share a rank (1, 2, 2, 4). Within a tie, the rep with more behind the figure comes first, then by name
- Dials to first connect is a comparison, not a ranking: fewest dials would reward skipping hard leads. Reps are listed by leads connected, most first
How to read them:
- Many dials, low connect rate: the rep is working hard into a poor list or at poor times. Look at when they call
- High pitch rate, few dials: a strong talker who is not dialling enough. Raise the volume
- High pitch rate, low pitches per 100 dials: check how many short calls the rep makes. Ending a call before 1 minute keeps it out of the rate
- Few dials to first connect with a low lead connect rate: the rep is skipping hard leads. Check Under-worked
- Many pitches, few sales: judge close rate over 30 or 90 days. A week is too short
- Fastest to new leads: the clock runs through nights and weekends (UTC, no working hours), so reps whose leads arrive out of hours start behind
- Last week can change: a deal reopened, re-dated or reassigned in HubSpot moves its sale
Comparing periods
With Compare on, every tile, every column of the rep table and every leaderboard row shows its change against the previous period: Last week against the week before, This week against the same days last week, Last 7 days against the 7 days before, and so on. The page opens on Last week with Compare on.
- Counts change by a number and a share: +12 (+8%)
- Rates change in percentage points: +2.1 pts
- Times change by a time: 3 min faster
- Dials to first connect changes by dials: 0.4 fewer
A rate’s change shows only when both periods have at least 20 in the denominator. Figures that rise as leads age (Reach rate, Close rate, Won so far, Lead connect rate and the other lead figures) compare like for like: the previous period as it stood the same time after it ended, to the nearest day. Last week’s leads have had a week longer than this week’s, so comparing them as they stand today would show a fall every week. Today has not ended yet, so its lead figures show no change, and neither do they while your last sync is from before the end of the range. The leaderboards still rank on the period you picked.
Time to first dial
The time from the moment a contact was created in HubSpot to the first dial on it, by anyone. Leads fall into one of nine bands: within 5 min, 5 to 15 min, 15 min to 1 hour, 1 to 4 hours, 4 to 24 hours, 1 to 3 days, 3 to 7 days, over 7 days, and not yet dialled.
- Dialled within 1 hour: the share of all leads received, the ones not yet dialled included, so a lead left waiting lowers it
- Median time to first dial: half the dialled leads were called sooner than this. It is worked out within the band it falls in, from dialled leads only
The clock runs around the clock, in UTC, with no working hours: a lead that arrives at 11pm on a Friday and is dialled at 9am on Monday waited 58 hours. Compare reps whose leads arrive at the same times of day.
A call starts the clock for the contact it is linked to in HubSpot: the contact it was made to, or else the first contact associated with it. A call linked to no contact still counts as a dial, but starts no clock.
Reps, Team and Unassigned
Days are UTC. Calls count for the rep who made or took them, and sales and leads for the lead's owner.
- Calls, pitches and talk time belong to the rep who owns the call in HubSpot: whoever made or took it
- Sales and leads belong to the lead’s current owner. Reassign a lead and its history and its sales move with it, while its calls stay with whoever made them
- Team comes first and adds up everyone, Unassigned included
- Unassigned holds calls, sales and leads with no owner in HubSpot, and comes last
- Reps who left keep their name and their history. The rep picker marks them “(left)”
A HubSpot user with no name, such as an integration, shows by its HubSpot owner ID. Click a rep’s name in the table or on a board to see their figures period by period.
Days and history
Days run midnight to midnight UTC, as on the rest of Crowflow, so a call at 11pm in New York lands on the next day. The picker offers the ranges your plan can show in full. Last week and This week are weeks from Monday to Sunday, in UTC, with finished days only: on a Monday, This week has no finished day yet and the page says so.
Sales reporting is part of Pro and Agency. Crowflow fetches calls as far back as your plan’s history reaches: 6 months on Pro and 13 months on Agency. Older calls are not fetched, and moving up a plan fetches the longer window over the next syncs.
The first sync starts by itself when you connect HubSpot, contacts and deals first, then calls. On a small HubSpot the first call history usually takes 10 to 30 minutes to arrive. On a busy one it takes a few mornings, oldest calls first. Until it has, the page says so, and the figures fill in as calls land, the most recent days last. Once the first sync is done, Sync now on the HubSpot connection page pulls more right away. Under the filters, the page says which days the range covers and when it last synced, and which days are not complete yet.
The Sales tab in your Sheet
The same figures can go to a Google Sheet, as a tab named HubSpot Sales. It can sit in the Sheet that already gets your ad data, or in a Sheet of its own, for a sales team that only needs these numbers.
On the Sales page, click Send to Google Sheets. You need to be a workspace owner or admin, with Google Sheets connected. There are three ways in:
- Add the Sales tab beside one of the Sheets Crowflow already fills. The list shows which Sheets have it on.
- Create a new Sheet for Sales makes a Sheet whose only tab is
HubSpot Sales. - Pick an existing Sheet adds the tab to one of your own Sheets and leaves its other tabs alone. If Crowflow already fills that Sheet, the tab is added to it there.
Each one sends the figures straight away, so the tab fills in within a minute once your call history is in, and every sync keeps it up to date after that.
The same choice is on the Sheets page: under Add a destination, set What goes in it to Sales only. Each Sheet’s card there has a HubSpot Sales tab switch. A Sheet for your ad data that you add after connecting HubSpot starts with it on. Turning it off stops the writes and leaves the tab as it was: Crowflow never deletes a tab. A Sheet that only gets the Sales tab keeps its card on the Sheets page, where its date range, Push now and Remove are.
The tab has one row per day and rep, newest day first, with a Team row heading each day. It covers the Sheet’s date range, set on its card, up to yesterday. Like the HubSpot tabs, it is rewritten in full whenever a sync or a settings change gives it something new. The columns, in order:
- Date, Rep: The day (UTC) and the rep, or Team, or Unassigned.
- Dials, Connected (1 min+), Connect rate, Talk time (min), Inbound calls: Calls that day by that rep. Talk time covers calls made and received.
- Pitches, Sales: Calls of 5 minutes or more that rep made or took that day, and closed won deals with that close date, for the lead’s owner. Sales is left blank while your deals are still arriving.
- Leads, Dialled, Dialled within 5 min, Dialled within 1 hour, Dialled within 24 hours, Not yet dialled: Leads received that day, owned by that rep, and how fast they were first dialled.
- Reached, Pitched, Won so far, Avg time to first dial (min): What has happened to those leads since, up to the last sync: a call of 1 minute or more, a pitch, a closed won deal. Won so far is left blank while your deals are still arriving.
- Inbound connected (1 min+), Leads connected, Dials to first connect, Leads first dialled, Leads first dialled, connected so far: Added on 4 November 2026, after the columns above so none of them moved. Counts, so a range adds up.
Every count adds up over a range, so work the rates out from the sums, not by averaging rows. Pitch rate is the sum of Pitches over the sum of Connected (1 min+) plus Inbound connected (1 min+). The average dials to first connect is the sum of Dials to first connect over the sum of Leads connected. Connect rate is a decimal (0.25 is 25%), so format that column as a percentage. Times are in minutes, to one decimal place. The tab gives the average time to first dial, where the page shows the median.
The tab is first written once your call history has finished arriving: until then the most recent days would be short of calls and read as days nobody dialled. While Crowflow cannot read your calls (reconnect HubSpot to fix it), the tab keeps what it had. A HubSpot with no calls logged at all gets the header alone, rather than rows of zero dials. On a plan without sales reporting nothing is written.
Call data and what it means
A call can count as a connect or a pitch only when HubSpot has its length. Most dials with no length are calls nobody answered, which is normal: on a busy portal close to half of all dials have none. The gap that matters is a call HubSpot marks Connected that has no length. A conversation happened, but it can count as neither a connect nor a pitch.
When at least 20 calls in the range are marked Connected and 10% or more of them have no length, the definitions at the top of the Sales page say so. The fix is in your dialer: ask whoever runs it to log call duration to HubSpot. The rep table’s hidden Length missing column shows the count per rep.
The Call data block on the HubSpot connection page says how complete your call records are, over your plan’s whole history:
- Calls synced since a date: the first day Crowflow has every call from. While the first history is still arriving it says so instead
- Dials with no length recorded: most of them unanswered. They count as dials, never as connects
- Calls HubSpot marks Connected with no length: the gap above
- Calls with no direction: they count as dials. If your team takes many inbound calls through a dialer that leaves the direction blank, dials read high
- Dials not linked to a contact: they count as dials but start no clock and belong to no lead, so time to first dial and the leads band can read slow or empty. Set your dialer to link each call to its contact
- Leads first dialled before their create date: usually imports. They are left out of the time to first dial bands and median, and still count as leads (see above)
Past weeks can change. Calls logged late land on the day they happened, and a deal reopened, re-dated or reassigned in HubSpot moves its sale. A call or deal deleted in HubSpot keeps counting, because HubSpot does not tell Crowflow about deletions.
What changed on 4 November 2026
The Sales page now counts by fixed definitions, stated at the top of the page. If you used it before, these figures mean something new:
- Pitches are calls of 5 minutes or more, made or received. They used to be leads entering a lifecycle stage
- Sales are closed won deals, on their close date, for the lead’s owner. They used to be leads entering the Customer stage
- Pitched and Won so far follow them, and the lead figures no longer count a pitch or a sale as reached
- Talk time and days on the phone now include calls received
- The Sales definitions setting on the HubSpot connection page is gone: the stage’s probability in HubSpot decides what a sale is
New: the leaderboards, Dials to first connect and Lead connect rate, Under-worked, the Last week and This week ranges, and a change on every figure with Compare on. The Sales tab in your Sheet keeps every column where it was and adds five at the end, so your formulas keep working. The rep table’s column choices start again from the new defaults.