> Documentation index: [Saleor](/llms.txt) · [This section](/developer/llms.txt)
> Source: https://docs.saleor.io/developer/app-store/apps/smtp/overview

# SMTP App Overview

Saleor version required: **3.20**Repository: [GitHub](https://github.com/saleor/apps/tree/main/apps/smtp)

warning

On Saleor Cloud 3.23+, [Customer Emails](/developer/app-store/apps/customer-emails/overview.md) replaces this app for new setups. If you are self-hosting, or still on 3.22, this is the app that sends customer email.

SMTP application is responsible for sending emails and messages to customers. It is connected to the Saleor API via webhooks, which notify the application about the events. The messages are delivered by the SMTP protocol configured in the application.

<a id="features"></a>

## Features

App allows to

1.  Configure the SMTP protocol that will be used to send emails
2.  Create email templates using MJML and [Handlebars](https://handlebarsjs.com/). Additionally you can use a curated subset of [handlebars-helpers features](https://github.com/helpers/handlebars-helpers) — see [the list of allowed helpers](/developer/app-store/apps/smtp/configuration.md)
3.  Preview email templates with built-in renderer

<a id="supported-events"></a>

## Supported events

<a id="account-confirmation"></a>

### Account confirmation

A message containing an account activation token after registration. To activate the account, your storefront should perform an API call according to [the documentation](/developer/users/customer-account.md#registration-with-email-confirmation).

If you don't want to use the email confirmation, you can disable it in the Saleor dashboard:

1.  Open the Saleor dashboard
2.  Navigate to the Configuration page
3.  Click on the Site settings card
4.  Update the `User registration` form

The event has been implemented using the `NOTIFY_USER` webhook.

<a id="account-password-reset"></a>

### Account password reset

Message sent after requesting a password change. The payload contains a token that has to be attached to the request to the Saleor API to change the password. To implement a storefront interface for password change, follow [the documentation](/developer/users/customer-account.md#resetting-the-password).

The event has been implemented using the `NOTIFY_USER` webhook.

<a id="account-password-reset-for-staff-created-accounts"></a>

### Account password reset for staff-created accounts

As in the previous event, but for accounts created by Staff users in the Saleor Dashboard.

The event has been implemented using the `NOTIFY_USER` webhook.

<a id="customer-account-password-setup"></a>

### Customer account password setup

Message sent when a customer account is created via the `customerCreate` mutation with a `redirectUrl` argument. The payload contains a token that the storefront must include in the password set URL so the customer can set their initial password.

The event has been implemented using the `NOTIFY_USER` webhook.

<a id="account-email-address-change"></a>

### Account email address change

Message sent on the email address change request. Follow the [documentation](/developer/users/customer-account.md#changing-the-email-address) for more details.

The event has been implemented using the `NOTIFY_USER` webhook.

<a id="account-email-change-confirmation"></a>

### Account email change confirmation

Confirmation is sent to the new address after following instructions from the previous message.

The event has been implemented using the `NOTIFY_USER` webhook.

<a id="account-deletion-request"></a>

### Account deletion request

A message with a token that's used for account deletion. To implement a storefront interface for account deletion, follow [the documentation](/developer/users/customer-account.md#deleting-the-account).

The event has been implemented using the `NOTIFY_USER` webhook.

<a id="invoice-sent"></a>

### Invoice sent

The event is triggered when the Staff users use the `Sent invoice` action. The message contains a link to the invoice.

The event has been implemented using the `INVOICE_SENT` webhook.

<a id="order-confirmation"></a>

### Order confirmation

Sends a message when the order is confirmed.

The event has been implemented using the `ORDER_CONFIRMED` webhook.

<a id="order-has-been-fulfilled"></a>

### Order has been fulfilled

Sends a message when the order status is changed to `FULFILLED`.

The event has been implemented using the `ORDER_FULFILLED` webhook.

<a id="order-has-been-fully-paid"></a>

### Order has been fully paid

Sends a message when the order is fully paid.

The event has been implemented using the `ORDER_FULLY_PAID` webhook.

<a id="order-has-been-canceled"></a>

### Order has been canceled

Sends a message when the order is canceled.

The event has been implemented using the `ORDER_CANCELLED` webhook.

<a id="sent-gift-card"></a>

### Sent gift card

Sends a message when the gift card is sent to the customer.

The event has been implemented using the `GIFT_CARD_SENT` webhook.

<a id="configuration"></a>

## Configuration

The application can use multiple configurations at the same time. This way, you'll be able to:

-   create test configurations before using them in production
-   use different configurations for different events
-   use different configurations for different channels

<a id="multichannel"></a>

### Multichannel

Each configuration can be configured to work with specific channels. The configurations are used for all the channels by default. It can be changed in the configuration details to:

-   use only the specific channels
-   use all channels except the specific ones

<a id="default-smtp-server-configuration"></a>

## Default SMTP server configuration

Saleor Cloud no longer uses this app for new stores. [Customer Emails](/developer/app-store/apps/customer-emails/overview.md) can preview mail to the organization owner until you add your own connection.

Older Cloud installs of this app may still have a default SMTP server for testing. That path is not for production and hardcodes both the template and Saleor domains into the sender. Use your own SMTP server instead.

<a id="development"></a>

## Development

To run the application locally, follow the [documentation](/developer/extending/apps/developing-apps/running-saleor-apps-locally.md).

<a id="known-limitations-and-issues"></a>

## Known limitations and issues

-   When the application has multiple active configurations and one of them fails, it may result in duplicated email deliveries. [Issue link](https://github.com/saleor/apps/issues/725)
-   Emails use the default language of the Saleor instance. Using translations is not supported yet. [Issue link](https://github.com/saleor/apps/issues/726)
-   The order refunded event is not supported yet. [Issue link](https://github.com/saleor/apps/issues/728)
-   The fulfillment updated event is not supported yet. [Issue link](https://github.com/saleor/apps/issues/729)
-   Your SMTP server must respond in a maximum 4 seconds. Otherwise, the application returns the timeout and your email will not be sent.
-   The maximum size of a single template is 100KB.
-   SMTP app returns a 400 status code to Saleor when encountering server or client errors during webhook handling. This prevents Saleor from retrying the webhook, so proper monitoring of your SMTP infrastructure is essential.

<a id="migration-from-emails-and-messages-app"></a>

## Migration from Emails and Messages app

SMTP app has been extracted from the Emails and Messages app. If you have been using the Emails and Messages app, you can migrate to the SMTP app by following the steps below:

1.  Install the SMTP app from the App Store.
2.  Configure the SMTP app with the same settings as the Emails and Messages
3.  Enable SMTP configuration only for a test channel first.
4.  Check if the SMTP app works correctly by sending test emails
5.  Enable SMTP app for all channels
6.  Uninstall the Emails and Messages app
