Integration guide · Updated October 2026
Give a Make Scenario Its Own Email Inbox
Give your Make scenario an address such as invoices@yourdomain.com. Every email sent to it runs the scenario through a custom webhook with the parsed message (sender, subject, text, HTML and attachments), signed so you can trust it, and the scenario can reply from the same address. The mailbox runs in MarkRelay in your own Cloudflare account.
What you need
- MarkRelay deployed to your Cloudflare account, with your domain added.
- A Make account.
1. Create the mailbox in MarkRelay
- In MarkRelay, create a mailbox for the workflow, such as
orders@yourdomain.com. - Make sure its Cloudflare Email Routing rule sends mail to the MarkRelay Worker (or that a catch-all does).
- Send it a test email and check it appears in webmail. Your team can keep using this mailbox in the browser while Make works on the same mail.
2. Add a custom webhook in Make
- Create a scenario and add Webhooks → Custom webhook as the first module.
- Add a webhook and open Show advanced settings.
- Turn on Get request headers and JSON pass-through, so the raw body arrives as text in
value. - Copy the webhook address.
3. Point a MarkRelay webhook at Make
- Open Developer → Webhooks, select Add webhook and choose Custom endpoint.
- Paste the custom webhook address as the endpoint URL.
- Under Mailboxes, choose Specific mailboxes and pick only the workflow's mailbox.
- Add the webhook and copy the
whsec_...signing secret; it is shown once. - Select the pencil icon, then Send test. Make should receive a signed
webhook.testevent.
From now on every message to that mailbox reaches Make as an email.received event within seconds. Failed deliveries are retried up to 3 times. See inbound webhooks for the full payload.
4. Check the signature with a filter
Put a filter on the route after the webhook. Make's sha256() function computes an HMAC when you give it a key:
Condition (Text operators: Equal to)
sha256({{1.headers.x-markrelay-timestamp}}.{{1.value}}; "hex"; "whsec_...")
equals
replace({{1.headers.x-markrelay-signature}}; "sha256="; "")Only events whose signature matches pass the filter. Then add JSON → Parse JSON on {{1.value}} to turn the body into fields.
5. Use the email in the scenario
The parsed event has the message under data:
| Field | What it holds |
|---|---|
data.id | The email id; use it to dedupe and to reply |
data.mailbox | The MarkRelay mailbox it arrived in |
data.from.address, data.from.name | The sender |
data.subject | Subject line |
data.text, data.html | Plain-text and HTML bodies |
data.attachments[] | Each file's id, fileName, contentType and size |
data.threadId | The conversation it belongs to |
Route on the sender or subject, extract an invoice number with a text parser or AI module, and save it to a sheet or accounting tool. Delivery is at least once, so skip any data.id you have already handled.
6. Reply from the same address
Add HTTP → Make a request:
POST https://mail.yourdomain.com/openapi/v1/emails/{data.id}/reply
Authorization: Bearer sk-...
Content-Type: application/json
{ "text": "Thanks, we received your order." }Create the API key in Developer → API keys with Specific mailboxes scope and only the workflow's mailbox, so the workflow cannot read or send from any other address. Send exactly one of text, html or markdown; add "replyAll": true to answer everyone. The reply goes out from the same address, in the same thread, and shows up in webmail with an API badge. Download attachments with GET /attachments/{id} and the same key.
Common questions
How do I trigger a Make scenario from an incoming email on my own domain?
Create a mailbox in MarkRelay, start the scenario with Webhooks → Custom webhook, and point a MarkRelay webhook scoped to that mailbox at the webhook address. Each new message runs the scenario with the parsed email.
Why turn on JSON pass-through?
The signature covers the exact raw body. With JSON pass-through, Make hands the body over as text, so the filter can check the signature before you parse it.
Can I use Make's own mailhook instead?
Make's mailhook gives you an address on Make's domain. MarkRelay gives the scenario an address on your own domain, keeps every message in your Cloudflare account and lets the scenario reply from that address.
Can the scenario reply from the same address?
Yes. Add HTTP → Make a request with POST to /emails/{id}/reply on your MarkRelay API and a key scoped to the scenario's mailbox.
Related: email to webhook, n8n and Zapier guides, and the Email API reference.