Sales Meetings
Booking appointments per sales rep, the double-booking warning, and the split between a rep's direct reminder and the client-facing automation trigger.
On this page
Where it is
CRM → Sales Meetings. The page is a single calendar, one column per sales rep, that a manager or the reps themselves use to book and track sales appointments — estimate walkthroughs, follow-up calls, video demos — separately from the operational Dispatch Board, which only ever shows service visits.
Sales reps: who shows up on the calendar
The calendar only ever shows employees explicitly flagged as a sales rep. That flag lives on the employee record, not on their user role — mark someone as a sales rep (and confirm they're marked active) in Team → Employees before they'll appear as a column here. If no employee is flagged yet, the page shows a message pointing you to that same setting instead of an empty calendar.
Day, Week, and Month views
Three view modes, switched with the toggle next to the date picker:
- Day — one column per rep, hours 7 AM–7 PM down the side. Meetings are positioned and sized by their actual start time and duration. Click any empty slot to book a meeting for that rep at that hour.
- Week — one row per rep, one column per day (Sun–Sat). Each cell lists every meeting that rep has that day, time-sorted. Click an empty part of a cell to book for that rep on that day.
- Month — a standard 6-week grid (no rep breakdown). Each day shows up to 3 meetings before collapsing into a "+N more" — click a day to jump straight into Day view for it.
Whichever view is active, its date range is exactly what gets fetched — Day view queries a single day, Week the visible Sun–Sat span, Month the full 42-cell grid — so switching views doesn't pull the whole calendar's history into memory at once.
Booking and editing a meeting
Clicking Book Meeting (or an empty calendar slot) opens the same dialog used for editing — the only difference is whether a meeting was passed in. Clicking an existing meeting opens it pre-filled for editing, including a Cancel Meeting action (a soft delete — canceled meetings still show on the calendar, struck through, until they age out of view).
| Field | Notes |
|---|---|
| Sales Rep * | Required. Only employees flagged as a sales rep (and active) appear in this list. |
| Client / Lead Name | Either pick an existing client, or leave it unset and type a free-text lead name for a prospect who isn't in the system yet. A meeting can't have both — picking a client hides the lead-name field. |
| Title * | Free text, e.g. "Estimate walkthrough". |
| Meeting Type | In Person, Phone, or Video — label only, doesn't change any behavior. |
| Date / Time / Duration * | Duration is in minutes (5-minute increments). Together with the start time, this defines the window used for the double-booking check. |
| Location | Free text — an address or a video-call link, whichever fits the meeting type. |
| Link to Estimate / Link to Ticket | Only shown once a client is picked. Each is scoped to that client's own estimates/tickets. |
| Notes | Free text, staff-only. |
The double-booking warning
Right before saving, the dialog checks whether the picked sales rep already has another non-canceled meeting whose time window overlaps the one you just set — same rep, overlapping start/end times, computed from each meeting's start time plus its duration. The check is scoped to just the picked day, so it stays a light query rather than re-fetching the whole calendar on every keystroke.
Editing a meeting excludes that same meeting from its own conflict check — moving a meeting 15 minutes later won't falsely warn that it conflicts with itself.
Meeting status
| Status | Meaning |
|---|---|
| Scheduled | The default state for a newly booked meeting. Shown in brand color on the calendar. |
| Completed | The meeting happened. Set from the meeting's status dropdown after the fact — nothing advances it automatically. |
| Canceled | The meeting was called off. Shown struck through on the calendar, and excluded from the double-booking check. |
| No Show | The client/lead didn't show. Purely informational — doesn't affect reminders or automations. |
Reminders: rep vs. client
Two independent things happen 60 minutes before a scheduled meeting, run by a background job every 15 minutes:
- The rep's own reminder — always fires. The assigned sales rep gets an in-app notification and an email (each can be turned off individually in Settings → Notifications) regardless of whether the meeting has a client, a lead, or any automation configured. A rep should always know their day is coming up.
- The client-facing automation trigger — opt-in, client-only. If the meeting has a linked client, a Sales Meeting → Meeting is coming up trigger becomes available in the Automations builder. Build a sequence on that trigger to send the client their own reminder email or text. It only fires within that automation's own configured lead time (in minutes), which doesn't have to match the rep's fixed 60-minute window. A meeting with no client — a new-lead meeting — can't be enrolled in this automation at all, since Automations is entirely client-scoped; the rep still gets notified directly either way.
Rescheduling and the reminder reset
Once a meeting's reminder has fired, it's marked so the background job won't send it again. If you then change the date or time, that mark is cleared so the reminder can fire again for the new time. Editing anything else on an already-reminded meeting — notes, title, the linked estimate — leaves the mark alone, so a reminder that already went out for the correct time doesn't get needlessly resent just because someone added a note.
See also
Meetings created here can link to an existing estimate for the same client — see the Estimates & the Budget Engine guide for how an estimate itself is built and priced. For the client-facing reminder sequence itself, see the Communication Automations guide for how triggers, sequences, and enrollment generally work.