Go to Studio

Email Sender

The Email Sender node sends transactional emails directly from your workflow, with support for plain text or HTML content and multiple recipients.

Email Sender node on canvas wired to SMTP content subject and recipients

What does the Email Sender node do?

The Email Sender node sends emails from your workflow using DnG’s built-in email service. It supports plain text and HTML content, multiple recipients (To, CC, BCC), and dynamic values injected from previous nodes through variables.

Common use cases:

  • Sending an automated report (SEO audit, weekly KPIs, AI-generated summary) to a team or client.
  • Notifying a user when an asynchronous workflow finishes (data import, file generation, batch processing).
  • Triggering personalized outreach emails with content built by an LLM node upstream.

Quick setup

Follow these steps to add and configure the Email Sender node in your workflow:

Add the node to the canvas

Open the Node Library, go to Tools > Notifications, then drag and drop the Email Sender node onto your workspace.

Connect the upstream nodes

Connect any node whose output you want to inject into the email (such as an LLM node generating the body, a Sheets reader providing the recipient list, or a Text Input setting the subject).

Fill in the email fields

Open the node settings and fill in To Emails, Subject and Content. Optionally set CC Emails, BCC Emails, and switch Content Type to HTML if you want a styled email.

Externalize dynamic fields

For each field that should come from an upstream node, tick Use variable for …. The field becomes a workflow input you can wire from the canvas (for example {{toEmails}}, {{subject}}, {{content}}).

Connect the output

Connect the output port (on the right of the node) to the next node if you want to chain post-send logic (logging, branching on success, etc.).

Configuration parameters

Email Sender settings SMTP host auth from to subject body fields

The node separates static fields (typed once in the settings panel) from externalized fields (wired from upstream nodes via variables).

Required fields

Name string required default: Email Sender

Node name — Used to identify this node when running and debugging the workflow (e.g. “Send weekly report”).

Description string required default: Send emails using DnG Email Sender with support for HTML and plain text content

Node description — A short phrase describing what this email send does in the workflow.

To Emails string required

Recipient address(es) — One or more recipient emails. For multiple recipients, separate addresses with commas (e.g. user1@example.com, user2@example.com). Tick Use variable for to emails to receive the list from an upstream node as {{toEmails}}.

Subject string required

Email subject line — The subject shown in the recipient’s inbox. Tick Use variable for subject to inject {{subject}} from an upstream node.

Content string required

Email body — The body of the message. Can be plain text or raw HTML depending on Content Type. Tick Use variable for content to inject {{content}} from an upstream node (typical when the body is built by an LLM).

Optional fields

CC Emails string

Carbon copy recipients — Comma-separated list of CC addresses. Leave empty if not needed. Externalizable as {{ccEmails}}.

BCC Emails string

Blind carbon copy recipients — Comma-separated list of BCC addresses. Leave empty if not needed. Externalizable as {{bccEmails}}.

Content Type string default: text/plain

MIME type of the body — Choose text/plain to send the content as raw text, or text/html to render it as a styled HTML email.

Tip

Externalize only the fields that actually change between runs. Keeping Subject and Content Type static while externalizing To Emails and Content is a clean pattern for “same template, different recipients”.

What does the node output?

The node outputs the result of the email send operation. You can connect it to a downstream node to log the send, branch on success, or trigger follow-up actions.

result string

The send confirmation returned by the email service (delivery status / message identifier as a string). The node raises an error if To Emails, Subject, or Content is missing, or if the email service rejects the request.

Usage examples

Example 1: Send an LLM-generated weekly report

Build a report with an LLM upstream and email it to a static recipient.

Configuration:

  • To Emails = team@mycompany.com
  • Subject = Weekly SEO report
  • Content = ticked Use variable for content -> wire the LLM output into {{content}}
  • Content Type = text/html (the LLM produced HTML)

Workflow:

  1. LLM node generates an HTML weekly report.
  2. Email Sender receives the HTML through {{content}} and sends it to the team.

Example 2: Notify multiple stakeholders after a batch import

Send a fixed notification to several people once a long-running import finishes.

Configuration:

  • To Emails = ops@mycompany.com, manager@mycompany.com
  • CC Emails = audit@mycompany.com
  • Subject = Import job finished
  • Content = The nightly import finished successfully. Check the dashboard for details.
  • Content Type = text/plain

Common issues

Email Sender: No recipient emails provided

Cause: The To Emails field is empty, or the variable wired to it ({{toEmails}}) resolved to an empty string at run time.

Solution: Make sure the upstream node actually outputs a non-empty list of addresses. If you typed the addresses statically, check there is no leading/trailing whitespace that could collapse the value.

Email Sender: No subject provided / No content provided

Cause: Required fields Subject or Content are missing. These two fields are mandatory and the node fails fast if either is empty.

Solution: Either type a static value in the settings, or externalize the field and confirm the upstream node produces a non-empty string before the Email Sender runs.

The HTML email arrives as raw tags instead of being rendered

Cause: Content Type is set to text/plain while the body contains HTML markup.

Solution: Switch Content Type to text/html. Keep in mind that some email clients will still strip parts of complex HTML (scripts, external CSS) — favor inline styles and simple structure.

Some recipients in a comma-separated list are silently skipped

Cause: A malformed address in the list (extra comma, typo, missing @) is dropped by the recipient parser.

Solution: Trim and validate addresses upstream. The node already strips whitespace and ignores empty entries, but invalid addresses are passed through to the email service which may reject them silently.

Best practices and pitfalls

Tip

Always test the Email Sender on your own address first. Externalize To Emails and run the workflow once with {{toEmails}} set to your inbox to confirm the rendered subject, body, and Content Type before sending to real recipients.

Warning

Be careful with BCC and large recipient lists. The node accepts a comma-separated string in a single send, which can trigger spam filters or rate limits if the list is long. For large mailings, drive Email Sender from a Loop node and send one message per recipient instead.

How does it fit into a workflow?

Email Sender typically sits at the end of a workflow, after the content has been built and validated.

graph LR
    Trigger[Trigger / Schedule] --> Data[Data source: Sheets / API]
    Data --> LLM[LLM node builds the body]
    LLM --> ES[Email Sender
<br/>sends the report]
    ES --> Log[Log / Slack notification]