feat(campaign): send welcome campaign on sign up

This commit is contained in:
Ryan Mwangi 2024-12-29 02:47:36 +03:00
parent 56ffbec4b2
commit 7788a6fcd9
2 changed files with 23 additions and 1 deletions

View file

@ -8,6 +8,8 @@ export async function submitToListmonk(req, res) {
const listmonkUrl = process.env.LISTMONK_URL;
const listmonkUsername = process.env.LISTMONK_USERNAME;
const listmonkPassword = process.env.LISTMONK_PASSWORD;
const campaignId = process.env.PRESET_CAMPAIGN_ID;
const listmonkBaseUrl = process.env.LISTMONK_BASE_URL;
// Encode username and password as base64
const auth = Buffer.from(`${listmonkUsername}:${listmonkPassword}`).toString('base64');
@ -26,6 +28,7 @@ export async function submitToListmonk(req, res) {
console.log('Sending request to Listmonk with payload:', payload);
try {
// Add subscriber
const response = await fetch(listmonkUrl, {
method: 'POST',
headers: {
@ -40,6 +43,25 @@ export async function submitToListmonk(req, res) {
throw new Error(`Listmonk API error: ${response.statusText}. Response body: ${errorBody}`);
}
// Send the welcome campaign
const campaignSendUrl = `${listmonkBaseUrl}/campaigns/${campaignId}/send`;
console.log('Sending campaign using URL:', campaignSendUrl);
const campaignResponse = await fetch(campaignSendUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Basic ${auth}`
}
});
if (!campaignResponse.ok) {
const errorBody = await campaignResponse.text();
throw new Error(`Listmonk API error (Send Campaign): ${campaignResponse.statusText}. Response body: ${errorBody}`);
}
const campaignResult = await campaignResponse.json();
console.log('Campaign sent successfully:', campaignResult);
const result = await response.json();
res.status(200).json({ message: 'Subscription successful!', result });
} catch (error) {

View file

@ -9,7 +9,7 @@ dotenv.config();
validateEnvVariables();
const app = express();
const PORT = process.env.PORT || 3002;
const PORT = process.env.PORT || 3003;
app.use(express.json());