diff --git a/app/api/create-checkout-session/route.ts b/app/api/create-checkout-session/route.ts index 8124d50..2a9095e 100644 --- a/app/api/create-checkout-session/route.ts +++ b/app/api/create-checkout-session/route.ts @@ -53,6 +53,7 @@ export async function POST(request: NextRequest) { const metadata: Record = {} if (registrationData) { metadata.name = registrationData.name || "" + metadata.email = registrationData.email || "" metadata.contact = registrationData.contact || "" metadata.contributions = (registrationData.contributions || "").substring(0, 500) metadata.expectations = (registrationData.expectations || "").substring(0, 500) diff --git a/app/api/register/route.ts b/app/api/register/route.ts index 98a142f..244d203 100644 --- a/app/api/register/route.ts +++ b/app/api/register/route.ts @@ -5,10 +5,10 @@ export async function POST(request: NextRequest) { try { const body = await request.json() - const { name, contact, contributions, expectations, howHeard, dietary, crewConsent } = body + const { name, email, contact, contributions, expectations, howHeard, dietary, crewConsent } = body // Validate required fields - if (!name || !contact || !contributions || !expectations || !crewConsent) { + if (!name || !email || !contact || !contributions || !expectations || !crewConsent) { return NextResponse.json( { error: "Missing required fields" }, { status: 400 } @@ -21,6 +21,7 @@ export async function POST(request: NextRequest) { // Add registration to Google Sheet const rowNumber = await addRegistration({ name, + email, contact, contributions, expectations, diff --git a/app/api/webhook/route.ts b/app/api/webhook/route.ts index f237a25..536faf3 100644 --- a/app/api/webhook/route.ts +++ b/app/api/webhook/route.ts @@ -33,7 +33,7 @@ export async function POST(request: NextRequest) { console.log(`[Webhook] Payment ${paymentId} status: ${payment.status}`) if (payment.status === "paid") { - const customerEmail = payment.billingAddress?.email || "" + const customerEmail = metadata.email || payment.billingAddress?.email || "" const amountPaid = `€${payment.amount.value}` const accommodationType = metadata.accommodation || "none" diff --git a/app/register/page.tsx b/app/register/page.tsx index c791f47..c9bbe6e 100644 --- a/app/register/page.tsx +++ b/app/register/page.tsx @@ -20,6 +20,7 @@ export default function RegisterPage() { const [accommodationType, setAccommodationType] = useState("ch-multi") const [formData, setFormData] = useState({ name: "", + email: "", contact: "", contributions: "", expectations: "", @@ -50,6 +51,7 @@ export default function RegisterPage() { // Validate required fields if ( !formData.name || + !formData.email || !formData.contact || !formData.contributions || !formData.expectations || @@ -74,6 +76,7 @@ export default function RegisterPage() { }, body: JSON.stringify({ name: formData.name, + email: formData.email, contact: formData.contact, contributions: formData.contributions, expectations: formData.expectations, @@ -494,6 +497,22 @@ export default function RegisterPage() { /> + {/* Email */} +
+ + setFormData({ ...formData, email: e.target.value })} + /> +

+ We'll send your registration confirmation and event updates here. +

+
+ {/* Contact */}
diff --git a/lib/email.ts b/lib/email.ts index 25d3cd4..3c67438 100644 --- a/lib/email.ts +++ b/lib/email.ts @@ -179,6 +179,7 @@ export async function sendPaymentConfirmation( const info = await transport.sendMail({ from: EMAIL_FROM, to: data.email, + bcc: INTERNAL_NOTIFY_EMAIL, subject: "Registration Confirmed - Crypto Commons Gathering 2026", html, }) diff --git a/public/og-image.jpg b/public/og-image.jpg index d830dc7..3eaf2e5 100644 Binary files a/public/og-image.jpg and b/public/og-image.jpg differ