Skip to content
Gaurav TiwariDocs

Send Email in from FlowMattic, Zapier, Make or n8n

Updated October 18, 2026

Some support mail never reaches a route Core Support can read directly. It sits in Microsoft 365, or a FlowMattic or Zapier workflow already watches the inbox for other jobs. Copying those emails into tickets by hand is slow, and the replies lose their thread.

Each mailbox can accept email from an automation tool instead. The tool posts every email to a webhook URL with a secret token. Core Support then treats it like mail from the relay or IMAP, with the same reply tracking, review and attachment handling.

Turn On Automation Tools for a Mailbox

  1. Go to Core Support → Connections and open the mailbox.
  2. In the Automation tools card, switch on Accept mail from FlowMattic, Zapier, Make or n8n.
  3. Click Save mailbox.
  4. In the How mail reaches this mailbox card, copy the Automation webhook URL and the Token (send as a Bearer token).

Use the Copy button for the token and keep it out of tickets, chat and screenshots. To replace it, switch on Create a new token and save, and the old token stops working. Switching the card off removes the token, and the endpoint then refuses every request.

The URL follows this pattern, where the blog ID is 1 on a single site:

POST https://example.com/wp-json/core-support/v1/webhooks/inbound/site-<blog-id>-<mailbox-key>
Authorization: Bearer <token>
Content-Type: application/json

The same URL is listed under Core Support → Incoming mail → Connection details. If your server strips the Authorization header, send the token as X-Core-Support-Token: <token> instead.

Core Support mailbox page with the relay details and the Automation tools switch

Test the Connection

A GET request to the same URL with the token tests the connection without sending anything:

curl -H "Authorization: Bearer <token>" \
  https://example.com/wp-json/core-support/v1/webhooks/inbound/site-1-support

A working connection answers with the mailbox address and its size limit in bytes:

{ "ok": true, "mailbox": "support@example.com", "max_bytes": 2097152 }

Send the Raw Message When You Can

The raw message is the most faithful option, because Core Support keeps the original headers. Send it as raw:

{ "raw": "From: Ada <ada@example.net>\r\nTo: support@example.com\r\n..." }

Or send it base64-encoded as raw_b64. When either one is present, the parsed fields below are ignored.

Or Send Parsed Fields

When your tool only gives you parts of the email, send them as fields. Core Support builds the message from them.

FieldRequiredNotes
fromYesada@example.net or Ada Lovelace <ada@example.net>
from_nameNoOverrides the name in from
to, ccNoA string or a list, up to 50 addresses each. Include to so customer replies (sent to support+token@) reach the right ticket
envelope_toNoThe address the email was delivered to. It must belong to this mailbox
subjectNoShows as “(No subject)” when empty
text, htmlOne of themText is derived from HTML when only HTML is sent
message_id, in_reply_to, referencesNoHelp duplicate detection. in_reply_to and references take a list or a space-separated string
dateNoAny date PHP’s strtotime() understands
auto_submitted, precedenceNoPass these through so auto-replies and bulk mail are filtered
headersNoAn object of extra headers, such as Authentication-Results
attachmentsNoUp to 25 items: { "filename", "content_type", "content_b64" } or { "filename", "url" } with a public https URL
delivery_idNoYour tool’s unique ID for this email. Retries with the same ID are stored once

A full request with parsed fields looks like this example:

{
  "from": "Ada Lovelace <ada@example.net>",
  "to": ["support+abc123@example.com"],
  "subject": "Re: License key not working",
  "text": "Thanks, the new key works.",
  "message_id": "<reply-42@example.net>",
  "in_reply_to": "<notification@example.com>",
  "delivery_id": "flow-run-8842",
  "attachments": [
    { "filename": "screenshot.png", "content_type": "image/png", "content_b64": "iVBORw0KGgo..." }
  ]
}

A few rules apply to the fields:

  • Headers: headers adds extra headers, but it can’t replace the address, subject, threading or MIME headers Core Support builds itself.
  • Attachment URLs: Core Support downloads each url with a 20-second timeout and up to 2 redirects. A URL that fails returns 503, so the tool can retry.
  • Size: attachments count toward the mailbox’s Largest message limit.

Retries and Duplicates

Automation tools retry failed steps, so Core Support makes retries safe. Core Support takes the delivery ID from the first valid one of these:

  1. An Idempotency-Key header.
  2. An X-Core-Support-Delivery header.
  3. The delivery_id field.

The ID must be 8 to 200 characters of letters, digits and ._:@<>+=/-. Without any ID, a retry of the identical request body is still stored once. Reusing an ID for different content returns 409.

Responses

  • 202: accepted. The body includes accepted, delivery_id and receipt_id.
  • 400: the body isn’t a JSON object.
  • 401: the token is missing or wrong.
  • 403: automation tools are switched off for this mailbox.
  • 404: no mailbox uses this URL. Check the webhook URL, and don’t retry.
  • 409: this delivery ID was already used for different content.
  • 413: the message is larger than the mailbox limit.
  • 422: missing or invalid fields, such as no from or no body. Fix the mapping, because retrying won’t help.
  • 503: temporarily unavailable, for example while attachment storage is down. Retry later.

FlowMattic Example

FlowMattic, a WordPress automation plugin, can watch the support mailbox and post each email on. Use an IMAP or email trigger on the mailbox, then add an API request step:

  1. Set the method to POST and the URL to the automation webhook URL.
  2. Add the headers Authorization: Bearer <token> and Content-Type: application/json.
  3. Map the trigger’s sender, recipient, subject, body and Message-ID into the JSON fields above.
  4. Use the trigger’s message ID as delivery_id.

Zapier, Make, n8n and Pipedream follow the same shape: a trigger that receives the email, then an HTTP request step with the same URL, headers and fields.

What Happens Next

Messages from automation tools show the source Automation in Core Support → Incoming mail. A reply carrying a valid reply token goes straight onto its ticket. Any other email follows the Email from new senders setting, which holds it for review by default, and Review Incoming Mail shows what to do with it there.

If replies keep opening new tickets, the to field is usually missing. Without it, Core Support can’t see the plus-addressed reply token, and How Email Reaches Core Support explains how that token works.

Share

Was this helpful?

Still stuck? Open a support ticket