---
title: Transactional Emails (self-hosted)
description: Learn how to configure transactional emails for your self-hosted Langfuse deployment.
label: "Version: v4"
sidebarTitle: "Transactional Emails"
---

# Transactional Email

Optionally, you can configure an SMTP server to send transactional emails.
These are used for password resets, project/organization invitations, and notifications when a batch export is completed.

## Configuration

To enable transactional emails, set the following environment variables on the application containers:

| Variable              | Description                                                                                                                                                                                                                                                                                                      |
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `SMTP_CONNECTION_URL` | Connection URL for transactional email. Accepts a standard SMTP URL (`smtp://` or `smtps://`) that is passed to Nodemailer ([docs](https://nodemailer.com/smtp)), or `ses://<region>` (e.g. `ses://us-east-1`) to send via [AWS SES](#aws-ses) using the default AWS credential chain (IAM role, SSO, env vars). |
| `EMAIL_FROM_ADDRESS`  | Configure from address for transactional email. Required if `SMTP_CONNECTION_URL` is set.                                                                                                                                                                                                                        |

## AWS SES [#aws-ses]

When `SMTP_CONNECTION_URL` is set to `ses://<region>`, Langfuse sends transactional emails through [AWS SES](https://aws.amazon.com/ses/) using the SESv2 API.
No additional configuration variables are required — credentials are resolved through the [default AWS credential chain](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html) (IAM role, IRSA, ECS task role, SSO, `AWS_PROFILE`, or environment variables), which mirrors the credential handling used for [S3 blob storage](/self-hosting/deployment/infrastructure/blobstorage).

If Langfuse is running on AWS, we recommend attaching an IAM role to the Langfuse container with permission to send via SES:

```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": ["ses:SendEmail"],
      "Effect": "Allow",
      "Resource": "*",
      "Sid": "LangfuseSendEmail"
    }
  ]
}
```

Make sure the `EMAIL_FROM_ADDRESS` is a [verified identity](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html) in the same region, and that your account is out of the SES sandbox if you need to send to arbitrary recipients.

Example configuration:

```yaml
SMTP_CONNECTION_URL=ses://us-east-1
EMAIL_FROM_ADDRESS=no-reply@example.com
```

## FAQ

- **Which SMTP service to use?** It is recommended to use a reputable SMTP service for transactional emails to ensure delivery and prevent abuse. If you do not have a preferred service from your cloud provider, try [Resend](https://resend.com/) or [Postmark](https://postmarkapp.com/). Both are easy to set up and have generous free tiers.
- **Can I use my private inbox?** No, private inboxes (like GMail) are generally not recommended and difficult to configure correctly.

---

If you experience any issues when self-hosting Langfuse, please:

1. Check out [Troubleshooting & FAQ](/self-hosting/troubleshooting-and-faq) page.
2. Use [Ask AI](/ask-ai) to get instant answers to your questions.
3. Ask the maintainers on [GitHub Discussions](/gh-support).
4. Create a bug report or feature request on [GitHub](/issues).

  Enterprise-grade support is available when self-hosting Langfuse. Learn more on
  our [pricing page](/pricing-self-host).

<!-- agent-instructions -->

---

## Agent Instructions

This page is part of the [Langfuse](https://langfuse.com) documentation, published as plain Markdown for AI agents. Every page is available as Markdown by appending `.md` to its URL, or by sending an `Accept: text/markdown` header. This page: `https://langfuse.com/self-hosting/configuration/transactional-emails.md`.

### Querying these docs

If the answer is not on this page, query the documentation instead of guessing:

- **Semantic search** across all Langfuse docs, returning an answer with the relevant pages and excerpts. Ask a specific, self-contained question:

  ```bash
  curl -sG "https://langfuse.com/api/search-docs" --data-urlencode "query=How do I trace a LangGraph agent?"
  ```

- **Index of every page**: <https://langfuse.com/llms.txt>, with per-section indexes [llms-docs.txt](https://langfuse.com/llms-docs.txt), [llms-integrations.txt](https://langfuse.com/llms-integrations.txt), and [llms-self-hosting.txt](https://langfuse.com/llms-self-hosting.txt).

### Before writing Langfuse code

- **Install the [Langfuse Agent Skill](https://langfuse.com/docs/api-and-data-platform/features/agent-skill).** It encodes Langfuse's own best practices for instrumentation, prompt management, and evaluation, and materially improves results.
- **Read [What does a good trace look like?](https://langfuse.com/docs/observability/best-practices.md)** before instrumenting an application.
- **Verify endpoints, parameters, and response fields** against the [API reference](https://api.reference.langfuse.com) instead of inferring them from code examples.
- **Use the [Langfuse CLI](https://langfuse.com/docs/api-and-data-platform/features/cli)** (`npx langfuse-cli api <resource> <action>`) to read or write traces, prompts, datasets, and scores from the terminal.

Found an error in these docs? Please open an issue at <https://github.com/langfuse/langfuse-docs/issues>.
