---
title: "How to send a client an HTML email from a scenario"
description: "Recommended Scenario Builder path: internal event trigger → Set node → Send Email via a bot with an Email channel, with placeholders and HTML in the Email Body field."
---

# How to send a client an HTML email from a scenario?

When a ticket status changes or the team posts a new public reply, you may want to automatically send the client a formatted email — with ticket number and title, new status, and a portal link, without the comment text in the body.

This guide shows the recommended path: collect data in the scenario and send an HTML email with the **Send Email** node through the bot’s Email channel.

## When you need it

- Client Portal users need email notifications when ticket status changes.
- You need to notify the client about a ticket update (for example a new public team reply) — without internal notes in the email body.
- The email must be formatted (HTML) and include dynamic data for the specific ticket.

## What to know

- **Scenario Builder** — the module for building scenarios; it replaces Scenario Dialog.
- **Send Email** — node type in the add-node modal; on the canvas it appears as **Send Email**. The node sends mail through the **selected bot’s Email channel**.
- **Bot Email channel** — email connected to the bot itself. Mail goes through it, so **separate platform-wide mail setup is not required**.
- **Set** — node for storing key → value pairs in scenario state before later steps. See [Storing values for later steps](/en/scenariobuilder/explanation/set-node.md).
- **Placeholders** — substitutions such as `{{trigger_data.*}}` (data from the event that started the scenario) and `{{constant_name}}` (values from the Set node). They are replaced with real values in the email.

## Before you start

- [x] You are signed in with integrator or administrator rights.
- [x] The bot has an Email channel connected and configured.
- [x] Scenario Builder is open with the scenario you need.
- [x] You know which internal event should trigger the email (see step 1).

## Steps

### 1. Configure the event trigger

1. In the Start node, select trigger type **Internal Events** and the event you need:
   - **Ticket Status Changed** — email when the ticket moves to a new status;
   - **Ticket Updated** — email when the ticket changes (for example a new public reply). Add filters or conditions in the scenario so internal notes **do not** trigger the email.
2. Save the Start node settings.

For more on choosing events, see [How to configure internal events for the Start node?](/en/scenariobuilder/how-to/configure-start-node-internal-events.md).

### 2. Collect data for the email (Set node)

1. On the canvas, click **+** after the Start node.
2. In the modal, find the **Set** template (**Data** category or search).
3. In Node Inspector, set keys and values needed in the email — for example ticket number and title, new status, portal link. Use event data via `{{trigger_data.*}}`.
4. Connect the Start node to the Set node.

> You do not need the comment body in the email — collect only the fields you want the client to see.

### 3. Add the send-email node

1. On the canvas, click **+** after the Set node.
2. In the modal, select **Send Email**.
3. Connect the node to the previous step.

### 4. Fill in the email

1. Click the **Send Email** node — Node Inspector opens on the right.
2. In **Through which bot are we writing?**, select the bot that has an Email channel configured.
3. In **Recipient Email**, enter the client address (for example via a placeholder with client data).
4. In **Email Subject**, set the subject — placeholders are allowed.
5. In **Email Body**, paste HTML markup with placeholders `{{trigger_data.*}}` and `{{constant_name}}`. The editor supports HTML formatting; content is sent as entered.

> Raw HTML in **Email Body** no longer results in an empty email — a translation-ID workaround is not needed.

### 5. Save and test the scenario

1. Save the scenario.
2. Run a check with the built-in test tool — see [How to test a scenario?](/en/scenariobuilder/how-to/test-scenario.md).

## Result

When the selected event fires, the client receives a formatted HTML email with ticket data filled in, sent through the selected bot’s Email channel. Subject, recipient, and body use the same set of placeholders.

## How to verify it worked

- A test email arrives; the body is **not empty** and renders with formatting (HTML), not as raw code.
- Placeholders in the subject and body are replaced with real values (ticket number, status, link).
- The email is sent even when the client has no connected channels but has an email in their profile.

## Related guides

- [Storing values for later steps (Set)](/en/scenariobuilder/explanation/set-node.md)
- [How to configure internal events for the Start node?](/en/scenariobuilder/how-to/configure-start-node-internal-events.md)
- [How to test a scenario?](/en/scenariobuilder/how-to/test-scenario.md)
