IMAP Trigger

The IMAP Trigger node polls an email inbox on a fixed interval and starts a workflow once for each newly detected message.

The IMAP Trigger node polls an email inbox on a fixed interval and starts a workflow once for each newly detected message. It is a zero-input trigger node designed for inbound email automation such as support triage, shared mailbox monitoring, and approval mailboxes.

Overview

PropertyValue
Inputs0
Outputs1
Output$nodeLabel.email, $nodeLabel.triggered_by, $nodeLabel.trigger_node_id, $nodeLabel.triggered_at

Parameters

ParameterTypeDescription
credentialIdUUIDimap credential containing server, login, mailbox, and SSL settings
pollIntervalMinutesIntegerHow often Heym checks the mailbox for new email

Setup Guide

1. Create an imap Credential

  1. Go to Settings → Credentials → New Credential
  2. Select type IMAP Email Inbox
  3. Enter:
    • IMAP Host (for example imap.gmail.com)
    • IMAP Port (993 for SSL/TLS on most providers)
    • Username / Email
    • Password / App Password
    • Optional Mailbox (default: INBOX)
  4. Leave Use SSL / TLS enabled unless your mail server explicitly requires non-SSL IMAP
  5. Save the credential

2. Add the Node to Your Workflow

  1. Drag IMAP Trigger onto the canvas
  2. Select the node to open the Properties panel
  3. Choose your imap credential
  4. Set Poll Interval (Minutes) with an integer value such as 1, 5, or 15

Trigger Semantics

  • The first poll establishes a baseline of the current mailbox contents and does not replay older email.
  • Later polls trigger once per message whose IMAP UID is newer than the saved cursor.
  • If the mailbox UIDVALIDITY changes, Heym resets the cursor and baselines again to avoid duplicate processing.
  • Each new email starts a separate workflow execution with trigger_source = "imap".

Output Fields

After the node triggers, downstream nodes can access:

ExpressionDescription
$nodeLabel.emailFull parsed email payload
$nodeLabel.email.subjectDecoded subject
$nodeLabel.email.fromRaw From header
$nodeLabel.email.fromAddressesParsed sender list
$nodeLabel.email.toAddressesParsed recipient list
$nodeLabel.email.ccAddressesParsed CC list
$nodeLabel.email.replyToAddressesParsed reply-to list
$nodeLabel.email.textPlain-text body
$nodeLabel.email.htmlHTML body
$nodeLabel.email.attachmentsArray of attachment metadata (filename, content_type, size_bytes)
$nodeLabel.email.headersDecoded header object
$nodeLabel.email.uidIMAP UID for deduping or logging
$nodeLabel.triggered_byTrigger source label ("imap")
$nodeLabel.trigger_node_idCanvas node ID that detected the email
$nodeLabel.triggered_atISO timestamp for the workflow execution

Example Workflow

Inbound support email → summarize → route

imapTrigger → llm → condition → slack / sendEmail
  • IMAP Trigger label: supportInbox
  • LLM user message: "Summarize this email from $supportInbox.email.from: $supportInbox.email.text"
  • Condition: $supportInbox.email.subject.lower().contains("urgent")

Notes

  • Many providers require an app password for IMAP access instead of your main account password.
  • Attachment contents are not injected into the workflow input; only attachment metadata is included.
  • Use Send Email, Telegram, Slack, or DataTable downstream to route or log new email.