---
id: educacao/calls-agendadas-comparecimento
industry: Education
usage: specific
effort: medium
grain: Call (meeting); lead x call (slot); reschedule journey; person who booked
---

# Scheduled calls and attendance

How many calls were booked, how many happened with the lead present, where the lead dropped off and how many bought afterwards, by unit, SDR and closer.

## Executive summary

**For:** Digital product creators, schools and colleges that sell through strategy sessions, enrollment calls or scheduled interviews.

**What it solves**

- A call completion rate with a single rule, which does not change depending on which day of the month you look.
- Rescheduling treated as the continuation of the same journey, not as a loss followed by a new call.
- How many of those who had a call bought, how fast and at what ticket, compared with those who bought without a call.

**Why it matters:** For high-ticket courses, the call is where the sale happens, and every empty call is a lost closer hour. With loose rules, the same month shows different rates on each dashboard, no-shows go up or down depending on whether someone marks the absence, and nobody knows whether it pays to buy more media to generate calls.

**Business questions it answers**

- How many calls did my unit hold last week, and what was the completion rate?
- Did no-shows go up this month? Show it week by week.
- How is each SDR and each closer doing: calls, held and no-shows?
- Of those who had a call this year, how many bought and how long did it take?
- Do people who go through a call buy at a higher ticket than those who buy directly?
- How long does a lead usually take between booking and having the call?

**What you need**

- The scheduling tool connected to Nekt (every account) and the sales source
- A team roster with role (SDR, closer) per month and the internal email domain
- The map from scheduling account, or from a pattern in the call name, to unit or product

**What you get**

- A per-call table with meetings, slots, attendees, no-shows, cancellations and reschedules
- A per-person table for everyone who booked, with first and last call and recurrence
- Call-to-sale conversion and ticket with and without a call, always aggregated
- An AI agent that answers questions about calls with the official rate

## Detailed

### The problem

The scheduling tool records invitations, not attendance. A call can have several leads, a reschedule creates a new invitation, the sales team shows up as invitees and an old account mixes several products. The same present field means attended on a past call and confirmed on a future one. Counting invitations as calls, dividing held calls by calls that already happened and trusting no-shows marked by hand delivers a different rate every day.

### Business rules

