Send email from Make
Make's own email module sends through a mailbox you connect. An HTTP module sends through your domain instead, and tells you what happened to each message.
Updated September 09, 2026
Make's Email module connects to a mailbox — Gmail, an IMAP account, whatever you have — and sends as that mailbox. It is the fastest thing to set up and the first thing to break at volume: personal mailboxes have sending limits, they are not built to be sent from by a machine, and Google will eventually decide your scenario looks like something it should stop.
An HTTP module sends from a domain you own, and hands the scenario something to branch on.
The module
Add HTTP → Make a request:
- URL:
https://pigeonatlas.com/v1/emails - Method:
POST - Body type:
Raw - Content type:
JSON (application/json)
Under Headers, add one:
| Name | Value |
|---|---|
Authorization |
Bearer pa_live_your_key_here |
And in Request content:
{
"from": "Your Company <hello@mail.yourcompany.com>",
"to": "{{1.email}}",
"subject": "{{1.subject}}",
"html": "{{1.body}}"
}
Turn on Parse response so the reply comes back as fields rather than a string you have to parse yourself.
The setting that decides how failures behave
Evaluate all states as errors is on by default, which means a 422 stops the scenario and marks the run as failed. That is usually what you want for a receipt or a password reset — you would rather know.
For a bulk scenario iterating over rows, turn it off and add a Router after the module instead: one branch where Status code = 200, another that writes the failure somewhere you will read. Otherwise one bad address in a spreadsheet stops the whole run at row 40, and the remaining 300 never go.
Quoting, which is where scenarios actually break
Make substitutes mappings into the raw body as plain text, so an apostrophe or a line break in {{1.body}} produces JSON that will not parse — and the error you get back talks about the payload, not about the row that caused it.
Wrap anything that came from a spreadsheet, a form or a person in Make's toString and escape it, or build the body with a Create JSON module and map that in as a single value. The second is more clicks and it stops the problem happening at all.
Before it works
Add your sending domain in Pigeon Atlas and publish the three DNS records it gives you. Until they resolve, nothing sends from that domain.
The API reference covers attachments, custom headers and the delivery webhook, which Make can receive with a Custom webhook trigger.