Skip to navigation

Google Meet Lobby & Admission Troubleshooting

Find out why a bot is waiting, was denied or never got in, and fix it
View as Markdown

Use this page when a Google Meet bot is waiting, times out, gets denied or never appears. For how Meet bots join in general, see Google Meet Bots.

Google Meet decides who gets in. MeetStream asks to join, waits for waiting_room_timeout, and reports exactly what happened, but it cannot override the meeting’s access settings or the organizer’s Google Workspace policies.

Step 1: Check what the bot reported

Open the bot in the dashboard (All Bots, then the bot) or call Get Bot Details and read Status and ErrorReason.

StatusErrorReasonDashboard timelineWhat it means
InWaitingRoomnoneIn Waiting RoomThe bot asked to join and is still waiting to be admitted.
NotAllowedWaitingRoomTimeoutIn Waiting Room, Leaving, Not AdmittedNobody admitted the bot before waiting_room_timeout. The bot withdrew its request.
DeniedHostDeniedRejectedSomeone clicked Deny entry.
FailedCantJoinCallFailedMeet showed “You can’t join this video call” on every attempt.
FailedMeetingRestrictedFailedMeet said access is restricted, for example “Only people invited by the organizer”.
FailedSignInRequiredFailedMeet sent the bot to Google’s sign-in page: the meeting only admits signed-in Google accounts.
FailedMeetingNotStartedFailedMeet showed “This meeting has not started”.
NotAllowedJoinHangNot AdmittedThe bot made no progress toward the lobby for about 5 minutes.
MeetStream bot detail for a Google Meet bot showing In Waiting Room, Leaving and Not Admitted in the status timeline, with final status NotAllowed
A lobby timeout in the dashboard: the bot was In Waiting Room (1) for about ten minutes, then Not Admitted (2), ending as NotAllowed (3).

Every status, reason and message is listed in the Bot status and error code reference.

Step 2: Match the symptom

SymptomLikely causeFix
MeetStream reports bot.in_waiting_room, but people in the call see no requestWith Host management on, only the host and co-hosts see join requests. The person looking is a regular attendee.Ask the organizer or a co-host to open the People panel and admit the bot. Add co-hosts to the Calendar event ahead of time.
Bot ends NotAllowed with WaitingRoomTimeoutNo host or co-host was in the call in time, or the request was ignored.Make sure a host is present when the bot arrives. Match waiting_room_timeout (60 to 600 seconds) to when the host usually joins. For unattended meetings, use a signed-in bot on the invite.
Invited people walk straight in, but the bot waitsThe meeting is Trusted or Restricted: the organization and calendar invitees join directly, everyone else knocks. A guest bot is neither.Use a signed-in bot and add its exact email to the Calendar event.
A signed-in bot is on the invite but still waitsThe event has the Waiting room on, which holds everyone. Or the bot signed in with a different login than the one invited.Admit it with Bring in, or turn on Bring in automatically. Pin the invited login with sign_in_email and strict_email: true.
Even the host never sees a request, and the bot ends CantJoinCall or Denied”Anyone with the meeting link can ask to join” is off. Google automatically turns away anonymous users and third-party note takers that ask to join, so no prompt appears.Turn the option back on in Host controls > Meeting access, or use a signed-in bot that is on the invite.
Bot ends Denied with HostDeniedSomeone clicked Deny entry, often because they didn’t recognize the bot.Use a recognizable bot_name, tell participants to expect the bot, or use a signed-in bot so it shows a known account.
Bot ends Failed with CantJoinCallThe meeting or its organization does not let people from outside, or people who aren’t signed in, ask to join. The bot already retried several times.Check Meeting access and the organizer’s Workspace policy, or use a signed-in bot on the invite.
Bot ends Failed with SignInRequiredThe organizer’s Workspace only admits signed-in Google accounts.Use a signed-in bot.
Bot ends Failed with MeetingRestrictedThe meeting only admits invited people or the organization’s own members.Invite a signed-in bot’s email, or relax the meeting access type. A bot can’t join meetings limited to the organizer’s own organization unless its account belongs to it.
Bot ends Failed with MeetingNotStartedThe meeting has not started, for example because the host must join before anyone else.Start the meeting first, or schedule the bot for when the host is there.
Bot joins with no admission at all, and you expected a promptThe meeting is Open: anyone with the link joins without knocking.Nothing is wrong. Switch the meeting to Trusted or Restricted if you want to approve the bot.

How Google Meet admission works

Meeting access types

