Skip to content
TriggerGmailReal-timeUpdated May 2026

How do I trigger when a new email arrives in Gmail?

Short answer: Drop the "GmailNew Email" trigger on your workflow canvas, add filters if you want them, and publish. It fires within seconds of the event in Gmail, not on a polling schedule.

Anatomy

What this trigger looks like in a workflow.

Drop it on the canvas. Configure a couple of fields. Publish.

In the builder
Trigger
New Email
When the matching event happens
on email receivedincoming emailwhen a new email is received in gmailnew email receivedwatch for email receivedwhen email receivedemail with attachment
What this trigger returns
for the curious

You don’t need to read this. Tiny Command auto-maps every field into the visual picker so downstream nodes can pull values by clicking. We show it here for power users who want to know what’s on the wire.

{
"cc": [],
"id": "msg_123abc",
"to": [
{
"name": "",
"email": "you@example.com"
}
],
"bcc": [],
"_raw": {
"id": "msg_123abc",
"payload": {
"parts": [],
"headers": []
}
},
"date": "2026-04-16T10:30:00.000Z",
"from": {
"name": "Alice",
"email": "alice@example.com"
},
"labels": [
"INBOX",
"UNREAD"
],
"snippet": "Hello, please find the report attached...",
"subject": "Project Report Q1",
"reply_to": null,
"body_html": "<p>Hello, please find the report attached.</p>",
"body_text": "Hello, please find the report attached.",
"is_unread": true,
"thread_id": "thread_456def",
"is_starred": false,
"attachments": [
{
"size": 204800,
"content": null,
"filename": "report.pdf",
"mime_type": "application/pdf",
"attachment_id": "ANGjdJ8xyz_abc123"
}
],
"is_important": false,
"size_estimate": 4639719,
"message_id_rfc": "<CA+d5AXL...@mail.gmail.com>",
"has_attachments": true
}
Output shape

Fields available to downstream nodes.

Every field below can be referenced by name in any action or filter that comes after this trigger.

FieldTypeExample
ccarray[]
idstring"msg_123abc"
toarray[{"name":"","email":"you@example.com"}]
bccarray[]
_rawobject{ … }
_raw.idstring"msg_123abc"
_raw.payloadobject{ … }
_raw.payload.partsarray[]
_raw.payload.headersarray[]
datestring"2026-04-16T10:30:00.000Z"
fromobject{ … }
from.namestring"Alice"
from.emailstring"alice@example.com"
labelsarray["INBOX","UNREAD"]
snippetstring"Hello, please find the report attached..."
subjectstring"Project Report Q1"
reply_tonullnull
body_htmlstring"<p>Hello, please find the report attached.</p>"
body_textstring"Hello, please find the report attached."
is_unreadbooleantrue
thread_idstring"thread_456def"
is_starredbooleanfalse
attachmentsarray[{"size":204800,"content":null,"filename":"report.pdf","mime
is_importantbooleanfalse
size_estimatenumber4639719
message_id_rfcstring"<CA+d5AXL...@mail.gmail.com>"
has_attachmentsbooleantrue
FAQ

Questions about New Email.

How does the New Email trigger work in Gmail?
Fires when a new email is received in Gmail. Returns full email content; enable "Include Attachments" to automatically download all file attachments.
Is the New Email trigger real-time?
Yes. New Email uses webhooks or push subscriptions, not polling. Your workflow fires within seconds of the event happening in Gmail.
What data does New Email return?
The full event payload from Gmail. The output shape table on this page lists every field, its type, and an example value so you can map fields into downstream nodes.
Can I filter New Email so only some events start a workflow?
Yes. Add a Filter node right after the trigger and match on any field, whether that's subject, sender, status, or anything else in the payload. Workflows only continue when the filter passes.
Do I need Gmail admin permissions to use New Email?
For most Gmail accounts a standard user can authorize the trigger. Some Gmail plans require an admin to enable third-party webhooks. Check Gmail's docs if the trigger fails to register.

Build a workflow on this trigger.

One trigger. 27+ downstream actions. Zero glue.