valley-commons/api/newsletter.js

39 lines
1.1 KiB
JavaScript

// Newsletter signup endpoint — adds email to Listmonk mailing list
const { addToListmonk } = require('./listmonk');
module.exports = async function handler(req, res) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
if (req.method === 'OPTIONS') {
return res.status(200).end();
}
if (req.method !== 'POST') {
return res.status(405).json({ error: 'Method not allowed' });
}
try {
const { email } = req.body;
if (!email || !email.includes('@')) {
return res.status(400).json({ error: 'Valid email is required' });
}
const emailLower = email.toLowerCase().trim();
await addToListmonk(emailLower, '', {
source: 'newsletter_signup',
});
return res.status(200).json({
success: true,
message: 'Successfully subscribed!'
});
} catch (error) {
console.error('Newsletter signup error:', error);
return res.status(500).json({ error: 'Failed to subscribe. Please try again later.' });
}
};