13. n8n Webhook이란? 외부에서 데이터를 받아오는 기본 개념
Schedule Trigger와 Webhook은 둘 다 워크플로우를 시작하는 트리거지만, 작동 방식은 완전히 달라요.
Schedule Trigger는 n8n이 정해진 시간에 먼저 실행되고, Webhook은 외부 서비스에서 데이터가 들어오는 순간 실행돼요.
| 구분 | Schedule Trigger | Webhook |
|---|---|---|
| 시작 기준 | 정해진 시간 | 외부 이벤트 발생 |
| 실행 방식 | n8n이 먼저 실행 | 외부에서 n8n으로 요청 |
| 대표 사례 | 매일 오전 9시 업무 알림 | 상담 신청 즉시 데이터 수신 |
이번 글에서는 Webhook의 개념 자체보다 언제 사용해야 하는지, Test URL과 Production URL을 어떻게 구분하는지, 데이터가 들어오지 않을 때 어디를 확인해야 하는지를 중심으로 살펴볼게요.
Webhook이 필요한 상황부터 구분해보세요
Webhook은 외부 서비스에서 무언가 발생했을 때 바로 n8n으로 알려줘야 하는 상황에 잘 맞습니다.
- 랜딩페이지에서 상담 신청이 들어온 순간
- 외부 폼이 제출된 순간
- 결제가 완료된 순간
- 회원가입이 완료된 순간
- 외부 시스템에서 특정 이벤트가 발생한 순간
공통점은 하나예요.
n8n이 확인하러 가는 것이 아니라 외부 서비스가 n8n으로 데이터를 보낸다.
사무실의 접수창처럼 생각하면 이해하기 쉬워요. Webhook URL이 접수창 주소이고, 외부 서비스가 그 주소로 데이터를 보내면 자동화가 시작됩니다.
Webhook 노드에서 가장 중요한 것은 두 개의 URL입니다
Webhook 노드를 추가하면 Test URL과 Production URL이 만들어집니다.
| 구분 | Test URL | Production URL |
|---|---|---|
| 용도 | 개발·테스트 | 실제 운영 |
| 사용 시점 | 데이터 구조 확인 | 랜딩페이지·외부 서비스 연결 |
| 주의점 | 테스트 대기 상태 필요 | 워크플로우 활성화 필요 |
처음 Webhook을 사용할 때 가장 자주 헷갈리는 부분이 바로 이 차이예요.
실습 중에는 Test URL로 데이터를 보내고, 구조가 정상인지 확인합니다. 실제 사이트나 서비스에는 Production URL을 사용합니다.
Webhook으로 실제 어떤 데이터가 들어올까요?
상담 신청 폼이라면 이런 형태의 값이 들어올 수 있어요.
{
"name": "홍길동",
"phone": "010-0000-0000",
"email": "test@example.com",
"message": "자동화 상담을 받고 싶습니다.",
"source": "landing_page"
}
하지만 중요한 것은 위 예시와 똑같이 들어올 것이라고 가정하지 않는 것입니다.
서비스에 따라 다음처럼 구조가 달라질 수 있어요.
예상
name
실제
body.name
또는
full_name
그래서 Webhook에서는 Output을 먼저 확인한 뒤 다음 노드를 만드는 순서가 중요합니다.
Webhook 테스트는 이 순서가 가장 안전합니다
-
Webhook 노드 추가
Test URL과 Production URL을 확인합니다. -
Test URL 대기 상태 만들기
테스트 요청을 받을 준비를 합니다. -
외부에서 샘플 데이터 전송
테스트 폼, Postman, curl 등으로 데이터를 보냅니다. -
Output 확인
실제 필드 이름과 데이터 구조를 확인합니다. -
Set 노드 연결
필요한 값만 알아보기 쉬운 이름으로 정리합니다. -
운영 전환
테스트가 끝나면 워크플로우를 활성화하고 Production URL을 실제 서비스에 등록합니다.
Test URL에서는 되는데 실제 서비스에서는 안 된다면
이 경우에는 워크플로우를 처음부터 다시 만들 필요가 없습니다.
다음 세 가지를 먼저 확인해보세요.
1. 실제 서비스에 Test URL을 넣지 않았는가
운영 중에는 Production URL을 사용해야 합니다.
2. 워크플로우가 활성화되어 있는가
Production URL을 사용하더라도 운영 상태가 아니라면 외부 요청이 정상 처리되지 않을 수 있습니다.
3. HTTP Method가 맞는가
외부 서비스가 POST로 데이터를 보내는데 Webhook 노드를 GET으로 설정했다면 요청이 맞지 않습니다.
외부 서비스가 어떤 HTTP Method를 사용하는지 확인하세요.
상담 신청 자동화로 확장하면
Webhook 단독으로 끝나는 경우는 많지 않아요.
데이터를 받은 뒤 필요한 작업을 이어붙이는 것이 핵심입니다.
Webhook → Set → Google Sheets → Telegram
역할을 나누면 이렇게 됩니다.
| 노드 | 역할 |
|---|---|
| Webhook | 외부 신청 데이터 수신 |
| Set | 필요한 값만 정리 |
| Google Sheets | 신청 정보 기록 |
| Telegram | 담당자 알림 |
처음부터 네 개를 모두 연결할 필요는 없습니다.
Webhook → Output 확인 → Set까지만 먼저 만들고, 정상 작동하면 저장과 알림 노드를 추가하는 편이 문제를 찾기 쉽습니다.
데이터가 들어오지 않을 때 확인하는 순서
- URL이 Test인지 Production인지 확인하기
- Production URL이면 워크플로우 활성화 여부 확인하기
- GET·POST 등 HTTP Method 확인하기
- Executions에 요청 기록이 있는지 확인하기
- Webhook Output에 데이터가 실제로 들어왔는지 확인하기
Webhook은 공개 주소처럼 다루면 안 됩니다
Webhook은 외부에서 n8n으로 들어오는 통로입니다.
따라서 캡처나 블로그 글에 실제 Production URL을 그대로 노출하지 않는 것이 좋습니다.
- 실습은 샘플 데이터로 진행하기
- Webhook URL을 공개하지 않기
- 고객 이름·전화번호·이메일을 테스트에 사용하지 않기
- Execution 기록에 개인정보가 남을 수 있음을 확인하기
- 필요하다면 인증 방식도 추가 검토하기
Webhook을 이해할 때 기억할 세 가지
복잡한 설정을 모두 외우기보다 아래 세 가지부터 기억하면 됩니다.
- Webhook은 외부 이벤트가 자동화를 시작하는 트리거
- Test URL과 Production URL은 목적이 다름
- 다음 노드를 만들기 전에 Output을 먼저 확인
Webhook을 이해하면 n8n 자동화는 단순한 예약 실행을 넘어 실제 외부 서비스와 연결되는 단계로 확장됩니다.
다음 글에서는 Webhook이나 Set 노드에서 받은 데이터를 Google Sheets에 새 행으로 저장하는 방법을 살펴볼게요.
※ 이 글은 n8n 비개발자 자동화 시리즈 13화입니다. n8n 기능과 메뉴는 버전에 따라 달라질 수 있으므로 실제 사용 시 공식 문서를 함께 확인해주세요.
참고자료
- n8n Docs, Webhook node
- n8n Docs, How n8n structures data
- n8n Docs, Edit Fields (Set) node
- n8n Docs, Executions
- n8n Docs, Securing n8n