Outlook
Send Email
Send an email through a connected Gmail or Outlook account.
Endpoint
Parameters
| Name | Type | Required | Note |
|---|---|---|---|
| senderstring · required | string | required | Email account to send from. Select a connected Gmail or Outlook account. Example: |
| sendAsstring · optional | string | optional | Send from one of this mailbox's "Send mail as" addresses instead of its own: the address, or "Name <address>". The mailbox must already be allowed to send as it (in Gmail: Settings, Accounts). Leave empty to send as the mailbox itself. Example: |
| emailstring · required | string | required | Recipient email address. Supports a {{…}} reference (an earlier step's output, the current Record's Field, or inside a For Each the loop item {{<For Each>.item.<Field>}}). Example: |
| ccstring · optional | string | optional | CC recipients. Comma-separated for multiple. Supports template variables. Example: |
| bccstring · optional | string | optional | BCC recipients. Comma-separated for multiple. Supports template variables. Example: |
| subjectModestring · required | string | required | Write the subject yourself or let AI generate it. One of: Default: |
| subjectstring · optional | string | optional | Email subject line. Supports template variables. Used only when subjectMode is manual. |
| subjectAiModelstring · optional | string | optional | AI model used to generate the subject. Used only when subjectMode is ai_personalized. One of: Default: |
| subjectPromptstring · optional | string | optional | Prompt the AI uses to write the subject. Supports template variables. Used only when subjectMode is ai_personalized. |
| messageModestring · required | string | required | Write the body yourself or let AI generate it. One of: Default: |
| messagestring · required if messageMode is manual and messageMode is manual | string | required if messageMode is manual and messageMode is manual | Email body. HTML allowed (<p> tags); newlines convert to <br> unless plain-text is on. Supports template variables. |
| messageAiModelstring · optional | string | optional | AI model used to generate the body. Used only when messageMode is ai_personalized. One of: Default: |
| messagePromptstring · required if messageMode is ai_personalized and messageMode is ai_personalized | string | required if messageMode is ai_personalized and messageMode is ai_personalized | Prompt the AI uses to write the body. Supports template variables. |
| attachmentstring · optional | string | optional | File attachment. Provide a URL to the file or upload directly. Disabled when plain-text is on. |
| plainTextboolean · optional | boolean | optional | When on, the body is sent as plain text (no HTML conversion, no attachments). Improves cold-outreach deliverability. Default: |
| replyInThreadboolean · optional | boolean | optional | When on, this email is sent as a reply on the thread of a prior send-email node in the same workflow. Default: |
| replyToNodeIdemail-reply-source · optional | email-reply-source | optional | Pick the upstream send-email node whose thread this reply joins. Used only when replyInThread is true. |
| signatureIdemail-signature · optional | email-signature | optional | Workspace-shared signature appended below the body at send time. |
| conditionstring · required | string | required | Guard against emailing when the recipient already replied or was already contacted. For a later follow-up after a wait, choose "No reply in this workflow" even when an earlier Filter already checked for a reply: that earlier check cannot see replies received during the later wait. One of: Default: |
Response schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"status",
"email",
"subject",
"sentAt"
],
"properties": {
"note": {
"type": "string"
},
"email": {
"type": "string"
},
"sender": {
"type": "string",
"description": "Sender identifier used (for reply tracking)."
},
"sentAt": {
"type": "string"
},
"status": {
"enum": [
"sent",
"queued"
],
"type": "string"
},
"message": {
"type": "string",
"description": "The resolved email body that was sent (with all template variables substituted)."
},
"subject": {
"type": "string"
},
"threadId": {
"type": [
"string",
"null"
],
"description": "Provider thread id this email belongs to, when known at send time. A reply returns the thread it was sent into; a new email returns it only if the inbox had already synced the sent message, otherwise null. Never derived from a message id. Pass it to send-email threadId to reply, or to email-get-thread."
},
"messageId": {
"type": "string"
},
"account_id": {
"type": "string",
"description": "Account ID used to send (for reply tracking when sender not available)."
},
"is_replied": {
"type": "boolean",
"default": false,
"description": "Whether the recipient has replied (updated by the reply tracker; false until a reply is detected)."
},
"replied_at": {
"type": "string",
"description": "ISO timestamp when a reply was detected (present once replied)."
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"required": [
"attachmentId",
"fileName",
"mimeType",
"size",
"sha256"
],
"properties": {
"size": {
"type": "number"
},
"sha256": {
"type": "string"
},
"tabular": {
"type": "object",
"required": [
"dataRows",
"columns"
],
"properties": {
"columns": {
"type": "number"
},
"dataRows": {
"type": "number"
}
},
"additionalProperties": false
},
"fileName": {
"type": "string"
},
"mimeType": {
"type": "string"
},
"attachmentId": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "The chat files attached, as read from storage: size in bytes, SHA-256, and data rows for a CSV/TSV."
},
"provider_id": {
"type": "string",
"description": "Provider-side message id (Gmail/Outlook native). Used by downstream send-email nodes for reply-in-thread."
},
"conversationId": {
"type": [
"string",
"null"
],
"description": "Inbox conversation id of this email, known under the same rule as threadId, otherwise null. Pass it to wait-for-reply or email-get-thread. When null, pass provider_id as their messageId once the sent email has synced."
},
"reply_positive": {
"type": "boolean",
"description": "Whether the detected reply was classified positive (present once replied)."
}
},
"additionalProperties": false
}