update email templates

This commit is contained in:
Emily
2025-04-11 18:16:14 +02:00
parent 475512711b
commit 1187cafd07
10 changed files with 290 additions and 121 deletions

View File

@@ -15,7 +15,7 @@ export async function checkLimitsForEmail(projectCounts: TUserLimit) {
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;
const userName = owner.given_name || owner.name || 'no_name';
@@ -25,7 +25,7 @@ export async function checkLimitsForEmail(projectCounts: TUserLimit) {
if (hasNotifyEntry.limit3 === true) return;
setImmediate(() => {
const emailData = EmailService.getEmailServerInfo('limit_max', { target: owner.email, userName });
const emailData = EmailService.getEmailServerInfo('limit_max', { target: owner.email });
EmailServiceHelper.sendEmail(emailData);
});
@@ -36,7 +36,7 @@ export async function checkLimitsForEmail(projectCounts: TUserLimit) {
if (hasNotifyEntry.limit2 === true) return;
setImmediate(() => {
const emailData = EmailService.getEmailServerInfo('limit_90', { target: owner.email, userName });
const emailData = EmailService.getEmailServerInfo('limit_90', { target: owner.email });
EmailServiceHelper.sendEmail(emailData);
});
@@ -47,7 +47,7 @@ export async function checkLimitsForEmail(projectCounts: TUserLimit) {
if (hasNotifyEntry.limit1 === true) return;
setImmediate(() => {
const emailData = EmailService.getEmailServerInfo('limit_50', { target: owner.email, userName });
const emailData = EmailService.getEmailServerInfo('limit_50', { target: owner.email });
EmailServiceHelper.sendEmail(emailData);
});

View File

@@ -62,7 +62,7 @@ export class EmailService {
}
}
static async sendLimitEmail50(target: string, projectName: string) {
static async sendLimitEmail50(target: string) {
try {
const sendSmtpEmail = new SendSmtpEmail();
sendSmtpEmail.subject = "⚡ You've reached 50% limit on Litlyx";
@@ -70,7 +70,6 @@ export class EmailService {
sendSmtpEmail.to = [{ "email": target }];
sendSmtpEmail.htmlContent = TEMPLATE.LIMIT_50_EMAIL
.replace(/\[Project Name\]/, projectName)
.toString();
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 {
const sendSmtpEmail = new SendSmtpEmail();
sendSmtpEmail.subject = "⚡ You've reached 90% limit on Litlyx";
sendSmtpEmail.sender = { "name": "Litlyx", "email": "help@litlyx.com" };
sendSmtpEmail.to = [{ "email": target }];
sendSmtpEmail.htmlContent = TEMPLATE.LIMIT_90_EMAIL
.replace(/\[Project Name\]/, projectName)
.toString();
await this.apiInstance.sendTransacEmail(sendSmtpEmail);
return true;
@@ -98,14 +96,13 @@ export class EmailService {
}
}
static async sendLimitEmailMax(target: string, projectName: string) {
static async sendLimitEmailMax(target: string) {
try {
const sendSmtpEmail = new SendSmtpEmail();
sendSmtpEmail.subject = "🚨 You've reached your limit on Litlyx!";
sendSmtpEmail.sender = { "name": "Litlyx", "email": "help@litlyx.com" };
sendSmtpEmail.to = [{ "email": target }];
sendSmtpEmail.htmlContent = TEMPLATE.LIMIT_MAX_EMAIL
.replace(/\[Project Name\]/, projectName)
.toString();
await this.apiInstance.sendTransacEmail(sendSmtpEmail);
return true;
@@ -130,14 +127,13 @@ export class EmailService {
}
}
static async sendPurchaseEmail(target: string, projectName: string) {
static async sendPurchaseEmail(target: string) {
try {
const sendSmtpEmail = new SendSmtpEmail();
sendSmtpEmail.subject = "Thank You for Upgrading Your Litlyx Plan!";
sendSmtpEmail.sender = { "name": "Litlyx", "email": "help@litlyx.com" };
sendSmtpEmail.to = [{ "email": target }];
sendSmtpEmail.htmlContent = TEMPLATE.PURCHASE_EMAIL
.replace(/\[Project Name\]/, projectName)
.toString();
await this.apiInstance.sendTransacEmail(sendSmtpEmail);
return true;

View File

@@ -90,10 +90,8 @@ app.post('/send/welcome', express.json(), async (req, res) => {
app.post('/send/purchase', express.json(), async (req, res) => {
try {
console.log('PURCHASE EMAIL DISABLED')
return;
const { target, projectName } = req.body;
const ok = await EmailService.sendPurchaseEmail(target, projectName);
const { target } = req.body;
const ok = await EmailService.sendPurchaseEmail(target);
res.json({ ok });
} catch (ex) {
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) => {
try {
const { target, projectName } = req.body;
const ok = await EmailService.sendLimitEmail50(target, projectName);
const { target } = req.body;
const ok = await EmailService.sendLimitEmail50(target);
res.json({ ok });
} catch (ex) {
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) => {
try {
const { target, projectName } = req.body;
const ok = await EmailService.sendLimitEmail90(target, projectName);
const { target } = req.body;
const ok = await EmailService.sendLimitEmail90(target);
res.json({ ok });
} catch (ex) {
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) => {
try {
const { target, projectName } = req.body;
const ok = await EmailService.sendLimitEmailMax(target, projectName);
const { target } = req.body;
const ok = await EmailService.sendLimitEmailMax(target);
res.json({ ok });
} catch (ex) {
res.status(500).json({ error: ex.message });

View File

@@ -1,5 +1,6 @@
export const CONFIRM_EMAIL = `<!DOCTYPE html>
export const CONFIRM_EMAIL = `
<!DOCTYPE html>
<html>
<head>
@@ -35,7 +36,7 @@ export const CONFIRM_EMAIL = `<!DOCTYPE html>
.button {
display: inline-block;
padding: 10px 20px;
background-color: #007bff;
background-color: #0a0a0a;
color: #ffffff;
text-decoration: none;
border-radius: 5px;
@@ -61,7 +62,7 @@ export const CONFIRM_EMAIL = `<!DOCTYPE html>
<p>We hope to hear from you soon!</p>
<div class="footer">
<p>&copy; 2024 Litlyx. All rights reserved.</p>
<p>2025 &copy; Litlyx. All rights reserved.</p>
</div>
</div>
</body>

View File

@@ -1,14 +1,10 @@
export const LIMIT_50_EMAIL = `<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir="ltr" lang="en">
export const LIMIT_50_EMAIL = `
<!DOCTYPE html>
<html>
<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 name="x-apple-disable-message-reformatting" />
<!--$-->
</head>
<body
@@ -42,13 +38,13 @@ export const LIMIT_50_EMAIL = `<!DOCTYPE html
<tr style="width:100%">
<p
style="font-size:32px;line-height:1.3;margin:16px 0;font-weight:700;color:#484848">
Youve Reached 50% of Your Litlyx Project Limit on [Project Name]
Youve Reached 50% of Your Litlyx's Tracking Limits
</p>
<p
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
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>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>Antonio,</p>
<p>CEO | Litlyx</p>
<p>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"
@@ -92,7 +88,7 @@ export const LIMIT_50_EMAIL = `<!DOCTYPE html
<tr style="width:100%">
<p
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>
Litlyx S.R.L. - Viale Tirreno, 187 - 00141 Rome - P.IVA:
17814721001- REA: RM-1743194

View File

@@ -1,14 +1,10 @@
export const LIMIT_90_EMAIL = `<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir="ltr" lang="en">
export const LIMIT_90_EMAIL = `
<!DOCTYPE html>
<html>
<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 name="x-apple-disable-message-reformatting" />
<!--$-->
</head>
<body
@@ -42,13 +38,13 @@ export const LIMIT_90_EMAIL = `<!DOCTYPE html
<tr style="width:100%">
<p
style="font-size:32px;line-height:1.3;margin:16px 0;font-weight:700;color:#484848">
Youve Reached 90% of Your Litlyx Project Limit on [Project Name]
Youve Reached 90% of Your Litlyx's Tracking Limits
</p>
<p
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
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>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>Antonio,</p>
<p>CEO | Litlyx</p>
<p>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"
@@ -92,7 +88,7 @@ export const LIMIT_90_EMAIL = `<!DOCTYPE html
<tr style="width:100%">
<p
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>
Litlyx S.R.L. - Viale Tirreno, 187 - 00141 Rome - P.IVA:
17814721001- REA: RM-1743194
@@ -113,5 +109,4 @@ export const LIMIT_90_EMAIL = `<!DOCTYPE html
</body>
</html>
`

View File

@@ -1,14 +1,9 @@
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 dir="ltr" lang="en">
export const LIMIT_MAX_EMAIL = `<!DOCTYPE html>
<html>
<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 name="x-apple-disable-message-reformatting" />
<!--$-->
</head>
<body
@@ -42,11 +37,11 @@ export const LIMIT_MAX_EMAIL = `<!DOCTYPE html
<tr style="width:100%">
<p
style="font-size:32px;line-height:1.3;margin:16px 0;font-weight:700;color:#484848">
Youve Reached Your Litlyx Project Limit on [Project Name]
Youve Reached Your Litlyx's Tracking Limits
</p>
<p
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>
@@ -62,14 +57,9 @@ export const LIMIT_MAX_EMAIL = `<!DOCTYPE html
<p>
If you need additional storage for data collection, consider
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 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>
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>
Antonio
CEO | Litlyx
Antonio,
CEO at Litlyx
</p>
@@ -113,7 +103,7 @@ export const LIMIT_MAX_EMAIL = `<!DOCTYPE html
<tr style="width:100%">
<p
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>
Litlyx S.R.L. - Viale Tirreno, 187 - 00141 Rome - P.IVA:
17814721001- REA: RM-1743194
@@ -134,5 +124,4 @@ export const LIMIT_MAX_EMAIL = `<!DOCTYPE html
</body>
</html>
`

View File

@@ -1,29 +1,104 @@
export const PURCHASE_EMAIL = `<!DOCTYPE html>
<html lang="en">
export const PURCHASE_EMAIL = `
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Thank You for Upgrading Your Litlyx Plan!</title>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<meta name="x-apple-disable-message-reformatting" />
</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>Were super happy to have you with us, and we cant wait to keep improving Litlyx every single day. Youre part of this journey now, and were 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>. Were 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>. Id 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>CEO @ Litlyx</p>
<p>Have a great day!</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>
</html>`
</html>
`

View File

@@ -1,39 +1,158 @@
export const WELCOME_EMAIL = `
<!DOCTYPE html>
<html lang="en">
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Welcome to Litlyx!</title>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<meta name="x-apple-disable-message-reformatting" />
</head>
<body style="font-family: Arial, sans-serif; line-height: 1.6; color: #333;">
<p>Were happy to have you onboard,</p>
<p>At Litlyx, were committed to creating the best analytics collection experience for everybody, starting from developers.</p>
<p>Here are a few things you can do to get started tracking analytics today:</p>
<ol>
<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>
<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>
<li><strong><a style="color: #0a0a0a; text-decoration: none;">Deploy</a></strong> Litlyx is production ready.</li>
</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>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>. Were 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>Thank you for joining us, and we look forward to seeing you around.</p>
<p>We want to make analytics the freshest thing on the web.</p>
<p>Antonio,</p>
<p>CEO | Litlyx</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>
<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>
<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>
<p
style="font-size:18px;line-height:1.4;margin:16px 0;color:#484848;">
Hey, Im Antonio, CEO at Litlyx. Just wanted to say a quick
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;">
Heres 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 youre 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>
<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 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>. Were always
here to help.
</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 style="font-size:16px;line-height:1.6;color:#484848;">
Thanks again for joining us. Were excited to have you on board.
</p>
<p style="font-size:16px;line-height:1.6;color:#484848;">
Lets make analytics the simplest part of your stack.
</p>
<p style="font-size:16px;line-height:1.6;color:#484848;">Antonio,</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>
</html>
`

View File

@@ -19,13 +19,13 @@ export type EmailServerInfo = { url: string, body: Record<string, any>, headers:
type EmailData =
| { template: 'confirm', data: { target: string, link: 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: 'anomaly_domain', data: { target: string, projectName: string, domains: string[] } }
| { template: 'anomaly_visits_events', data: { target: string, projectName: string, data: any[] } }
| { template: 'limit_50', data: { target: string, projectName: string } }
| { template: 'limit_90', data: { target: string, projectName: string } }
| { template: 'limit_max', data: { target: string, projectName: string } }
| { template: 'limit_50', data: { target: string } }
| { template: 'limit_90', data: { target: string } }
| { template: 'limit_max', data: { target: string } }
| { template: 'invite_project', data: { target: string, projectName: string, link: string } }
| { template: 'invite_project_noaccount', data: { target: string, projectName: string, link: string } }
| { template: 'brevolist_add', data: { email: string } }