Calendar Emails on Participants
Calendar emails on participants
When a bot joins a meeting that is on a calendar connected to your MeetStream account, each person the bot actually saw can be labeled with the email address from that calendar invite. The field is calendar_email.
Meeting platforms do not give the bot other participants’ account emails. participant.email stays whatever the platform reported (usually null). calendar_email is a separate field, filled from your calendar after the meeting.
Where to read it
After the bot is done, calendar_email is on every observed participant in:
GET /bots/{bot_id}/get_participantsparticipants.jsonparticipant_events.json(on theparticipantobject of each event)
Real-time participant_events.join webhooks sent while the meeting is still running do not include calendar_email. Read it after post-call processing has finished.
What is matched
MeetStream only labels people the bot observed. Someone who was invited but never joined is not added. Someone who joined but was not invited stays in the file with calendar_email: null.
The name taken from the meeting, in order, is fullName, then displayName, then name. That name is compared with each invitee on the calendar event, including the organizer.
The local part of the email is also used as a name (jane.smith@acme.com can match “Jane Smith”) so an invite that has an address and no display name can still match.
These are never used as invitees:
- Meeting rooms and other calendar resources
- The bot’s own tile (the bot username is never given an email)
The same person rejoining on another device keeps the same calendar_email. One invitee email is given to at most one distinct name in the meeting.
Which calendar event
- The event the bot was scheduled from, when that event still belongs to your account.
- Otherwise, if the bot joined by meeting link, the event on your connected calendar with the same link whose start time is closest to when the bot joined. For Zoom, the link is compared by meeting id, so extra query parameters do not matter.
An event on another MeetStream account is never used. If no event is found, or the event was removed before processing, every calendar_email is null.
How a name becomes an email
Names are compared after light cleanup: case and accents are ignored, digits are dropped, and tags such as (Guest) or [Acme] are removed. Word order does not matter (Doe, Jane and Jane Doe are the same name).
An email is written only when one invitee is a clear match and is clearly ahead of every other invitee. Otherwise the field is null.
A match is clear in these cases:
Short forms have to be at least three letters and have to be the start of the name (Chris matches Christopher; Al does not match Alexandra). Common English nicknames that are not a prefix are also recognized, such as Mike for Michael, Bob for Robert, and Bill for William.
A first-name-only match is kept only when no other invitee fits as well. Dan stays null when both daniel@acme.com and danielle@acme.com are invited. Mike stays null when both Michael Foo and Mike Bar are invited.
If two different names in the meeting both point at the same invitee, only the stronger name gets the email. Jane Doe wins over a bare Jane when the invite has a single Jane Doe.
When calendar_email stays null
- The person was not on the invite.
- The meeting name does not clearly match any invitee.
- Two invitees match about equally well.
- The only clue is a one- or two-letter fragment.
- The calendar event has no display name and the email local part does not resemble the meeting name.
- There is no calendar event for this bot.
- The row is the bot itself, a room, or a resource.
How to invite so the match succeeds
Put a display name on the guest when you add them. The meeting name is compared with that display name first, and with the email local part when no display name was saved.
Google Calendar often stores only the email when a guest is added by typing an address. It does not fill in that person’s Google or Meet profile name later. Set the display name on the invite itself:
Outlook invites already carry emailAddress.name next to emailAddress.address. The organizer is included, so the organizer’s meeting name can match the organizer address.
A group address such as team@acme.com matches only if someone in the meeting is named like that address. It does not expand into the group’s members.
What this does not change
participant.emailis still the email from the meeting platform, not the calendar.- People who never joined are not inserted into the participant list.
- Emails come only from the calendar connected to your account and are returned only with that bot’s participant data. They are removed when that bot’s data is deleted.
