初心者向け
n8n Send and Waitの使い方
メールを送って、相手がボタンを押すかフォームに書き込むまで待つ Send and Wait for Response を、実際に動かして確かめました。返事の種類ごとに次のノードへ届くもの、期限を付けないと西暦3000年まで待つこと、期限切れは承認でも却下でもない形で届くことまで実測しています。
公開
動作確認: — n8n 2.36.8 / Gmail ノード v2.2
Send and Wait for Response は、メールを送って、相手が返事をするまでワークフローを止めておく操作です。 AIが書いた文章を人が確かめてから送る、といった「人の承認」を挟むときに使います。
この記事では Gmail ノードで試しました。実際に動かして分かったことは、次の4つです。
- 返事の種類(ボタン・自由記述)によって、次のノードに届く中身が違う
- 返事が届くと、それまで流れてきたデータは消えて、返事だけになる
- 待ち時間の上限を付けないと、西暦3000年まで待ち続ける
- 上限で切れたときは、承認でも却下でもない形で次に進む
まず1回動かす
最小の形で試します。
- 新しいワークフローに Manual Trigger を置く
- その後ろに Gmail ノードを置き、Resource を Message、Operation を Send and Wait for Response にする
- To に自分のアドレス、Subject と Message に適当な文を入れる
- Response Type は Approval のまま、Approval Options の Type of Approval を Approve Only にする
- Execute workflow を押す
すると、こういうメールが届きます。

この間、この実行の状態は waiting(待機中)になっています。
Approve it を押すと実行が再開し、Gmail ノードからはこう出てきました。
{ "data": { "approved": true, "respondedAt": "2026-10-03T09:08:07.086Z" } }
approved が承認されたかどうか、respondedAt が押した時刻です。
手動で実行したときも、本番で動かしたときも、同じように止まって待ちました。
設定する項目
Gmail ノードで Send and Wait for Response を選ぶと、普通の送信の項目(To、Subject、Message)に加えて、次の項目が出ます。
Response Type:返事の受け取り方

| 選択肢 | 相手がすること |
|---|---|
| Approval | メールの中のボタンを押す |
| Free Text | ボタンから開くフォームに、文章を書いて送る |
| Custom Form | 自分で項目を決めたフォームに入力する |
Approval Options:ボタンの数

- Approve Only:承認のボタンだけ
- Approve and Disapprove:承認と却下の2つのボタン
ボタンの文字は Approve Button Label で変えられます。2つのときは却下側の文字も変えられ、「送る」「送らない」のように日本語にもできました。
Options → Limit Wait Time:待ち時間の上限

Limit Wait Time は、Options の+から追加しないと画面に出てきません。 追加しないまま使うと、次の節のとおり、ほぼ永遠に待ちます。
返事の種類ごとに、次のノードに届くもの
実際に動かして、次のノードに届いた中身です。
| 返事 | 次のノードに届いたもの |
|---|---|
| Approve Only で押した | data.approved: true、data.respondedAt |
| Approve and Disapprove で承認 | data.approved: true、data.respondedAt |
| Approve and Disapprove で却下 | data.approved: false、data.respondedAt |
| Free Text で送信 | data.text(書いた文章)、data.respondedAt |
| 上限の時間が過ぎた | 受け取ったデータがそのまま出てくる。data は無い |

Custom Form は試していません。
期限を付けないと、西暦3000年まで待つ
Limit Wait Time を追加しないまま、ボタンを押さずに置いておくと、実行の記録の再開予定はこうなっていました。
"waitTill": "3000-01-01T00:00:00.000Z"
事実上、永遠に待ちます。 誰も押さなければ、ワークフローはそこで止まったままです。 お客様への返事を承認待ちにしているなら、お客様は放っておかれることになります。
ノードの定義を読むと、Limit Wait Time の既定値として「45分」と書かれています。 しかし、項目を追加しないままでは、上限は無いのと同じでした(項目を追加したとき、欄に最初から何が入っているかは確かめていません)。 HTTP Requestノードの Timeout と同じく、定義の既定値と、項目が無いときの動きは別物です。
上限には式も使えました。Amount に {{ $('Config').first().json.approvalWaitHours }} のように書くと、前のノードで決めた時間で切れます(24 を入れて、再開予定が24時間後になることを確かめました)。
期限切れは、承認でも却下でもない
上限を2分にして、ボタンを押さずに待ちました。約2分後に実行が再開し、次のノードには受け取ったデータがそのまま届きました。data.approved はありません。
そのため、次のノードで「approved が true か false か」の2つに分けていると、期限切れはどちらかに紛れ込みます。
Switch ノードで「true」「false」「どちらでもない」の3つに分けると、期限切れを拾えます。
true → 送る
false → 送らない
どちらでもない → 期限切れ(担当者に知らせる など)
approved は String($json.data?.approved) のように文字列にしてから比べると、data が無い期限切れのときもエラーにならずに3つ目へ流れました。
IF ノードで true と false の2つに分けたまま期限が切れたときに、どちらに流れるのか、エラーで止まるのかは試していません。
ボタンを押すときに起きること
ボタンのリンクは localhost を向いている
メールのボタンのリンクは、こうなっていました。
http://localhost:5678/webhook-waiting/(実行ID)/(ノードのID)?approved=true&signature=(署名)
n8n を動かしているパソコンのブラウザからしか押せません。 スマホの Gmail から押しても開きません。
外から押せるようにするには、n8n の環境変数 WEBHOOK_URL に外から開ける URL を設定します
(公式ドキュメント)。この設定は試していません。
2回押しても、期限のあとに押しても、何も起きない
一度押したボタンをもう一度押すと、ブラウザにこう出て、次のノードには何も流れませんでした。期限が切れたあとのボタンを押したときも同じでした。

うっかり2回押しても、二重には進みません。
メールのコピーを持っている人は、誰でも押せる
宛先を見本のアドレスから書き換え忘れて、誰にも届かなかった承認メールでも、送った側の Gmail の「送信済み」に残ったコピーのボタンを押すと、承認されて先に進みました。
リンクに付いている署名は「n8n が作ったリンクか」を確かめるもので、「誰が押したか」は確かめていません。 承認メールを転送したり、何人かで見ているアドレスに送ったりするときは、見た人なら誰でも押せることに気をつけてください。
待っている間にワークフローを直しても、続きは動いた
承認待ちの間にワークフローを取り込み直して、そのあとでボタンを押したことがありました(1件だけです)。 続きはちゃんと動き、送信まで進みました。
実際に使った例
LINE対応自動化ワークフローで、AIが書いた返信案をスタッフに確かめてもらうために使っています。 Approve and Disapprove のボタンを「送る」「送らない」にし、待ち時間は24時間、期限切れはスタッフに知らせる形です。
確認していないこと
- Gmail ノードでしか試していません。 Slack など、ほかのサービスのノードにも同じ操作がありますが、同じ動きかは確かめていません
- Custom Form と、Limit Type の At Specified Time(日時で区切る)は試していません
WEBHOOK_URLを設定して、外からボタンを押すところは試していません- 期限切れのあと、2つに分ける IF ノードでどう流れるかは試していません
次に読む
- 時間で待つ・外からの呼び出しを待つ、もう1つの待ち方は Waitノードの使い方
- この操作で承認を挟んだ実例は LINE対応自動化ワークフロー
- どこまで機械に任せ、どこに人の確認を残すかは n8n 業務自動化の実例