From 2e8ffe779fb0cc4c76079fd38ea2e28f89d2fe18 Mon Sep 17 00:00:00 2001 From: Brian O'Kelley Date: Thu, 15 Jan 2026 10:26:10 -0500 Subject: [PATCH] fix: Get meeting attendee emails from users table The working_group_memberships.user_email field is often NULL because it's not always populated when members are added. Updated the query to join with the users table to get the actual email. This fixes calendar invites not being sent because attendeeCount was 0. Co-Authored-By: Claude Opus 4.5 --- .changeset/fix-meeting-attendee-emails.md | 10 ++++++++++ server/src/db/meetings-db.ts | 18 +++++++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 .changeset/fix-meeting-attendee-emails.md diff --git a/.changeset/fix-meeting-attendee-emails.md b/.changeset/fix-meeting-attendee-emails.md new file mode 100644 index 0000000000..a06cbcfa4b --- /dev/null +++ b/.changeset/fix-meeting-attendee-emails.md @@ -0,0 +1,10 @@ +--- +--- + +fix: Get meeting attendee emails from users table + +The working_group_memberships.user_email field is often NULL because it's not +always populated when members are added. Updated the query to join with the +users table to get the actual email, falling back to the cached value if needed. + +This fixes calendar invites not being sent because attendeeCount was 0. diff --git a/server/src/db/meetings-db.ts b/server/src/db/meetings-db.ts index 42997d6dda..38f18eec47 100644 --- a/server/src/db/meetings-db.ts +++ b/server/src/db/meetings-db.ts @@ -560,12 +560,14 @@ export class MeetingsDatabase { if (topicSlugs && topicSlugs.length > 0) { // Invite only members subscribed to these topics + // Join with users table to get email (working_group_memberships.user_email is often NULL) memberQuery = ` SELECT wgm.workos_user_id, - wgm.user_email as email, - wgm.user_name as name + COALESCE(u.email, wgm.user_email) as email, + COALESCE(u.first_name || ' ' || u.last_name, wgm.user_name) as name FROM working_group_memberships wgm + LEFT JOIN users u ON u.workos_user_id = wgm.workos_user_id LEFT JOIN working_group_topic_subscriptions wgts ON wgts.working_group_id = wgm.working_group_id AND wgts.workos_user_id = wgm.workos_user_id @@ -576,13 +578,15 @@ export class MeetingsDatabase { memberParams = [workingGroupId, topicSlugs]; } else { // Invite all members + // Join with users table to get email (working_group_memberships.user_email is often NULL) memberQuery = ` SELECT - workos_user_id, - user_email as email, - user_name as name - FROM working_group_memberships - WHERE working_group_id = $1 AND status = 'active' + wgm.workos_user_id, + COALESCE(u.email, wgm.user_email) as email, + COALESCE(u.first_name || ' ' || u.last_name, wgm.user_name) as name + FROM working_group_memberships wgm + LEFT JOIN users u ON u.workos_user_id = wgm.workos_user_id + WHERE wgm.working_group_id = $1 AND wgm.status = 'active' `; memberParams = [workingGroupId]; }