1. **Meeting and slot are different numbers.** A meeting counts 1 per call. A booking counts 1 per lead holding a slot in the call: a group call, such as a scholarship selection session, can have several leads. The total number of calls comes from the calls table, never after joining with people, invitees or leads. (Avoid: Counting invitations as calls.)
2. **Held = it is in the past and a lead was present.** A call is held when its start time has passed (now in America/Sao_Paulo) and at least one lead is present. Present = did not cancel, did not reschedule and nobody marked an absence. On a future call, the same field means confirmed: every lead number carries the condition that the call already happened. (Avoid: Adding up active leads from every call in the month, future ones included.)
3. **The official rate uses the whole period.** Completion rate = held / meetings scheduled in the whole period, including those still to come. With the month in progress it changes day by day; always say whether the slice is up to yesterday or the whole month. Held / already happened only when asked for, labeled as unofficial. Attendance per lead (present / bookings) is a complement, never a replacement. (Avoid: Dividing held calls by calls already past and calling it the official rate.)
4. **A reschedule is the same journey.** Chain invitations by the previous and the new invitation (in Calendly, old_invitee and new_invitee) and resolve the chain to its current state. Rescheduled is not a loss: the lead counts as rescheduled on the original call and continues on the new one. The journey's status is evaluated in this order: canceled, no-show, future, held. (Avoid: Counting each reschedule as one lost call and one new call.)
5. **The team is not a lead.** Invitees with an internal domain email are the team and leave the lead counts. Each person's role (SDR, closer, salesperson, AI agent) comes from a monthly roster. A call with exactly one SDR and one closer has a complete record: that measures whether the team added itself to the call, not performance. The sum of calls per person exceeds the total, because two people attend the same call. (Avoid: Adding up SDRs' and closers' calls to get the total.)
6. **Unit by account, then by call name.** A dedicated scheduling account defines the unit or product. An old account that mixes products uses the call name with a pattern map that always returns the canonical label; with no match, undefined. A unit that does not use the scheduling tool answers that it does not use it, never zero calls. A person's allocation unit can differ from the call's unit: for calls in my unit, filter by the call. (Avoid: Unit from the event type, leaving thousands of calls undefined.)
7. **No-show is a floor.** The scheduling tool does not check attendance. A no-show only exists when someone marks the absence, and a unit that does not mark shows no-shows close to zero. Compare no-shows across units and months with that warning, and use cancellations and held calls, which do not depend on marking, as support. (Avoid: Concluding no-shows doubled when the team simply started marking absences.)
8. **Call to sale by email, with dates and without renewals.** Match who had a call with who bought by normalized email; phone by the last 11 digits only for those who did not match; name only as probable, with two or more words and pointing to a single buyer. A sale from someone who went through a call is a non-renewal purchase dated on or after the first call. State whether a same-day purchase counts and show the match rate. (Avoid: Joining scheduling and sales by name, or counting purchases made before the call.)
9. **Cohort with a complete window.** For conversion over time, start from the people whose first call (or hand-raise) was in the month and count how many bought within 7, 30, 60 and 90 days, with the median number of days. Those who had already bought before are left out of the cohort. A recent cohort without the complete window is flagged and left out of comparisons. (Avoid: Comparing last month's conversion with six months ago without a window.)
10. **Call date, in the local time zone, with the last load.** The time axis is the call day in America/Sao_Paulo, never the date the booking was created. The scheduling tool loads only a few times a day: every answer states how current the data is, and a week that crosses the month boundary is flagged. (Avoid: Counting calls by the booking creation date.)

### Each lead's status on the call

Evaluated in this order. Lead numbers only count calls that have already happened.

- **status canceled, no new invitation** → Canceled (`leads_cancelados`)
- **rescheduled or new_invitee filled** → Rescheduled: continues on the new call (`leads_reagendados`)
- **absence marked by the team** → No-show, a floor (`leads_no_show`)
- **start > now** → Future: present means confirmed
- **start up to now, no cancellation, reschedule or absence** → Present (`leads_ativos`)
- **internal domain email** → Team: out of the lead counts
- **start up to now and at least 1 present** → Meeting held

### Definitions

| Metric | Definition |
|---|---|
| Meetings | distinct calls with the call day in the period, whether they happen or not |
| Meetings held | calls with start up to now and at least one lead present |
| Official completion rate | meetings held / meetings scheduled in the whole period, future ones included |
| Bookings | lead slots taken on the period's calls, in any status |
| Attendance | leads present on calls that already happened |
| No-show % | no-shows / (attendance + no-shows), only on calls that happened |
| Canceled % | cancellations / (attendance + no-shows + cancellations), only on calls that happened |
| Call-to-sale rate | people with at least one held call and first call in the period who bought after the first call, excluding renewals / those people |
| Ticket with a call | revenue excluding renewals / sales from buyers matched to a first call up to the sale date; compared with the same calculation for those without a call |

### Pitfalls

- **Two rates for the same month.** The dashboard showed the whole month, with future calls in the denominator, and the agent answered up to yesterday. The numbers differed by several points and looked like a contradiction. How to avoid: Always say which slice is shown and use the same one in both places.
- **No-shows that more than doubled.** Marked no-shows more than doubled from one month to the next. It was the team starting to mark absences that used to stay as present. How to avoid: Treat no-shows as a floor and confirm the marking habit before drawing conclusions.
- **Undefined en masse.** Deriving the unit from the event type left thousands of calls undefined, because the old account mixed products. How to avoid: Cascade: dedicated account, pattern in the call name, undefined.
- **A ready-made outcome column that was wrong.** A ready-made outcome column was wrong on hundreds of calls and was used to filter held calls. How to avoid: Recompute the status from its components (start, attendance, cancellation) and do not filter by the ready-made column.
- **Phones that do not match.** Only a small share of those who booked had a valid phone, and the phone on sales had been empty for months: matching by phone found zero people. How to avoid: Match by email, use phone only as a second key and state the match rate.
- **Per-person sum above the total.** Adding up closers' calls gave more calls than the total, because two team members were on the same call. How to avoid: Total always from the calls table; the per-person table is only for breakdowns.

### Acceptance test

- [ ] For a closed month, meetings, held calls and the official rate match the scheduling dashboard that shows the whole month.
- [ ] Meetings held never include a call starting after now, and attendance never adds leads from future calls.
- [ ] Each reschedule chain becomes a single journey with its number of reschedules, and no reschedule appears as a cancellation.
- [ ] The total number of calls never comes from the per-person table; its sum may exceed the total without being an error.
- [ ] The match rate between people who had a call and buyers appears next to every call-to-sale conversion.

### Context document

```text
Scheduled calls and attendance
- Total calls come only from the calls table (1 row = 1 call). Time axis = call day in America/Sao_Paulo. Never the booking creation date.
- now = current time in America/Sao_Paulo. Happened = start up to now. Held = happened and at least 1 lead present.
- Meetings = calls. Bookings = lead slots. Attendance, no-shows, cancellations and reschedules: only calls that happened.
- Official rate = held / meetings scheduled in the whole period, future ones included. Held / happened only when asked for, labeled unofficial. Always say whether the slice is up to yesterday or the whole month.
- Reschedule: old_invitee / new_invitee chain resolved to the current state. Rescheduled is not a loss.
- Invitees with an @<internal domain> email are the team and do not count as leads. Role per month from the roster <team table>.
- Unit: dedicated account; account <old account> by pattern in the call name; no match = INDEFINIDO. Unit without scheduling: answer that it does not use the scheduling tool, never zero.
- No-show is a floor: it depends on marking. Warn when comparing units or months.
- People who booked a call are not the official Lead or MQL.
- Call to sale: normalized email; phone (last 11 digits) only for those who did not match; name only as probable. Non-renewal sale dated from the first call on. State the match rate.
- Cohort: people with their first call in the month; bought within 7, 30, 60 and 90 days, with a complete window flag. Those who bought earlier are left out.
- Aggregated numbers only: never list the name, email or phone of anyone who booked.
- Every answer states how current the scheduling data is.
Exceptions by client:
- <client>: the account <account> mixes products; pattern <pattern> in the call name = <unit>.
- <client>: the unit <unit> sells through chat and does not use the scheduling tool.
- <client>: a purchase on the same day as the call counts as a sale with a call.
```

### Variations

- **Sessions in the CRM:** Without a scheduling tool connected, use the CRM's session booked and session held dates and the funnel prospecting, connection, session booked, session held and sale.
- **Hand-raise:** In evergreen funnels, whoever asks to talk to sales enters the cohort; flag it through the sales funnel or the form's marks, because the CRM keeps only the current source.
- **Group calls:** Selection sessions and open classes with several leads per call: read meetings and slots separately and do not compare the per-lead rate with that of individual calls.
