Issue with Send and Wait for Approval" with Send Email. Buttons Not Clickable in approval email – Human-in-the-Loop Issue

Hi Community,

I’m using the “Send and wait for approval” feature in n8n as part of a Human-in-the-Loop workflow with Send Email node. The email is getting delivered, but the Approve and Decline buttons in the email are not clickable or functional — they appear visually but do not perform any action when clicked.

Has anyone faced this issue before?
Is there a fix or recommended way to ensure the buttons work as expected?

Thanks in advance for any help!

I presume you have the Operation set to ‘send and wait for response’, but it’s worth explicitly checking. It can get changed when fiddling with the node.
This seems more likely to be a problem with your mail system than with n8n. Have you checked the source of the message as seen in the mailbox to make sure there are links on the text?

What mail system are you sending this in to, and how much do you control the delivery path?

Thanks for the quick response!

Yes, I’ve double-checked — the operation is definitely set to “Send and wait for response” in the node.

I’m using my personal Gmail account for both sending and receiving the email. The message is delivered correctly, but when I inspect the email source, the Approve/Decline buttons don’t contain any actual hyperlinks — just styled text blocks.

I don’t have full control over the Gmail delivery path beyond standard SMTP setup (which is authenticated and working). Do you think the issue is due to Gmail stripping or blocking certain elements? Or could it be something missing in how the approval links are generated in n8n?

I don’t use gmail myself, but it could well be stripping them out - particularly if you have a new domain to run n8n on. If it doesn’t trust the links it could strip them out, but I would have expected it to tell you that’s what it’s doing.
Do you have a different (less consumer) email address you could try? Maybe something like https://webhook.site/ which will give you a webhook URL and an email address and then show the headers etc as the http calls/emails come in. Something like that is invaluable for testing rather than passing it through a bunch of filters on the google end and being left to wonder.

For outbound smtp, you could try a different service as well if the problem isn’t on the incoming gmail side.
I found a quick list here (just the first search result) - I use Postmark and can’t fault it, but we have a paid account.

  1. MailerSend – free plan: up to 3,000 emails per month
  2. SMTP2Go – free plan: up to 1,000 emails per month
  3. SendPulse – free plan: up to 12,000 emails per month
  4. Brevo (formerly Sendinblue) – free plan: up to 300 emails per day
  5. Mailjet – free plan: up to 200 emails per day
  6. Aha Send – free plan: up to 1,000 emails per month
  7. Mailtrap – free plan: up to 1,000 emails per month
  8. Postmark – free plan: up to 100 emails per month
  9. SendGrid – free plan: up to 100 emails per month
  10. Gmail – free plan: up to 500 emails per day
  11. Elastic Email – free plan: up to 100 emails per day