Email Trigger
An email trigger issues a pair of addresses for a flow. Mail sent to either one starts the flow, with the message’s contents as$.trigger.
You do not receive mail at your own domain — you forward to the issued address from a mailbox you already have.
Getting your addresses
1
Add an Email trigger
From the Add Node panel. Open the node and choose the Trigger tab.
2
Press Get
The button reads Get the first time and Get New afterwards.
3
Copy both addresses
They appear as To trigger draft flow and To trigger published flow.
The format
<name> is generated for you — two adjectives, a noun and a number, such as sparklyjollybubble650. Both addresses are plus-address variants of the same real mailbox, and they differ only in the literal draft prefix.
This makes the email trigger the easiest one to test against: send to the draft address while you are building, switch to the published address when you go live.
Forwarding mail to it
Set your existing mailbox to forward to the issued address. The trigger node’s Email Forwarding tab links to each provider’s own instructions:Gmail
Settings → Forwarding and POP/IMAP
Outlook / Hotmail
Settings → Mail → Forwarding
Yahoo Mail
Settings → Mailboxes → Forwarding
Apple iCloud Mail
Mail settings → Forwarding
What the flow receives
$.trigger is a flat object with eight keys and nothing else:
Attachments
Attachments are stored as objects and referenced by key, not delivered inline.$.trigger.attachments_bucketnames the bucket.$.trigger.email_attachmentslists the object keys, in the formemail_<uid>.<filename>.
An attachment that fails to store is skipped: the run still starts, and that file is simply absent from
email_attachments. Attachments are retained for the account’s configured log-retention window rather than indefinitely.Draft and published flows
This is the one trigger where the draft/published split is handled for you: the two addresses are the switch.What runs after the trigger is decided by each step’s outcome, not by the arrows in the editor. A Condition step’s outcome names the step IDs to run next — one, several (they start at the same time), or the reserved
RESOLVE_SUCCESS / RESOLVE_ERROR to end the run. A line drawn between two steps that no outcome names is decoration.Seeing what arrived
Monitoring → Emails lists every message that reached a flow: status, sender, flow, attachments and timestamp. Opening one shows the body and its attachments, and offers Re-trigger to run the flow again on the same message, and Delete. That surface is genuinely useful, but be clear about what it does and does not tell you. Delivery normally takes seconds. There is no guaranteed latency and nothing reports how long it took.Security
Treat an issued address as a credential:- Do not publish it, and do not use it as a public contact address.
- Validate
$.trigger.email_from[0]in the flow’s first step and stop the run when the sender is not one you expect. - Press Get New if an address leaks — but update your forwarding first, and remember the old one is orphaned rather than revoked.
Troubleshooting
Mail is forwarded but the flow never runs
Mail is forwarded but the flow never runs
Check the address character for character, including the
+ part. Then check whether Get New has been pressed since the forwarding rule was written — that replaces the addresses.Nothing appears in Monitoring → Emails
Nothing appears in Monitoring → Emails
The address did not resolve to a flow. That produces no record. It is nearly always a typo or a re-issued address.
The forwarding confirmation code never arrives
The forwarding confirmation code never arrives
The issued address cannot show you incoming mail before a flow exists to process it. Build a minimal flow that logs
$.trigger.email_body, publish it, then start the forwarding setup and read the code out of the run.The body is empty
The body is empty
Read both
$.trigger.email_body and $.trigger.email_html_body — a mail sent as HTML only populates the second.A step compared the sender and never matched
A step compared the sender and never matched
email_from is an array. Compare $.trigger.email_from[0].An attachment is missing from email_attachments
An attachment is missing from email_attachments
It failed to store. The run went ahead without it; there is no retry for that file.
The record says success but nothing happened
The record says success but nothing happened
That status only covers starting the flow. Open the run itself to see where it failed.
Next Steps
Assistant Step
Reading an attached document
Condition Step
Checking the sender before doing any work
Variable Mapping
Reading the message in later steps
Triggers Overview
Every way a flow can start