Email Providers
Send email through Resend, Mailgun, Postmark, or SendGrid
Email Providers
Use these nodes to send through an email service you already have an account with. To send from your own Gmail account, use Gmail: Send Email. For Amazon SES, see AWS SES: Send Email.
How to get credentials
Create an API key in your provider's dashboard and save it as a credential in Nodes2Cloud:
- Resend: API Keys → Create API Key.
- Mailgun: API Security → Add new key. Also note the sending domain, e.g.
mg.yourdomain.com. - Postmark: the server's API Tokens tab.
- SendGrid: Settings → API Keys, with Mail Send access.
The From address must be on a domain you've verified with that provider.
Check your provider's acceptable-use policy before sending outreach or other unsolicited email. Several transactional providers, Postmark among them, don't allow cold email and may suspend your account for it.
1. Send Email
What the node does
Sends one email through Resend, Mailgun or Postmark. Pick the one you use in Provider.
Options / Fields
- Provider:
Resend,MailgunorPostmark. The API key must belong to the provider you pick. - Mailgun Domain and Mailgun Region: (Mailgun only) Your sending domain, and
USorEU(the region the domain was created in). - To / From / Subject / Body (plain text): Required.
- Body (HTML): (Optional) Sent together with the plain-text body.
- Attachments / CC / BCC / Reply-To: (Optional)
- Custom Headers: (Optional) Extra headers, e.g.
List-Unsubscribe, orIn-Reply-ToandReferencesto thread a follow-up. Values can use expressions. - Tag: (Optional) One label for the provider's analytics, e.g.
outreach. Resend accepts only letters, numbers,_and-. - Metadata: (Optional) Key/value pairs stored with the message and sent back in the provider's webhooks, e.g.
leadId→{{$json.id}}. Resend gets them as tags, Mailgun asv:variables, Postmark asMetadata. - Send At: (Resend and Mailgun) An ISO 8601 date-time such as
2026-11-02T09:00:00Z, to deliver later. Postmark has no scheduled sending. - Track Opens / Track Clicks: (Mailgun and Postmark) Override the account's tracking setting for this message. Resend sets tracking per domain in its dashboard. Click tracking rewrites links, which some spam filters weigh against one-to-one email.
- Message Stream: (Postmark only) The stream ID. Leave it blank for the default transactional stream.
The output is the provider's response plus messageId, the provider's ID for the message: {{$node.email_1.messageId}}.
2. SendGrid: Send Email
What the node does
Sends an email through SendGrid, either with inline content or with a dynamic template.
Options / Fields
- To / From / From Name / CC / BCC / Reply-To / Attachments: As usual.
- Subject / Body Text / Content Type: Needed for inline content, not with a dynamic template.
- Body (HTML): (Optional) Sends HTML together with Body Text, which becomes the plain-text part.
- Use Dynamic Template, Template ID, Dynamic Template Data: Send a SendGrid template. Dynamic Template Data is fixed JSON.
- Template Variables: Template values that can use expressions, e.g.
firstName→{{$json.firstName}}. They're merged over Dynamic Template Data. - Custom Headers: (Optional) e.g.
List-Unsubscribe,In-Reply-To,References. - Track Opens / Track Clicks: Override your account's tracking for this message.
- Unsubscribe Group ID: (Optional) A SendGrid unsubscribe group. Recipients who opted out are skipped and SendGrid adds the unsubscribe link.
- Custom Args: (Optional) Key/value pairs sent back in SendGrid's Event Webhook, e.g.
leadId. - Categories / Send At / Sandbox Mode / IP Pool: (Optional)
SendGrid replies with no body. The node returns SendGrid's message ID as {{$node.sendgrid_1.messageId}}. In an editor test run this is null, because the test-run proxy doesn't pass response headers through.
Common Troubleshooting
- 401 / Forbidden: The API key doesn't match the selected provider, or lacks send permission.
- From address rejected: Verify the sending domain (SPF and DKIM) with the provider first.
- "Send At must be an ISO 8601 date-time": Use a full timestamp such as
2026-11-02T09:00:00Z, or build one with the Date & Time node. - Custom header refused: Headers the node's own fields set (From, To, Subject, Reply-To and so on) can't be set again in Custom Headers.
