How summaries are produced
1
Provider webhook arrives
After a meeting ends, the calendar provider (Google Meet, Zoom, or Microsoft Teams) sends a webhook to MeetCost containing only a meeting ID. No cost figures are ever taken from the webhook body.
2
Attendance is fetched
MeetCost reads the full attendance report from the provider using the service’s own credentials. A forged webhook therefore results in one authenticated read against your own tenant and nothing else.
3
Actual cost is computed
rates.meeting_cost() is called over the actual attended minutes for each participant. Participants are priced against the pay record in effect on the meeting date. No-shows cost nothing; early leavers and late joiners are costed for the minutes they were present.4
Summary is stored and notified
The result is stored against the meeting record and an email notification is dispatched using the
meeting_summary template. Each recipient’s copy is redacted independently for their role and the active disclosure policy.Actual vs booked: what changes
A meeting booked for 60 minutes with eight people is not necessarily a 60-minute eight-person meeting.
The summary response includes
late_join_minutes as a separate field so you can surface the total minutes lost to late starts as its own metric.
Retrieving a summary
Two endpoint forms are available. Both return the sameMeetingSummaryResponse body, redacted for the caller.
- By MeetCost meeting ID
- By provider meeting ID
Response shape
actual_vs_estimate is the signed difference between actual cost and the estimate that was recorded at scheduling time. A negative value means the meeting cost less than expected — fewer people showed up, or it ran short.
estimated_total and actual_vs_estimate are only present when a scheduling-time estimate was recorded for this meeting. They are null for meetings ingested manually or for platforms that do not use the add-in.Why 404 is a normal state
The by-provider endpoint will return404 during a meeting and for some time after it ends. Providers do not publish attendance data in real time — it typically becomes available minutes to hours after the meeting concludes.
Role requirements
Who can view a summary depends on the meeting and the viewer’s role.
A caller who was neither in the meeting nor its organiser and does not hold at least the
team_lead role receives 403 Forbidden.
Your own meetings list
Manually ingesting meetings
For platforms MeetCost has no webhook collector for, you can push a completed meeting directly.(provider, provider_meeting_id). Provider webhooks retry, and a retry must not double-count a meeting in the monthly report.
Email notification format
After a meeting is processed, MeetCost sends each recipient a summary email using themeeting_summary template. Each recipient’s email is redacted independently — a participant email shows only what that participant is permitted to see under the active disclosure policy, which may differ from what the organiser sees in their copy.
The email includes:
- Meeting title, date, and actual duration
- Total actual cost (if visible to the recipient)
- Comparison to the scheduled estimate, where available
- Headcount and any
coverage_noteexplaining fallback-rated attendees - A link to the full summary in the add-in