Slack and Resend: Approval-Then-Send Customer Email Template

A Spojit workflow that holds a draft customer email for human approval, pings your team in Slack, and only sends it through Resend once someone signs off.

What It Builds

This template starts from a Manual trigger that you run with a draft email (recipient, subject, and body). A Human approval node pauses the run so a reviewer can read the draft, a Connector node on Slack posts a notice to your review channel, and a Connector node on Resend sends the message from your own verified domain only after the approval is granted. If the reviewer rejects, the run halts and nothing goes out.

The result is a controlled outbound path for sensitive customer email: nothing reaches the recipient until a named person has approved it, and the whole review happens where your team already works.

The Prompt

Paste this into Miraxa, the intelligent layer across your automation, and it builds the workflow, connecting the tools for you:

Build a manually triggered workflow that takes a draft customer email (recipient, subject, and body) as input. Add a Human approval node that shows the draft to a reviewer with high urgency. While it waits, post a message to the #email-review Slack channel saying a customer email is awaiting approval, including the recipient and subject. Once approved, send the email through the Resend connector from our verified domain to the recipient with the given subject and body.

Connectors Used

  • Manual trigger - you start each run with the draft email fields as the request body.
  • Human approval node - pauses the run; reviewers respond in the Approvals inbox at /approvals.
  • Slack - a Connector node in Direct mode using send-message to post the review notice to your channel.
  • Resend - a Connector node in Direct mode using send-email to deliver the approved message from your verified domain.

Customize It

Change #email-review to your own Slack channel and adjust who reviews by setting the approval slots and atoms (User, Role, or Team) on the Human node in the properties panel. You can add a Timeout (minutes) so stale drafts do not block forever, raise or lower the Urgency, and tune the Slack wording or the Resend subject and body templates. To pull drafts in automatically instead of running manually, swap the Manual trigger for a Webhook or Schedule trigger.

Tips

  • Use Direct mode on both the Slack and Resend nodes: each is a single predictable call, so you avoid AI credits and keep the send deterministic.
  • Verify your sending domain in Resend before your first real send; an unverified domain will bounce. The Resend connector also exposes verify-domain if you want to check status from a workflow.
  • A rejected approval halts the run by design, so place the Resend send strictly after the Human node. Nothing downstream of an approval runs unless every approval slot is satisfied.

Common Pitfalls

  • Branching on rejection is not supported. The Human node halts on reject or timeout, so do not try to wire an "on reject" path; treat no approval as no send.
  • Reference only upstream variables in the Slack and Resend fields. Values like the recipient and subject must come from the trigger input (for example {{ input.subject }}), not from workflow metadata.
  • Resend sends from your verified domain, which is different from the built-in Send Email node. If you only need an internal notice rather than a branded customer send, Send Email may be enough.

Related Articles

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.