From d4000c18cf0850c30e9e1c34d5dcc0d498bb75ad Mon Sep 17 00:00:00 2001 From: Jennie Robinson Faber Date: Thu, 30 Apr 2026 14:40:13 +0100 Subject: [PATCH] fix(launch-flow): send welcome email on free /accept-invite activation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Free invite acceptance previously created a Member and signed them in without sending the welcome email — pre-registrants got nothing as the join confirmation. Wire sendWelcomeEmail into the free branch matching the pattern in members/create.post.js. Paid /accept-invite activations continue to receive the welcome email via /api/helcim/subscription on the pending_payment → active transition, so this only changes the free path. --- server/api/invite/accept.post.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/server/api/invite/accept.post.js b/server/api/invite/accept.post.js index 84d5db6..27e5109 100644 --- a/server/api/invite/accept.post.js +++ b/server/api/invite/accept.post.js @@ -5,6 +5,7 @@ import { connectDB } from '../../utils/mongoose.js' import { setAuthCookie } from '../../utils/auth.js' import { assignMemberNumber } from '../../utils/memberNumber.js' import { createHelcimCustomer } from '../../utils/helcim.js' +import { sendWelcomeEmail } from '../../utils/resend.js' export default defineEventHandler(async (event) => { const body = await validateBody(event, inviteAcceptSchema) @@ -88,6 +89,15 @@ export default defineEventHandler(async (event) => { // For free tier, redirect to welcome if (body.contributionAmount === 0) { await autoFlagPreExistingSlackAccess(member) + try { + await sendWelcomeEmail(member) + logActivity(member._id, 'email_sent', { + emailType: 'welcome', + subject: 'Welcome to Ghost Guild' + }) + } catch (emailError) { + console.error('Failed to send welcome email:', emailError) + } return { success: true, requiresPayment: false,