mirror of
https://github.com/Litlyx/litlyx
synced 2025-12-10 15:58:38 +01:00
update email templates
This commit is contained in:
@@ -15,7 +15,7 @@ export async function checkLimitsForEmail(projectCounts: TUserLimit) {
|
|||||||
await LimitNotifyModel.create({ user_id, limit1: false, limit2: false, limit3: false })
|
await LimitNotifyModel.create({ user_id, limit1: false, limit2: false, limit3: false })
|
||||||
}
|
}
|
||||||
|
|
||||||
const owner = await UserModel.findById(project.owner);
|
const owner = await UserModel.findById(user_id);
|
||||||
if (!owner) return;
|
if (!owner) return;
|
||||||
|
|
||||||
const userName = owner.given_name || owner.name || 'no_name';
|
const userName = owner.given_name || owner.name || 'no_name';
|
||||||
@@ -25,7 +25,7 @@ export async function checkLimitsForEmail(projectCounts: TUserLimit) {
|
|||||||
if (hasNotifyEntry.limit3 === true) return;
|
if (hasNotifyEntry.limit3 === true) return;
|
||||||
|
|
||||||
setImmediate(() => {
|
setImmediate(() => {
|
||||||
const emailData = EmailService.getEmailServerInfo('limit_max', { target: owner.email, userName });
|
const emailData = EmailService.getEmailServerInfo('limit_max', { target: owner.email });
|
||||||
EmailServiceHelper.sendEmail(emailData);
|
EmailServiceHelper.sendEmail(emailData);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ export async function checkLimitsForEmail(projectCounts: TUserLimit) {
|
|||||||
if (hasNotifyEntry.limit2 === true) return;
|
if (hasNotifyEntry.limit2 === true) return;
|
||||||
|
|
||||||
setImmediate(() => {
|
setImmediate(() => {
|
||||||
const emailData = EmailService.getEmailServerInfo('limit_90', { target: owner.email, userName });
|
const emailData = EmailService.getEmailServerInfo('limit_90', { target: owner.email });
|
||||||
EmailServiceHelper.sendEmail(emailData);
|
EmailServiceHelper.sendEmail(emailData);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ export async function checkLimitsForEmail(projectCounts: TUserLimit) {
|
|||||||
if (hasNotifyEntry.limit1 === true) return;
|
if (hasNotifyEntry.limit1 === true) return;
|
||||||
|
|
||||||
setImmediate(() => {
|
setImmediate(() => {
|
||||||
const emailData = EmailService.getEmailServerInfo('limit_50', { target: owner.email, userName });
|
const emailData = EmailService.getEmailServerInfo('limit_50', { target: owner.email });
|
||||||
EmailServiceHelper.sendEmail(emailData);
|
EmailServiceHelper.sendEmail(emailData);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ export class EmailService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static async sendLimitEmail50(target: string, projectName: string) {
|
static async sendLimitEmail50(target: string) {
|
||||||
try {
|
try {
|
||||||
const sendSmtpEmail = new SendSmtpEmail();
|
const sendSmtpEmail = new SendSmtpEmail();
|
||||||
sendSmtpEmail.subject = "⚡ You've reached 50% limit on Litlyx";
|
sendSmtpEmail.subject = "⚡ You've reached 50% limit on Litlyx";
|
||||||
@@ -70,7 +70,6 @@ export class EmailService {
|
|||||||
sendSmtpEmail.to = [{ "email": target }];
|
sendSmtpEmail.to = [{ "email": target }];
|
||||||
|
|
||||||
sendSmtpEmail.htmlContent = TEMPLATE.LIMIT_50_EMAIL
|
sendSmtpEmail.htmlContent = TEMPLATE.LIMIT_50_EMAIL
|
||||||
.replace(/\[Project Name\]/, projectName)
|
|
||||||
.toString();
|
.toString();
|
||||||
|
|
||||||
await this.apiInstance.sendTransacEmail(sendSmtpEmail);
|
await this.apiInstance.sendTransacEmail(sendSmtpEmail);
|
||||||
@@ -81,14 +80,13 @@ export class EmailService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static async sendLimitEmail90(target: string, projectName: string) {
|
static async sendLimitEmail90(target: string) {
|
||||||
try {
|
try {
|
||||||
const sendSmtpEmail = new SendSmtpEmail();
|
const sendSmtpEmail = new SendSmtpEmail();
|
||||||
sendSmtpEmail.subject = "⚡ You've reached 90% limit on Litlyx";
|
sendSmtpEmail.subject = "⚡ You've reached 90% limit on Litlyx";
|
||||||
sendSmtpEmail.sender = { "name": "Litlyx", "email": "help@litlyx.com" };
|
sendSmtpEmail.sender = { "name": "Litlyx", "email": "help@litlyx.com" };
|
||||||
sendSmtpEmail.to = [{ "email": target }];
|
sendSmtpEmail.to = [{ "email": target }];
|
||||||
sendSmtpEmail.htmlContent = TEMPLATE.LIMIT_90_EMAIL
|
sendSmtpEmail.htmlContent = TEMPLATE.LIMIT_90_EMAIL
|
||||||
.replace(/\[Project Name\]/, projectName)
|
|
||||||
.toString();
|
.toString();
|
||||||
await this.apiInstance.sendTransacEmail(sendSmtpEmail);
|
await this.apiInstance.sendTransacEmail(sendSmtpEmail);
|
||||||
return true;
|
return true;
|
||||||
@@ -98,14 +96,13 @@ export class EmailService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static async sendLimitEmailMax(target: string, projectName: string) {
|
static async sendLimitEmailMax(target: string) {
|
||||||
try {
|
try {
|
||||||
const sendSmtpEmail = new SendSmtpEmail();
|
const sendSmtpEmail = new SendSmtpEmail();
|
||||||
sendSmtpEmail.subject = "🚨 You've reached your limit on Litlyx!";
|
sendSmtpEmail.subject = "🚨 You've reached your limit on Litlyx!";
|
||||||
sendSmtpEmail.sender = { "name": "Litlyx", "email": "help@litlyx.com" };
|
sendSmtpEmail.sender = { "name": "Litlyx", "email": "help@litlyx.com" };
|
||||||
sendSmtpEmail.to = [{ "email": target }];
|
sendSmtpEmail.to = [{ "email": target }];
|
||||||
sendSmtpEmail.htmlContent = TEMPLATE.LIMIT_MAX_EMAIL
|
sendSmtpEmail.htmlContent = TEMPLATE.LIMIT_MAX_EMAIL
|
||||||
.replace(/\[Project Name\]/, projectName)
|
|
||||||
.toString();
|
.toString();
|
||||||
await this.apiInstance.sendTransacEmail(sendSmtpEmail);
|
await this.apiInstance.sendTransacEmail(sendSmtpEmail);
|
||||||
return true;
|
return true;
|
||||||
@@ -130,14 +127,13 @@ export class EmailService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static async sendPurchaseEmail(target: string, projectName: string) {
|
static async sendPurchaseEmail(target: string) {
|
||||||
try {
|
try {
|
||||||
const sendSmtpEmail = new SendSmtpEmail();
|
const sendSmtpEmail = new SendSmtpEmail();
|
||||||
sendSmtpEmail.subject = "Thank You for Upgrading Your Litlyx Plan!";
|
sendSmtpEmail.subject = "Thank You for Upgrading Your Litlyx Plan!";
|
||||||
sendSmtpEmail.sender = { "name": "Litlyx", "email": "help@litlyx.com" };
|
sendSmtpEmail.sender = { "name": "Litlyx", "email": "help@litlyx.com" };
|
||||||
sendSmtpEmail.to = [{ "email": target }];
|
sendSmtpEmail.to = [{ "email": target }];
|
||||||
sendSmtpEmail.htmlContent = TEMPLATE.PURCHASE_EMAIL
|
sendSmtpEmail.htmlContent = TEMPLATE.PURCHASE_EMAIL
|
||||||
.replace(/\[Project Name\]/, projectName)
|
|
||||||
.toString();
|
.toString();
|
||||||
await this.apiInstance.sendTransacEmail(sendSmtpEmail);
|
await this.apiInstance.sendTransacEmail(sendSmtpEmail);
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -90,10 +90,8 @@ app.post('/send/welcome', express.json(), async (req, res) => {
|
|||||||
|
|
||||||
app.post('/send/purchase', express.json(), async (req, res) => {
|
app.post('/send/purchase', express.json(), async (req, res) => {
|
||||||
try {
|
try {
|
||||||
console.log('PURCHASE EMAIL DISABLED')
|
const { target } = req.body;
|
||||||
return;
|
const ok = await EmailService.sendPurchaseEmail(target);
|
||||||
const { target, projectName } = req.body;
|
|
||||||
const ok = await EmailService.sendPurchaseEmail(target, projectName);
|
|
||||||
res.json({ ok });
|
res.json({ ok });
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
res.status(500).json({ error: ex.message });
|
res.status(500).json({ error: ex.message });
|
||||||
@@ -132,8 +130,8 @@ app.post('/send/anomaly/visits_events', express.json(), async (req, res) => {
|
|||||||
|
|
||||||
app.post('/send/limit/50', express.json(), async (req, res) => {
|
app.post('/send/limit/50', express.json(), async (req, res) => {
|
||||||
try {
|
try {
|
||||||
const { target, projectName } = req.body;
|
const { target } = req.body;
|
||||||
const ok = await EmailService.sendLimitEmail50(target, projectName);
|
const ok = await EmailService.sendLimitEmail50(target);
|
||||||
res.json({ ok });
|
res.json({ ok });
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
res.status(500).json({ error: ex.message });
|
res.status(500).json({ error: ex.message });
|
||||||
@@ -142,8 +140,8 @@ app.post('/send/limit/50', express.json(), async (req, res) => {
|
|||||||
|
|
||||||
app.post('/send/limit/90', express.json(), async (req, res) => {
|
app.post('/send/limit/90', express.json(), async (req, res) => {
|
||||||
try {
|
try {
|
||||||
const { target, projectName } = req.body;
|
const { target } = req.body;
|
||||||
const ok = await EmailService.sendLimitEmail90(target, projectName);
|
const ok = await EmailService.sendLimitEmail90(target);
|
||||||
res.json({ ok });
|
res.json({ ok });
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
res.status(500).json({ error: ex.message });
|
res.status(500).json({ error: ex.message });
|
||||||
@@ -152,8 +150,8 @@ app.post('/send/limit/90', express.json(), async (req, res) => {
|
|||||||
|
|
||||||
app.post('/send/limit/max', express.json(), async (req, res) => {
|
app.post('/send/limit/max', express.json(), async (req, res) => {
|
||||||
try {
|
try {
|
||||||
const { target, projectName } = req.body;
|
const { target } = req.body;
|
||||||
const ok = await EmailService.sendLimitEmailMax(target, projectName);
|
const ok = await EmailService.sendLimitEmailMax(target);
|
||||||
res.json({ ok });
|
res.json({ ok });
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
res.status(500).json({ error: ex.message });
|
res.status(500).json({ error: ex.message });
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
|
|
||||||
export const CONFIRM_EMAIL = `<!DOCTYPE html>
|
export const CONFIRM_EMAIL = `
|
||||||
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
@@ -35,7 +36,7 @@ export const CONFIRM_EMAIL = `<!DOCTYPE html>
|
|||||||
.button {
|
.button {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
padding: 10px 20px;
|
padding: 10px 20px;
|
||||||
background-color: #007bff;
|
background-color: #0a0a0a;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
@@ -61,7 +62,7 @@ export const CONFIRM_EMAIL = `<!DOCTYPE html>
|
|||||||
<p>We hope to hear from you soon!</p>
|
<p>We hope to hear from you soon!</p>
|
||||||
|
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<p>© 2024 Litlyx. All rights reserved.</p>
|
<p>2025 © Litlyx. All rights reserved.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -1,14 +1,10 @@
|
|||||||
export const LIMIT_50_EMAIL = `<!DOCTYPE html
|
export const LIMIT_50_EMAIL = `
|
||||||
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
<!DOCTYPE html>
|
||||||
<html dir="ltr" lang="en">
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<link rel="preload" as="image" href="https://react-email-demo-lpdmf0ryo-resend.vercel.app/static/airbnb-logo.png" />
|
|
||||||
<link rel="preload" as="image"
|
|
||||||
href="https://react-email-demo-lpdmf0ryo-resend.vercel.app/static/airbnb-review-user.jpg" />
|
|
||||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
||||||
<meta name="x-apple-disable-message-reformatting" />
|
<meta name="x-apple-disable-message-reformatting" />
|
||||||
<!--$-->
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body
|
<body
|
||||||
@@ -42,13 +38,13 @@ export const LIMIT_50_EMAIL = `<!DOCTYPE html
|
|||||||
<tr style="width:100%">
|
<tr style="width:100%">
|
||||||
<p
|
<p
|
||||||
style="font-size:32px;line-height:1.3;margin:16px 0;font-weight:700;color:#484848">
|
style="font-size:32px;line-height:1.3;margin:16px 0;font-weight:700;color:#484848">
|
||||||
You’ve Reached 50% of Your Litlyx Project Limit on [Project Name]
|
You’ve Reached 50% of Your Litlyx's Tracking Limits
|
||||||
</p>
|
</p>
|
||||||
<p
|
<p
|
||||||
style="font-size:18px;line-height:1.4;margin:16px 0;color:#484848;padding:24px;background-color:#f2f3f3;border-radius:4px">
|
style="font-size:18px;line-height:1.4;margin:16px 0;color:#484848;padding:24px;background-color:#f2f3f3;border-radius:4px">
|
||||||
To avoid losing precious data, please remember to monitor your usage
|
To avoid losing precious data, please remember to monitor your usage
|
||||||
on the <strong>Litlyx Dashboard</strong>. You can find your current
|
on the <strong>Litlyx Dashboard</strong>. You can find your current
|
||||||
usage details under <strong>Settings > Billing Tab</strong>
|
usage details in your account section.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>If you need more data collection storage, you may consider upgrading
|
<p>If you need more data collection storage, you may consider upgrading
|
||||||
@@ -65,7 +61,7 @@ export const LIMIT_50_EMAIL = `<!DOCTYPE html
|
|||||||
<p>Have a nice day!</p>
|
<p>Have a nice day!</p>
|
||||||
|
|
||||||
<p>Antonio,</p>
|
<p>Antonio,</p>
|
||||||
<p>CEO | Litlyx</p>
|
<p>CEO at Litlyx</p>
|
||||||
|
|
||||||
<a href="https://dashboard.litlyx.com/"
|
<a href="https://dashboard.litlyx.com/"
|
||||||
style="line-height:100%;text-decoration:none;display:block;max-width:100%;mso-padding-alt:0px;background-color:#5680f8;border-radius:3px;color:#fff;font-size:18px;padding-top:19px;padding-bottom:19px;text-align:center;width:100%;padding:19px 0px 19px 0px"
|
style="line-height:100%;text-decoration:none;display:block;max-width:100%;mso-padding-alt:0px;background-color:#5680f8;border-radius:3px;color:#fff;font-size:18px;padding-top:19px;padding-bottom:19px;text-align:center;width:100%;padding:19px 0px 19px 0px"
|
||||||
@@ -92,7 +88,7 @@ export const LIMIT_50_EMAIL = `<!DOCTYPE html
|
|||||||
<tr style="width:100%">
|
<tr style="width:100%">
|
||||||
<p
|
<p
|
||||||
style="font-size:14px;line-height:24px;margin:16px 0;color:#9ca299;margin-bottom:10px">
|
style="font-size:14px;line-height:24px;margin:16px 0;color:#9ca299;margin-bottom:10px">
|
||||||
2024 © Litlyx. All rights reserved.
|
2025 © Litlyx. All rights reserved.
|
||||||
<br>
|
<br>
|
||||||
Litlyx S.R.L. - Viale Tirreno, 187 - 00141 Rome - P.IVA:
|
Litlyx S.R.L. - Viale Tirreno, 187 - 00141 Rome - P.IVA:
|
||||||
17814721001- REA: RM-1743194
|
17814721001- REA: RM-1743194
|
||||||
|
|||||||
@@ -1,14 +1,10 @@
|
|||||||
export const LIMIT_90_EMAIL = `<!DOCTYPE html
|
export const LIMIT_90_EMAIL = `
|
||||||
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
<!DOCTYPE html>
|
||||||
<html dir="ltr" lang="en">
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<link rel="preload" as="image" href="https://react-email-demo-lpdmf0ryo-resend.vercel.app/static/airbnb-logo.png" />
|
|
||||||
<link rel="preload" as="image"
|
|
||||||
href="https://react-email-demo-lpdmf0ryo-resend.vercel.app/static/airbnb-review-user.jpg" />
|
|
||||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
||||||
<meta name="x-apple-disable-message-reformatting" />
|
<meta name="x-apple-disable-message-reformatting" />
|
||||||
<!--$-->
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body
|
<body
|
||||||
@@ -42,13 +38,13 @@ export const LIMIT_90_EMAIL = `<!DOCTYPE html
|
|||||||
<tr style="width:100%">
|
<tr style="width:100%">
|
||||||
<p
|
<p
|
||||||
style="font-size:32px;line-height:1.3;margin:16px 0;font-weight:700;color:#484848">
|
style="font-size:32px;line-height:1.3;margin:16px 0;font-weight:700;color:#484848">
|
||||||
You’ve Reached 90% of Your Litlyx Project Limit on [Project Name]
|
You’ve Reached 90% of Your Litlyx's Tracking Limits
|
||||||
</p>
|
</p>
|
||||||
<p
|
<p
|
||||||
style="font-size:18px;line-height:1.4;margin:16px 0;color:#484848;padding:24px;background-color:#f2f3f3;border-radius:4px">
|
style="font-size:18px;line-height:1.4;margin:16px 0;color:#484848;padding:24px;background-color:#f2f3f3;border-radius:4px">
|
||||||
To avoid losing precious data, please remember to monitor your usage
|
To avoid losing precious data, please remember to monitor your usage
|
||||||
on the <strong>Litlyx Dashboard</strong>. You can find your current
|
on the <strong>Litlyx Dashboard</strong>. You can find your current
|
||||||
usage details under <strong>Settings > Billing Tab</strong>
|
usage details in your account section.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>If you need more data collection storage, you may consider upgrading
|
<p>If you need more data collection storage, you may consider upgrading
|
||||||
@@ -65,7 +61,7 @@ export const LIMIT_90_EMAIL = `<!DOCTYPE html
|
|||||||
<p>Have a nice day!</p>
|
<p>Have a nice day!</p>
|
||||||
|
|
||||||
<p>Antonio,</p>
|
<p>Antonio,</p>
|
||||||
<p>CEO | Litlyx</p>
|
<p>CEO at Litlyx</p>
|
||||||
|
|
||||||
<a href="https://dashboard.litlyx.com/"
|
<a href="https://dashboard.litlyx.com/"
|
||||||
style="line-height:100%;text-decoration:none;display:block;max-width:100%;mso-padding-alt:0px;background-color:#5680f8;border-radius:3px;color:#fff;font-size:18px;padding-top:19px;padding-bottom:19px;text-align:center;width:100%;padding:19px 0px 19px 0px"
|
style="line-height:100%;text-decoration:none;display:block;max-width:100%;mso-padding-alt:0px;background-color:#5680f8;border-radius:3px;color:#fff;font-size:18px;padding-top:19px;padding-bottom:19px;text-align:center;width:100%;padding:19px 0px 19px 0px"
|
||||||
@@ -92,7 +88,7 @@ export const LIMIT_90_EMAIL = `<!DOCTYPE html
|
|||||||
<tr style="width:100%">
|
<tr style="width:100%">
|
||||||
<p
|
<p
|
||||||
style="font-size:14px;line-height:24px;margin:16px 0;color:#9ca299;margin-bottom:10px">
|
style="font-size:14px;line-height:24px;margin:16px 0;color:#9ca299;margin-bottom:10px">
|
||||||
2024 © Litlyx. All rights reserved.
|
2025 © Litlyx. All rights reserved.
|
||||||
<br>
|
<br>
|
||||||
Litlyx S.R.L. - Viale Tirreno, 187 - 00141 Rome - P.IVA:
|
Litlyx S.R.L. - Viale Tirreno, 187 - 00141 Rome - P.IVA:
|
||||||
17814721001- REA: RM-1743194
|
17814721001- REA: RM-1743194
|
||||||
@@ -113,5 +109,4 @@ export const LIMIT_90_EMAIL = `<!DOCTYPE html
|
|||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
`
|
`
|
||||||
|
|||||||
@@ -1,14 +1,9 @@
|
|||||||
export const LIMIT_MAX_EMAIL = `<!DOCTYPE html
|
export const LIMIT_MAX_EMAIL = `<!DOCTYPE html>
|
||||||
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
<html>
|
||||||
<html dir="ltr" lang="en">
|
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<link rel="preload" as="image" href="https://react-email-demo-lpdmf0ryo-resend.vercel.app/static/airbnb-logo.png" />
|
|
||||||
<link rel="preload" as="image"
|
|
||||||
href="https://react-email-demo-lpdmf0ryo-resend.vercel.app/static/airbnb-review-user.jpg" />
|
|
||||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
||||||
<meta name="x-apple-disable-message-reformatting" />
|
<meta name="x-apple-disable-message-reformatting" />
|
||||||
<!--$-->
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body
|
<body
|
||||||
@@ -42,11 +37,11 @@ export const LIMIT_MAX_EMAIL = `<!DOCTYPE html
|
|||||||
<tr style="width:100%">
|
<tr style="width:100%">
|
||||||
<p
|
<p
|
||||||
style="font-size:32px;line-height:1.3;margin:16px 0;font-weight:700;color:#484848">
|
style="font-size:32px;line-height:1.3;margin:16px 0;font-weight:700;color:#484848">
|
||||||
You’ve Reached Your Litlyx Project Limit on [Project Name]
|
You’ve Reached Your Litlyx's Tracking Limits
|
||||||
</p>
|
</p>
|
||||||
<p
|
<p
|
||||||
style="font-size:18px;line-height:1.4;margin:16px 0;color:#484848;padding:24px;background-color:#ffbb03;border-radius:4px">
|
style="font-size:18px;line-height:1.4;margin:16px 0;color:#484848;padding:24px;background-color:#ffbb03;border-radius:4px">
|
||||||
We noticed that Litlyx has stopped collecting data for your project.
|
<strong>Litlyx has stopped collecting data for your project.</strong>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@@ -62,14 +57,9 @@ export const LIMIT_MAX_EMAIL = `<!DOCTYPE html
|
|||||||
<p>
|
<p>
|
||||||
If you need additional storage for data collection, consider
|
If you need additional storage for data collection, consider
|
||||||
upgrading your plan to unlock more benefits and ensure uninterrupted
|
upgrading your plan to unlock more benefits and ensure uninterrupted
|
||||||
service.
|
service. You can find out more here: <a href="https://litlyx.com/pricing">Our pricing</a>
|
||||||
</p>
|
</p>
|
||||||
<p style="font-weight: 700;">
|
|
||||||
As a token of appreciation, we're offering you 25% off for life at
|
|
||||||
checkout with the code LIT25.
|
|
||||||
</p>
|
|
||||||
Thank you for choosing Litlyx as your trusted analytics tool.
|
|
||||||
<p></p>
|
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
If you have any questions or need assistance, feel free to reply to
|
If you have any questions or need assistance, feel free to reply to
|
||||||
@@ -82,8 +72,8 @@ export const LIMIT_MAX_EMAIL = `<!DOCTYPE html
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Antonio
|
Antonio,
|
||||||
CEO | Litlyx
|
CEO at Litlyx
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
@@ -113,7 +103,7 @@ export const LIMIT_MAX_EMAIL = `<!DOCTYPE html
|
|||||||
<tr style="width:100%">
|
<tr style="width:100%">
|
||||||
<p
|
<p
|
||||||
style="font-size:14px;line-height:24px;margin:16px 0;color:#9ca299;margin-bottom:10px">
|
style="font-size:14px;line-height:24px;margin:16px 0;color:#9ca299;margin-bottom:10px">
|
||||||
2024 © Litlyx. All rights reserved.
|
2025 © Litlyx. All rights reserved.
|
||||||
<br>
|
<br>
|
||||||
Litlyx S.R.L. - Viale Tirreno, 187 - 00141 Rome - P.IVA:
|
Litlyx S.R.L. - Viale Tirreno, 187 - 00141 Rome - P.IVA:
|
||||||
17814721001- REA: RM-1743194
|
17814721001- REA: RM-1743194
|
||||||
@@ -134,5 +124,4 @@ export const LIMIT_MAX_EMAIL = `<!DOCTYPE html
|
|||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
`
|
`
|
||||||
|
|||||||
@@ -1,29 +1,104 @@
|
|||||||
export const PURCHASE_EMAIL = `<!DOCTYPE html>
|
export const PURCHASE_EMAIL = `
|
||||||
<html lang="en">
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta name="x-apple-disable-message-reformatting" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>Thank You for Upgrading Your Litlyx Plan!</title>
|
|
||||||
</head>
|
</head>
|
||||||
<body style="font-family: Arial, sans-serif; line-height: 1.6; color: #333;">
|
|
||||||
|
|
||||||
<!-- Email Content -->
|
<body style='background-color:#ffffff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif'>
|
||||||
|
<table align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation"
|
||||||
|
style="max-width:100%;margin:0 auto;padding:20px 0 48px;width:580px">
|
||||||
|
<tbody>
|
||||||
|
<tr style="width:100%">
|
||||||
|
<td>
|
||||||
|
|
||||||
<p>Dear User,</p>
|
<table align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<img alt="Founder" height="96"
|
||||||
|
src="https://litlyx.com/images/founder.jpg"
|
||||||
|
style="display:block;outline:none;border:none;text-decoration:none;margin:0 auto;margin-bottom:16px;border-radius:50%"
|
||||||
|
width="96" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
<p>We are thrilled to inform you that <strong>[Project Name]</strong> on <strong>Litlyx</strong> has successfully been upgraded to a higher plan! Thank you for choosing to elevate your experience with us and for believing in our project.</p>
|
<table align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation"
|
||||||
|
style="padding-bottom:20px">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation">
|
||||||
|
<tbody style="width:100%">
|
||||||
|
<tr style="width:100%">
|
||||||
|
<td>
|
||||||
|
<p style="font-size:32px;line-height:1.3;margin:16px 0;font-weight:700;color:#484848">
|
||||||
|
Your upgrade is live!
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>We appreciate your trust in Litlyx and are committed to providing you with the best analytics experience. Your support helps us to continually improve our platform and bring new features to make your analytics journey even better.</p>
|
<p>Thank you for choosing Litlyx as your go-to website analytics tool. Our mission is simple: to make everyday tracking effortless and effective.</p>
|
||||||
|
|
||||||
<p>You can find your current plan details and download your invoices under <strong>Settings > Billing Tab</strong>.</p>
|
<p>We’re super happy to have you with us, and we can’t wait to keep improving Litlyx every single day. You’re part of this journey now, and we’re building it with you in mind.</p>
|
||||||
|
|
||||||
<p>If you have any questions about your new plan or need assistance, feel free to reach out to our support team at <a href="mailto:help@litlyx.com" style="color: #28a745; text-decoration: none;"><strong>help@litlyx.com</strong></a>. We’re here to help you make the most out of your upgraded plan!</p>
|
<p>If you have any questions, need help, or want to share feedback, just reply to this email or reach out at <a
|
||||||
|
href="mailto:help@litlyx.com"
|
||||||
|
style="color: #FF5733; text-decoration: none;">help@litlyx.com</a>. I’d love to hear from you.</p>
|
||||||
|
|
||||||
<p>Best regards,</p>
|
<p>Thanks again for being with us. We won't let you down.</p>
|
||||||
|
|
||||||
<p>Antonio,</p>
|
<p>Have a great day!</p>
|
||||||
<p>CEO @ Litlyx</p>
|
|
||||||
|
|
||||||
|
<p>Antonio,<br />CEO at Litlyx</p>
|
||||||
|
|
||||||
|
<a href="https://dashboard.litlyx.com/"
|
||||||
|
style="line-height:100%;text-decoration:none;display:block;max-width:100%;mso-padding-alt:0px;background-color:#5680f8;border-radius:3px;color:#fff;font-size:18px;padding-top:19px;padding-bottom:19px;text-align:center;width:100%;padding:19px 0px 19px 0px"
|
||||||
|
target="_blank">
|
||||||
|
<span style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:14.25px">
|
||||||
|
Go to Dashboard
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<hr style="width:100%;border:none;border-top:1px solid #eaeaea;border-color:#cccccc;margin:20px 0" />
|
||||||
|
|
||||||
|
<table align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation">
|
||||||
|
<tbody style="width:100%">
|
||||||
|
<tr style="width:100%">
|
||||||
|
<td>
|
||||||
|
<p style="font-size:14px;line-height:24px;margin:16px 0;color:#9ca299;margin-bottom:10px">
|
||||||
|
2025 © Litlyx. All rights reserved.
|
||||||
|
<br />
|
||||||
|
Litlyx S.R.L. - Viale Tirreno, 187 - 00141 Rome - P.IVA: 17814721001 - REA: RM-1743194
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
</body>
|
</body>
|
||||||
</html>`
|
|
||||||
|
</html>
|
||||||
|
`
|
||||||
@@ -1,39 +1,158 @@
|
|||||||
export const WELCOME_EMAIL = `
|
export const WELCOME_EMAIL = `
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html>
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta name="x-apple-disable-message-reformatting" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>Welcome to Litlyx!</title>
|
|
||||||
</head>
|
</head>
|
||||||
<body style="font-family: Arial, sans-serif; line-height: 1.6; color: #333;">
|
|
||||||
|
|
||||||
<p>We’re happy to have you onboard,</p>
|
<body
|
||||||
|
style='background-color:#ffffff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif'>
|
||||||
|
<table align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation"
|
||||||
|
style="max-width:100%;margin:0 auto;padding:20px 0 48px;width:580px">
|
||||||
|
<tbody>
|
||||||
|
<tr style="width:100%">
|
||||||
|
<td>
|
||||||
|
|
||||||
<p>At Litlyx, we’re committed to creating the best analytics collection experience for everybody, starting from developers.</p>
|
<table align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<img alt="Founder" height="96" src="https://litlyx.com/images/founder.jpg"
|
||||||
|
style="display:block;outline:none;border:none;text-decoration:none;margin:0 auto;margin-bottom:16px;border-radius:50%"
|
||||||
|
width="96" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
<p>Here are a few things you can do to get started tracking analytics today:</p>
|
<table align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation"
|
||||||
|
style="padding-bottom:20px">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table align="center" width="100%" border="0" cellpadding="0" cellspacing="0"
|
||||||
|
role="presentation">
|
||||||
|
<tbody style="width:100%">
|
||||||
|
<tr style="width:100%">
|
||||||
|
<td>
|
||||||
|
<p
|
||||||
|
style="font-size:32px;line-height:1.3;margin:16px 0;font-weight:700;color:#484848">
|
||||||
|
Welcome to Litlyx!
|
||||||
|
</p>
|
||||||
|
|
||||||
<ol>
|
<p
|
||||||
<li><strong><a href="https://dashboard.litlyx.com" style="color: #007BFF; text-decoration: none;">Create a new project</a></strong> – by just naming it</li>
|
style="font-size:18px;line-height:1.4;margin:16px 0;color:#484848;">
|
||||||
<li><strong><a style="color: #0a0a0a; text-decoration: none;">Copy the universal Script</a></strong> – we provide you the snippets to copy in your index.html file and start instantly to track metrics on your website or web app.</li>
|
Hey, I’m Antonio, CEO at Litlyx. Just wanted to say a quick
|
||||||
<li><strong><a style="color: #0a0a0a; text-decoration: none;">Deploy</a></strong> – Litlyx is production ready.</li>
|
thank you for signing up.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p style="font-size:16px;line-height:1.6;color:#484848;">
|
||||||
|
We built Litlyx to make website analytics easy, fast, and
|
||||||
|
privacy-conscious. Your personal AI assistant can learn to serve your needs over time advicing you on growing your audience and improve your product.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p style="font-size:16px;line-height:1.6;color:#484848;">
|
||||||
|
Here’s how to get started in under <b>1 minute</b>:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ol
|
||||||
|
style="font-size:16px;line-height:1.6;color:#484848;padding-left: 20px;">
|
||||||
|
<li><strong><a href="https://dashboard.litlyx.com"
|
||||||
|
style="color: #007BFF; text-decoration: none;">Create
|
||||||
|
a new project</a></strong> – name it and you’re good
|
||||||
|
to go</li>
|
||||||
|
<li><strong>Copy the tracking script</strong> – paste it in your
|
||||||
|
<code>index.html</code> and start collecting data instantly
|
||||||
|
</li>
|
||||||
|
<li><strong>Deploy</strong> – Litlyx is ready for production and
|
||||||
|
incredibly lightweight</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<p>If you have any questions or need support, visit <a href="http://docs.litlyx.com" style="color: #007BFF;">docs.litlyx.com</a>.</p>
|
<p style="font-size:16px;line-height:1.6;color:#484848;">
|
||||||
|
Using WordPress, Google Tag Manager, or a modern framework? Head
|
||||||
|
over to <a href="http://docs.litlyx.com"
|
||||||
|
style="color: #007BFF;">our docs</a> for full setup
|
||||||
|
instructions.
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>Feel free to reply to this email or reach out to our team at <a href="mailto:help@litlyx.com" style="color: #007BFF;">help@litlyx.com</a>. We’re here to help!</p>
|
<p style="font-size:16px;line-height:1.6;color:#484848;">
|
||||||
|
Got questions or feedback? Just reply to this email or reach out
|
||||||
|
to <a href="mailto:help@litlyx.com"
|
||||||
|
style="color: #007BFF;">help@litlyx.com</a>. We’re always
|
||||||
|
here to help.
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>Link to Discord for developer support: <a href="https://discord.com/invite/9cQykjsmWX" style="color: #007BFF;">https://discord.com/invite/9cQykjsmWX</a></p>
|
<p style="font-size:16px;line-height:1.6;color:#484848;">
|
||||||
|
You can also join our <a
|
||||||
|
href="https://discord.com/invite/9cQykjsmWX"
|
||||||
|
style="color: #007BFF;">Discord community</a> for live
|
||||||
|
support and product updates.
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>Thank you for joining us, and we look forward to seeing you around.</p>
|
<p style="font-size:16px;line-height:1.6;color:#484848;">
|
||||||
|
Thanks again for joining us. We’re excited to have you on board.
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>We want to make analytics the freshest thing on the web.</p>
|
<p style="font-size:16px;line-height:1.6;color:#484848;">
|
||||||
|
Let’s make analytics the simplest part of your stack.
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>Antonio,</p>
|
<p style="font-size:16px;line-height:1.6;color:#484848;">Antonio,</p>
|
||||||
<p>CEO | Litlyx</p>
|
<p style="font-size:16px;line-height:1.6;color:#484848;">CEO at
|
||||||
|
Litlyx</p>
|
||||||
|
|
||||||
|
<a href="https://dashboard.litlyx.com/"
|
||||||
|
style="line-height:100%;text-decoration:none;display:block;max-width:100%;mso-padding-alt:0px;background-color:#5680f8;border-radius:3px;color:#fff;font-size:18px;padding-top:19px;padding-bottom:19px;text-align:center;width:100%;padding:19px 0px 19px 0px"
|
||||||
|
target="_blank">
|
||||||
|
<span
|
||||||
|
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:14.25px">
|
||||||
|
Go to Dashboard
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<hr
|
||||||
|
style="width:100%;border:none;border-top:1px solid #eaeaea;border-color:#cccccc;margin:20px 0" />
|
||||||
|
|
||||||
|
<table align="center" width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table align="center" width="100%" border="0" cellpadding="0" cellspacing="0"
|
||||||
|
role="presentation">
|
||||||
|
<tbody style="width:100%">
|
||||||
|
<tr style="width:100%">
|
||||||
|
<td>
|
||||||
|
<p
|
||||||
|
style="font-size:14px;line-height:24px;margin:16px 0;color:#9ca299;margin-bottom:10px">
|
||||||
|
2025 © Litlyx. All rights reserved.
|
||||||
|
<br />
|
||||||
|
Litlyx S.R.L. – Viale Tirreno, 187 – 00141 Rome – P.IVA:
|
||||||
|
17814721001 – REA: RM-1743194
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
`
|
`
|
||||||
@@ -19,13 +19,13 @@ export type EmailServerInfo = { url: string, body: Record<string, any>, headers:
|
|||||||
type EmailData =
|
type EmailData =
|
||||||
| { template: 'confirm', data: { target: string, link: string } }
|
| { template: 'confirm', data: { target: string, link: string } }
|
||||||
| { template: 'welcome', data: { target: string } }
|
| { template: 'welcome', data: { target: string } }
|
||||||
| { template: 'purchase', data: { target: string, projectName: string } }
|
| { template: 'purchase', data: { target: string } }
|
||||||
| { template: 'reset_password', data: { target: string, newPassword: string } }
|
| { template: 'reset_password', data: { target: string, newPassword: string } }
|
||||||
| { template: 'anomaly_domain', data: { target: string, projectName: string, domains: string[] } }
|
| { template: 'anomaly_domain', data: { target: string, projectName: string, domains: string[] } }
|
||||||
| { template: 'anomaly_visits_events', data: { target: string, projectName: string, data: any[] } }
|
| { template: 'anomaly_visits_events', data: { target: string, projectName: string, data: any[] } }
|
||||||
| { template: 'limit_50', data: { target: string, projectName: string } }
|
| { template: 'limit_50', data: { target: string } }
|
||||||
| { template: 'limit_90', data: { target: string, projectName: string } }
|
| { template: 'limit_90', data: { target: string } }
|
||||||
| { template: 'limit_max', data: { target: string, projectName: string } }
|
| { template: 'limit_max', data: { target: string } }
|
||||||
| { template: 'invite_project', data: { target: string, projectName: string, link: string } }
|
| { template: 'invite_project', data: { target: string, projectName: string, link: string } }
|
||||||
| { template: 'invite_project_noaccount', data: { target: string, projectName: string, link: string } }
|
| { template: 'invite_project_noaccount', data: { target: string, projectName: string, link: string } }
|
||||||
| { template: 'brevolist_add', data: { email: string } }
|
| { template: 'brevolist_add', data: { email: string } }
|
||||||
|
|||||||
Reference in New Issue
Block a user