// app/api/webhooks/nuntly/route.tsimport type { NextRequest, NextResponse } from 'next/server';import crypto from 'crypto';export async function POST(req: NextRequest) { const payload = await req.text(); const signature = req.headers.get('x-nuntly-signature') || ''; const secret = process.env.NUNTLY_SIGNING_SECRET!; // Verify signature (HMAC SHA‑256) const expected = crypto.createHmac('sha256', secret).update(payload).digest('hex'); if (!crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected))) { return new Response('Invalid signature', { status: 401 }); } const event = JSON.parse(payload); switch (event.type) { case 'email.delivered': // update your DB, trigger workflows, etc. break; case 'email.bounced': // handle bounce: do not use this email anymore break; case 'email.complained': // handle complained: do not use this email anymore break; // add more cases as needed } return new Response('OK');}