The host sets these in Host controls > Meeting access during the call, or in the Calendar event under Video call options > Host controls (Google’s description):

Access typeWho joins without knockingA guest bot
OpenAnyone with the linkJoins directly
TrustedPeople in the host’s organization, plus people invited through Google CalendarAsks to join
RestrictedPeople invited through Google Calendar or added by a hostAsks to join

In Trusted and Restricted meetings, the host can turn off “Anyone with the meeting link can ask to join” (Trusted) or “Anyone can ask to join, including people who dial in” (Restricted). Then people who aren’t allowed in directly can’t knock at all, and Google automatically denies anonymous users and note-taking bots.

Who can admit

  • Host management on: the host and co-hosts admit people. Other attendees often can’t see requests at all.
  • Host management off: people from the organizer’s organization who are in the call can usually respond to requests too.
  • Waiting room on: everyone, invited or not, waits until a host clicks Bring in or Bring everyone in, or the host has turned on Bring in automatically (Google’s Waiting room help).

What the bot does while it waits

  • It sends bot.in_waiting_room as soon as it clicks Ask to join (or Join now), so the event can be very brief when no approval is needed.
  • It waits up to automatic_leave.waiting_room_timeout seconds: 60 to 600 on Google Meet, default 600. For scheduled bots the wait counts from the scheduled start time.
  • On timeout it clicks Leave, which withdraws the request, then reports Leaving and NotAllowed with the message Failed: Not admitted to meeting.
{
"meeting_link": "https://meet.google.com/abc-defg-hij",
"bot_name": "Meeting Assistant",
"automatic_leave": {
"waiting_room_timeout": 300
}
}

More checks

  1. Open meet.new while signed in. You created the meeting, so you are its host.
  2. Send a MeetStream bot to it.
  3. Confirm you see the request and can admit the bot.
  4. Go back to the affected meeting and check whether you have Host controls there.

If the test works but the real meeting does not, compare the affected event’s organizer, co-hosts, invited guests and Meeting access settings.

Open the event in Google Calendar and look at its organizer. It can differ from the person running the call: an assistant, a shared calendar, a service account or a scheduling tool may have created it.

With the Google Calendar API, read the event’s organizer field:

{
"organizer": {
"email": "scheduler@example.com",
"displayName": "Scheduling Service",
"self": false
}
}

If the organizer won’t attend, make an attendee a co-host in the Calendar event, create the event from a calendar of someone who will attend, or use a signed-in bot on the invite.

In Google Calendar, edit the event, turn on Host management in the Meet options, and add co-hosts. During a meeting, a host can open the participant’s menu in the People panel and choose Grant host controls (Google: add co-hosts).

waiting_room_timeout is capped at 600 seconds on Google Meet. If hosts often arrive more than 10 minutes late, schedule the bot closer to when the host joins, or use a signed-in bot on the invite so no admission is needed.

No. Each person chooses their own layout in Google Meet, and neither MeetStream nor the host can hide a participant for everyone.

Meet removes everyone, including the bot. The bot reports status Stopped and normal post-call processing runs. Don’t assume every departure came from your own call to Remove Bot: check bot_event and ErrorReason.

Signed-in bots for reliable admission

A guest bot always depends on someone admitting it unless the meeting is Open. For production workflows where nobody may be there to approve it:

  1. Complete the Google Signed-In Bots setup.
  2. Add the bot account’s email to the Google Calendar event.
  3. Create the bot with google_meet.login_required: true and pin that account with sign_in_email (keep strict_email: true).
  4. Leave the Calendar Waiting room off for these meetings, or turn on Bring in automatically.
  5. Handle bot.denied, bot.notallowed and bot.failed in your webhook handler as admission outcomes.

Each signed-in login can carry up to 30 bots at the same time. A signed-in bot shows its Google account’s name and photo instead of bot_name, and if its sign-in fails it stops with GoogleSignInFailed rather than joining as a guest.

Webhooks for admission outcomes

All terminal webhooks carry event: bot.stopped; read bot_event for the cause. On Google Meet:

Outcomebot_eventbot_statusstatus_code
Not admitted in timebot.notallowedNotAllowed500
Denied by a hostbot.deniedDenied500
Blocked by a Meet page (CantJoinCall, MeetingRestricted, SignInRequired, …)bot.failedFailed (with failure_reason)500

bot.recording_permission_allowed and bot.recording_permission_denied are Zoom only; Meet bots go straight from bot.inmeeting to bot.recording. Full payloads: Webhooks and Events.