Fixes a long-standing UX gap: team admins could not invite people who weren’t already team members from the event type Assignment tab. They had to leave the event type editor, go to Settings → Teams → Members, invite the person there, wait for them to accept, and then come back to assign them. This PR removes that friction entirely.
A new “Invite people by email” section is added below the existing host assignment UI. It allows admins to type one or multiple email addresses (comma/space/semicolon separated), validate them, and send invites — all without leaving the Assignment tab.
Rather than modifying the existing CheckedTeamSelect dropdown (which carries risk of breaking the existing assignment flow), this PR adds a self-contained InviteByEmailSection component rendered inside AddMembersWithSwitchWebWrapper. This keeps concerns separated and the existing host selection logic untouched.
The invite reuses the existing viewer.teams.inviteMember tRPC procedure — no new backend changes required. After a successful invite, onInvited invalidates viewer.teams.get and viewer.eventTypes.get so the UI refetches automatically.
PR #28354 was previously closed because of a dead code bug — the original return <AddMembersWithSwitch {...props} /> statement was never removed when InviteByEmailSection was added, making the new component completely unreachable. This PR fixes that by restructuring the component correctly.
AddMembersWithSwitchWebWrapper.tsx — removed the early return that blocked InviteByEmailSection from ever rendering; added the InviteByEmailSection component with email parsing, validation, loading state, and cache invalidation on successpackages/i18n/locales/en/common.json — added 3 i18n keys:
invite_team_member_by_emailinvite_team_member_by_email_descriptioninvite_team_member_email_placeholder🎥 Before — no invite option exists on the Assignment tab: https://www.loom.com/share/29d3a972ac2e40c6827849302acb6258
✅ After — invite section visible, invites sent, pending badge appears in Settings: https://www.loom.com/share/3bac8f7f9a0541c2b86e84462d17f45c
After screenshot — invited members appear as Pending in Settings → Teams → Members:
[![Pending invites]
]
No special environment variables required. Use any local cal.com dev setup with a team.
Minimal test data:
Happy path:
test@example.com, test2@example.com)Amit Verma
@Amitverma0509
Cal.com, Inc.
@cal