What Data Lettr Stores
Every email sent through Lettr results in the following data being stored:| Data | Description |
|---|---|
| Sender address | The from address used to send the email |
| Recipient address | The to, cc, and bcc addresses |
| Subject line | The subject of the email |
| Email content | The full HTML or text body of the email |
| Metadata | Custom key-value pairs you attach to the request |
| Delivery events | Timestamps for injection, delivery, bounces, opens, clicks, and other events |
| Tracking data | Open and click tracking information when enabled |
Understanding Metadata vs Substitution Data
Lettr provides two distinct objects when sending an email, and it is important to understand the difference between them.metadata
Custom key-value pairs passed alongside the email for your tracking purposes. Metadata is not rendered into the email content. It is stored by Lettr and included in webhook event payloads so your systems can correlate events back to your internal records.
substitution_data
Template variables that are rendered into the email content. These are used for personalization — things like the recipient’s name, order details, or any dynamic content in your template.
Both
metadata and substitution_data are stored by Lettr and visible in the dashboard. Treat both as data that will be persisted and accessible to your team members with dashboard access.What NOT to Include in Email Data
Safe Metadata Practices
Use opaque identifiers in metadata instead of personally identifiable information (PII). Your internal systems can resolve these identifiers when processing webhook events.Safe Substitution Data Practices
Remember thatsubstitution_data is rendered directly into the email content. Whatever you pass becomes part of the email body that is sent to the recipient and stored by Lettr.
Do not pass sensitive data through substitution_data that should not appear in the email itself.
Notice that the password reset token lives in a URL, not as a standalone value. The token itself is time-limited and single-use, so even if the email content is stored, the token expires and cannot be reused.
Email Content Considerations
Email content — the full HTML or text body — is stored by Lettr to support delivery history and debugging. Keep this in mind when building your templates:- Do not embed sensitive data in HTML that you would not want stored or visible in the dashboard.
- Use secure links for sensitive actions like password resets and account verification instead of embedding sensitive data directly in the email body.
- Avoid including full account details in transactional emails. Show partial or masked information (e.g., “card ending in 4242”) rather than complete values.
Data Retention
Lettr retains email data — including content, metadata, and delivery events — according to its data retention policy. If you need to comply with data deletion requests, such as the GDPR right to erasure, contact support@lettr.com to discuss your requirements.Practical Guidelines
Use user IDs instead of email addresses in metadata
Use user IDs instead of email addresses in metadata
Your metadata should reference internal identifiers that only your systems can resolve. Instead of passing
customer_email in metadata, pass a user_id. Your webhook consumers can look up the email address from your own database when needed.Generate time-limited tokens for sensitive email actions
Generate time-limited tokens for sensitive email actions
Password resets, account verifications, and other sensitive actions should use tokens that expire. Even if the email content is stored indefinitely, an expired token poses no security risk. Set expiry times as short as practical — 24 hours or less for password resets.
Don't store PII in tag or custom headers
Don't store PII in tag or custom headers
It is tempting to encode useful information into identifiers, but values like
tag are stored and visible across your team. Use opaque identifiers and resolve them in your own systems.Audit what data you're passing to the API periodically
Audit what data you're passing to the API periodically
As your integration evolves, new fields may get added to metadata or substitution data without a privacy review. Schedule periodic audits of your API calls to ensure no sensitive data has crept into your payloads.
Consider what webhook consumers can see
Consider what webhook consumers can see
Metadata flows to all configured webhook endpoints. If you have multiple services consuming webhooks, every one of them receives the full metadata object. Only include data that all consumers are authorized to see.
Related Topics
GDPR and Email
Understand GDPR requirements for email communications.
Email Metadata
Learn how to use metadata when sending emails through Lettr.
Template Language
Use substitution data effectively in your email templates.
Security Best Practices
Secure your Lettr integration and protect your sending infrastructure.