Webhook 받기 — 외부에서 트리거
Schedule 의 정반대 모드. 시간이 아니라 외부 요청이 워크플로를 깨웁니다. Stripe 결제 · GitHub PR · Slack 슬래시 명령 — 모두 Webhook 의 영역.
Ch.6 의 Schedule 이 "내 워크플로가 알아서 일어남" 이었다면, Webhook 은 "외부 누군가가 두드려서 일어남". 흔한 시나리오: 결제 시스템이 결제 완료 이벤트를 우리에게 알리고, 우리는 영수증 메일 발송. Slack 에서 누가 /deploy staging 명령을 치면 그게 우리에게 도착해서 배포 워크플로 실행. 이런 게 모두 Webhook.
Webhook 이 뭔가 — Schedule 과 정반대 모드
Webhook 의 본질은 단순. n8n 이 외부에 URL 하나 공개해두고, 누가 그 URL 을 요청하면 워크플로 한 번 실행. 그 URL 이 Webhook URL.
| 구분 | Schedule | Webhook |
|---|---|---|
| 누가 깨우나 | n8n 의 시계 | 외부 요청 (curl, 다른 SaaS, 브라우저) |
| 실행 주기 | 정해진 시각·간격 | 예측 불가 (요청 올 때마다) |
| 받는 데이터 | 없음 (트리거만) | HTTP body·query·headers |
| 예시 | 매일 9시 RSS | Stripe 결제 알림, Slack 명령 |
실제로 Webhook 노드 만들기
아래 캡처가 격리 인스턴스에서 직접 만든 Webhook 노드의 설정 패널. 박준성 따라하시면 동일한 화면이 뜹니다.
트리거 패널 검색창에 webhook 입력 → 첫 결과 Webhook 클릭 (그 아래 "Respond to Webhook" 은 응답 보낼 때 쓰는 별도 노드).
n8n 이 자동으로 생성해주는 두 URL:
차이는 마지막 H2 에서 다시. 일단 두 URL 이 다르다는 점만 인지.
- HTTP Method — 어떤 메서드로 받을지. 기본 GET, 데이터 받을 거면 POST.
- Path — 자동 UUID 그대로 둬도 OK. 의미 있는 이름(
github-pr)으로 바꿔도 됨. URL 의 마지막 부분. - Authentication — None / Basic / Header / JWT. 처음엔 None, 운영에선 Header Auth 권장 (Ch.17).
오른쪽의 Listen for test event 또는 Test this trigger 버튼을 누르면 n8n 이 60초간 대기 → 그 사이 누가 Test URL 을 호출하면 즉시 캐치.
받은 데이터 가공 — Set 노드 연결
Webhook 만 단독으로 쓰는 일은 거의 없습니다. 받은 데이터를 가공하거나 다른 곳으로 보내는 게 보통.
예를 들어 Webhook 으로 {"name":"박준성","amount":50000} 이 들어오면 Set 에서:
주의 — Webhook 으로 들어온 body 는 $json.body 로 접근. 헤더는 $json.headers, 쿼리는 $json.query. 일반 노드처럼 $json.name 으로 바로 꺼낼 수 없어요.
실전 호출 — curl 로 직접 쏘기
Webhook URL 을 받았으니 진짜로 한 번 호출. 노드 패널의 Listen for test event 누른 다음 터미널에서:
n8n 화면으로 돌아가면 — 워크플로가 깨어나 Webhook 노드에 ✓ 표시, OUTPUT 에 받은 데이터가 그대로 보입니다. 그 다음 Set 노드도 차례로 실행되며 가공된 결과 출력.
Test URL vs Production URL — 가장 흔한 함정
Webhook 의 가장 큰 함정. 두 URL 이 완전히 다르게 동작합니다.
/webhook-test/..."Listen for test event" 를 누른 직후 60초 동안만 작동. 한 번 트리거되면 자동 중지. 워크플로 짤 때 들어오는 데이터 구조 확인용.
/webhook/...워크플로가 Active 상태일 때만 작동, 24시간 항상 받음. 외부 SaaS (Stripe, GitHub 등) 에 등록할 URL 은 무조건 이것.
또 한 가지 — Test URL 은 localhost 만 받습니다. 외부에서 호출하려면 ngrok·Cloudflare Tunnel 같은 터널 도구로 뚫거나, Production URL + 도메인 + nginx 리버스 프록시 (Ch.22) 필요.
다음 Ch.8 에서는 외부에서 가장 자주 쓰는 통합 — Google Sheets. Webhook 으로 들어온 데이터를 시트에 자동 누적하거나, 시트에서 읽어와 다른 곳으로 보내는 패턴을 다룹니다.