DataExportEmail
EmailData export ready notice. File size, format, expiration date, and download CTA.
Your export is ready!
File size2.4 MB
FormatZIP (JSON + CSV)
RequestedMay 3, 2026 9:00 AM
Link expiresMay 10, 2026
Download Your Data
Keep this file secure — it contains your personal data.
© 2026 Acme Corp
Live preview// GET /theme/common/email/system/data-export
res.render('theme/common/email/system/data-export', {
layout: 'layouts/blank',
subject: 'Your data export is ready to download',
fromName: 'Acme Corp',
fromEmail: 'noreply@acme.example.com',
toName: user.name,
toEmail: user.email,
company: { name: 'Acme Corp', address: '...' },
export: {
requestedAt: exportJob.requestedAt.toLocaleString(),
readyAt: exportJob.completedAt.toLocaleString(),
fileSize: formatBytes(exportJob.fileSizeBytes),
format: 'ZIP (JSON + CSV)',
downloadUrl: exportJob.signedDownloadUrl, // time-limited signed URL
expiresAt: exportJob.expiresAt.toLocaleDateString(),
},
});
<%
var exp = locals.export || {};
%>
<%- include('../_preview-bar', locals) %>
<div class="bg-[#f0f2f5] min-h-screen py-8 px-4">
<div class="max-w-[600px] mx-auto">
<!-- Header -->
<div class="bg-success rounded-t-2xl px-8 py-8 text-center">
<i class="fa-solid fa-download text-white text-4xl mb-3" aria-hidden="true"></i>
<p class="text-white font-bold text-xl">Your export is ready!</p>
</div>
<!-- Body -->
<div class="bg-white px-8 py-8 space-y-6">
<div class="space-y-2">
<h1 class="text-xl font-bold text-text-primary">Data export ready to download</h1>
<p class="text-text-secondary leading-relaxed text-sm">
Hi <%= toName %>, your data export has been prepared and is ready to download. The file will be available until <strong><%= exp.expiresAt %></strong>.
</p>
</div>
<!-- Export details -->
<div class="rounded-xl border border-border bg-surface-raised divide-y divide-border text-sm">
<div class="flex justify-between px-4 py-3">
<span class="text-text-secondary">Requested</span>
<span class="font-medium text-text-primary"><%= exp.requestedAt %></span>
</div>
<div class="flex justify-between px-4 py-3">
<span class="text-text-secondary">Ready at</span>
<span class="font-medium text-text-primary"><%= exp.readyAt %></span>
</div>
<div class="flex justify-between px-4 py-3">
<span class="text-text-secondary">File size</span>
<span class="font-medium text-text-primary"><%= exp.fileSize %></span>
</div>
<div class="flex justify-between px-4 py-3">
<span class="text-text-secondary">Format</span>
<span class="font-medium text-text-primary"><%= exp.format %></span>
</div>
<div class="flex justify-between px-4 py-3">
<span class="text-text-secondary">Link expires</span>
<span class="font-semibold text-warning"><%= exp.expiresAt %></span>
</div>
</div>
<div class="text-center">
<a href="<%= exp.downloadUrl %>"
class="inline-flex items-center gap-2 bg-primary text-primary-fg font-semibold rounded-xl px-8 py-3.5 text-sm hover:bg-primary-hover transition-colors">
<i class="fa-solid fa-download" aria-hidden="true"></i>
Download Your Data
</a>
</div>
<p class="text-xs text-text-secondary text-center">
Keep this file secure — it contains your personal data and account information.
</p>
</div>
<%- include('../_footer', locals) %>
</div>
</div>