G: 안녕하세요, 자동화와 노코드 도구에 관심이 많으신 여러분! 🚀 오늘은 n8n의 핵심 중의 핵심, 바로 ‘If 노드’에 대해 초보자도 쉽게 이해하고 활용할 수 있도록 자세히 설명해 드릴 거예요. If 노드는 워크플로우의 흐름을 제어하는 데 필수적인 요소로, 여러분의 자동화를 훨씬 더 똑똑하고 유연하게 만들어 줄 마법 같은 존재랍니다. ✨
이 글을 통해 If 노드의 기본 개념부터 심화 활용까지, 10가지 실제 시나리오와 함께 생생하게 배워볼까요?
1. n8n If 노드, 왜 중요할까요? 🤔
n8n(n8n.io)은 다양한 웹 서비스와 앱을 연결하여 작업을 자동화하는 오픈 소스 워크플로우 자동화 도구입니다. 이 과정에서 우리는 단순히 순서대로 작업을 실행하는 것을 넘어, 특정 조건에 따라 다른 행동을 취해야 할 때가 많아요. 예를 들어, “이메일 제목에 ‘긴급’이라는 단어가 있으면 슬랙으로 알림을 보내고, 아니면 일반 처리하라”와 같은 조건부 로직 말이죠.
바로 이때 If 노드가 등장합니다! If 노드는 입력된 데이터(정보)를 기반으로 특정 조건을 검사하고, 그 조건이 참(True)인지 거짓(False)인지에 따라 워크플로우의 흐름을 두 갈래로 나누는 역할을 해요. 마치 길을 가다가 “오른쪽으로 갈까? 왼쪽으로 갈까?”를 결정하는 이정표와 같다고 생각하시면 됩니다. 🧭
2. If 노드의 기본 구조 파헤치기 🔬
n8n 워크플로우에 If 노드를 추가하면, 다음과 같은 주요 설정들을 볼 수 있습니다.
2.1. 입력(Input) 데이터: 무엇을 검사할 것인가?
If 노드는 이전 노드에서 넘어온 데이터를 검사합니다. 예를 들어, Gmail 노드에서 받은 이메일의 제목, 본문, 발신자 등의 정보가 입력 데이터가 될 수 있죠. 우리는 이 데이터 중 특정 값({{ $json.propertyName }}
형태로 참조)을 선택하여 조건을 걸게 됩니다.
2.2. 조건(Conditions) 설정: 어떤 기준으로 판단할 것인가?
이 부분이 If 노드의 핵심입니다. 조건을 설정할 때는 주로 세 가지 요소를 조합합니다.
- 값 1 (Value 1): 검사할 대상 값입니다. 주로 이전 노드에서 넘어온 데이터를 표현식(Expression)으로 참조합니다. 예:
{{ $json.emailSubject }}
(이메일 제목) - 연산자 (Operation): 값 1과 값 2를 어떻게 비교할지 결정합니다. 다양한 연산자가 제공됩니다.
- 문자열(String):
Equals
(같음),Not Equals
(같지 않음),Contains
(포함),Starts With
(시작),Ends With
(끝),Is Empty
(비어있음),Is Not Empty
(비어있지 않음) 등 - 숫자(Number):
Equals
,Not Equals
,Greater Than
(보다 큼),Greater Than Or Equal
(크거나 같음),Less Than
(보다 작음),Less Than Or Equal
(작거나 같음) 등 - 불리언(Boolean):
Is True
(참),Is False
(거짓) - 날짜(Date):
After
(이후),Before
(이전),Between
(사이) 등 - 정규식(Regex): 특정 패턴 매칭 🔍
- 문자열(String):
- 값 2 (Value 2): 비교할 기준 값입니다. 직접 입력하거나, 또 다른 표현식으로 참조할 수 있습니다. 예:
"긴급"
,10000
,true
2.3. 논리 그룹 (AND / OR): 여러 조건을 조합하기 🤝
때로는 하나의 조건만으로는 부족할 수 있습니다. If 노드에서는 여러 조건을 AND
또는 OR
로 묶어 복합적인 판단을 내릴 수 있습니다.
- AND (모두 참): 모든 조건이 동시에 참이어야 전체 조건이 참이 됩니다. (예:
금액이 10000원 이상
AND주문 수량이 5개 이상
) - OR (하나라도 참): 여러 조건 중 하나라도 참이면 전체 조건이 참이 됩니다. (예:
주문 상태가 '취소됨'
OR주문 상태가 '환불됨'
)
2.4. 출력 (Output): 참(True)과 거짓(False) ➡️
조건을 설정하고 나면, If 노드는 두 개의 출력 브랜치(Branch)를 가집니다.
- True (참): 조건이 만족되었을 때 실행될 다음 노드를 연결합니다.
- False (거짓): 조건이 만족되지 않았을 때 실행될 다음 노드를 연결합니다.
3. n8n If 노드 10가지 활용 시나리오 (예시와 함께!) 💡
자, 이제 실생활과 업무에서 If 노드를 어떻게 활용할 수 있는지 10가지 시나리오를 통해 자세히 알아봅시다!
📌 시나리오 1: 중요 이메일 자동 분류 및 알림 📧
- 문제: 중요한 이메일이 너무 많아 놓치기 쉽고, 매번 수동으로 확인해야 합니다.
- 활용: 특정 키워드를 포함한 이메일만 슬랙으로 알림을 보내고, 나머지는 일반 받은 편지함으로 처리합니다.
- If 노드 설정:
- 값 1:
{{ $json.subject }}
(이메일 제목) - 연산자:
String: Contains
- 값 2:
"긴급"
또는"중요"
- 값 1:
- 워크플로우:
Gmail 노드
->If 노드
True
브랜치:Slack 노드
(긴급 알림 발송)False
브랜치: (일반 이메일 처리, 필요시 다른 노드 연결)
📌 시나리오 2: 리드(Lead) 자격 검증 및 할당 💰
- 문제: 들어오는 잠재 고객(리드) 중 가치가 높은 리드를 자동으로 구분하여 적절한 영업 담당자에게 배정하고 싶습니다.
- 활용: 리드의 예상 예산이 일정 금액 이상이거나 특정 산업군에 속하는지 확인합니다.
- If 노드 설정:
- 조건 그룹 1 (AND):
- 값 1:
{{ $json.budget }}
(예상 예산) / 연산자:Number: Greater Than Or Equal
/ 값 2:100000
(10만 원) - 값 1:
{{ $json.industry }}
(산업군) / 연산자:String: Equals
/ 값 2:"IT"
- 값 1:
- 조건 그룹 1 (AND):
- 워크플로우:
웹훅(폼 제출)
->If 노드
True
브랜치:CRM 노드
(고가치 리드로 할당)False
브랜치:CRM 노드
(일반 리드로 할당)
📌 시나리오 3: 주문 금액에 따른 배송 정책 적용 📦
- 문제: 주문 금액이 일정 수준 이상이면 무료배송을 적용하고, 그렇지 않으면 표준 배송을 적용해야 합니다.
- 활용: 총 주문 금액을 확인하여 무료배송 여부를 결정합니다.
- If 노드 설정:
- 값 1:
{{ $json.totalAmount }}
(총 주문 금액) - 연산자:
Number: Greater Than Or Equal
- 값 2:
50000
(5만 원)
- 값 1:
- 워크플로우:
전자상거래 플랫폼 노드 (새 주문)
->If 노드
True
브랜치:배송 시스템 노드
(무료 배송 옵션)False
브랜치:배송 시스템 노드
(표준 배송 옵션)
📌 시나리오 4: 콘텐츠 게시 상태에 따른 알림 ✍️
- 문제: 블로그 글이 ‘게시됨’ 상태로 변경되면 자동으로 소셜 미디어에 공유하고 싶습니다.
- 활용: 콘텐츠의 상태 값을 확인하여 게시 여부를 판단합니다.
- If 노드 설정:
- 값 1:
{{ $json.status }}
(콘텐츠 상태) - 연산자:
String: Equals
- 값 2:
"published"
- 값 1:
- 워크플로우:
CMS 노드 (콘텐츠 업데이트)
->If 노드
True
브랜치:Twitter 노드
,Facebook 노드
(소셜 미디어 공유)False
브랜치: (아무것도 하지 않음 또는 다른 처리)
📌 시나리오 5: 주말/평일 알림 분리 🗓️
- 문제: 주말에는 업무 관련 알림을 보내고 싶지 않거나, 다른 내용의 알림을 보내고 싶습니다.
- 활용: 현재 요일을 확인하여 주말인지 평일인지 구분합니다.
- If 노드 설정:
- 값 1:
{{ $now.getDay() }}
(현재 요일을 숫자로 가져옴, 0=일요일, 1=월요일…) - 연산자:
Number: Equals
- 값 2:
(일요일)
- OR 그룹:
- 값 1:
{{ $now.getDay() }}
- 연산자:
Number: Equals
- 값 2:
6
(토요일)
- 값 1:
- 값 1:
- 워크플로우:
스케줄 노드 (매일 실행)
->If 노드
True
브랜치:Slack 노드
(주말 특별 알림)False
브랜치:Slack 노드
(평일 업무 알림)
📌 시나리오 6: 첨부 파일 유형별 처리 📂
- 문제: 이메일이나 폼을 통해 받은 첨부 파일 중 PDF 파일만 따로 저장하고 싶습니다.
- 활용: 첨부 파일의 확장자를 확인하여 PDF 파일인지 판단합니다.
- If 노드 설정:
- 값 1:
{{ $json.fileName }}
(첨부 파일명) - 연산자:
String: Ends With
- 값 2:
".pdf"
- 값 1:
- 워크플로우:
이메일 노드 (새 첨부 파일)
->If 노드
True
브랜치:Google Drive 노드
(PDF 파일 저장)False
브랜치: (다른 유형의 파일 처리 또는 무시)
📌 시나리오 7: 사용자 역할에 따른 접근 권한 제어 👑
- 문제: 웹사이트나 시스템에 로그인하려는 사용자의 역할에 따라 다른 페이지나 기능을 보여주고 싶습니다.
- 활용: 사용자 데이터의 ‘역할(role)’ 값을 확인하여 관리자 여부를 판단합니다.
- If 노드 설정:
- 값 1:
{{ $json.userRole }}
(사용자 역할) - 연산자:
String: Equals
- 값 2:
"admin"
- 값 1:
- 워크플로우:
인증 노드 (로그인 성공)
->If 노드
True
브랜치:웹사이트 리디렉션 노드
(관리자 페이지)False
브랜치:웹사이트 리디렉션 노드
(일반 사용자 페이지)
📌 시나리오 8: 폼 제출 시 필수 필드 유효성 검사 📝
- 문제: 사용자로부터 받은 폼 데이터 중 필수 필드가 누락되었는지 자동으로 확인하고, 누락 시 알림을 보내고 싶습니다.
- 활용: 특정 필드의 값이 비어있는지 검사합니다.
- If 노드 설정:
- 조건 그룹 1 (AND):
- 값 1:
{{ $json.name }}
/ 연산자:String: Is Not Empty
- 값 1:
{{ $json.email }}
/ 연산자:String: Is Not Empty
- 값 1:
{{ $json.message }}
/ 연산자:String: Is Not Empty
- 값 1:
- 조건 그룹 1 (AND):
- 워크플로우:
웹훅 (폼 제출)
->If 노드
True
브랜치:데이터베이스 노드
(유효한 데이터 저장)False
브랜치:이메일 노드
(폼 작성자에게 오류 알림),Slack 노드
(내부 담당자에게 알림)
📌 시나리오 9: API 응답 상태 코드에 따른 오류 처리 ✅/❌
- 문제: 외부 API를 호출한 후 응답이 성공(200 OK)이 아닌 경우에만 오류 알림을 받고 싶습니다.
- 활용: API 응답의 상태 코드(Status Code)를 확인합니다.
- If 노드 설정:
- 값 1:
{{ $json.statusCode }}
(API 응답 상태 코드) - 연산자:
Number: Not Equals
- 값 2:
200
- 값 1:
- 워크플로우:
HTTP Request 노드 (API 호출)
->If 노드
True
브랜치:Slack 노드
또는이메일 노드
(API 오류 알림)False
브랜치:데이터베이스 노드
(성공적인 API 응답 처리)
📌 시나리오 10: 고객 지원 문의 내용 키워드 분석 💬
- 문제: 고객 지원 채널로 들어오는 문의 중 ‘환불’ 또는 ‘취소’와 같은 특정 키워드를 포함하는 문의를 우선 처리하고 싶습니다.
- 활용: 고객 문의 내용에서 특정 키워드가 포함되어 있는지 검사합니다.
- If 노드 설정:
- 값 1:
{{ $json.customerMessage }}
(고객 문의 내용) - 연산자:
String: Contains
- 값 2:
"환불"
- OR 그룹:
- 값 1:
{{ $json.customerMessage }}
- 연산자:
String: Contains
- 값 2:
"취소"
- 값 1:
- 값 1:
- 워크플로우:
고객 지원 플랫폼 노드 (새 문의)
->If 노드
True
브랜치:CRM 노드
(우선순위 높게 설정),Slack 노드
(긴급 알림)False
브랜치:CRM 노드
(일반 문의로 처리)
4. If 노드 활용 시 유용한 팁 ✨
- 간단하게 시작하기: 처음부터 복잡한 조건을 만들기보다, 간단한 조건으로 시작하여 점차 확장해나가는 것이 좋습니다.
- 테스트 또 테스트! 🧪 워크플로우를 활성화하기 전에, 반드시 ‘테스트 워크플로우’ 기능을 사용하여 If 노드가 의도한 대로 작동하는지 확인하세요. 다양한 케이스의 더미 데이터를 넣어보는 것이 중요합니다.
- 명확한 이름 사용: If 노드 이름이나 조건 설명을 명확하게 작성하여 나중에 워크플로우를 수정하거나 다른 사람이 볼 때 쉽게 이해할 수 있도록 하세요. (예: “만약_주문금액_5만이상” 대신 “주문 금액이 5만원 이상이면”)
- 중첩 If 노드 vs. Switch 노드: 복잡한 다중 분기가 필요할 때는 If 노드를 여러 개 중첩할 수도 있지만, 가독성이 떨어질 수 있습니다. 이럴 때는
Switch 노드
를 사용하여 하나의 입력 값에 따라 여러 개의 분기를 깔끔하게 처리하는 것이 더 효과적일 수 있습니다. If 노드가 참/거짓 이분법이라면, Switch 노드는 ‘A일 때’, ‘B일 때’, ‘C일 때’처럼 다중 선택에 가깝습니다.
5. 마무리하며 🙏
If 노드는 n8n 자동화의 핵심적인 ‘두뇌’ 역할을 합니다. 단순히 작업을 순서대로 실행하는 것을 넘어, 데이터의 흐름을 제어하고 스마트한 의사결정을 내릴 수 있게 해주죠. 오늘 함께 살펴본 10가지 시나리오를 통해 If 노드의 무궁무진한 활용 가능성을 엿보셨기를 바랍니다.
이제 여러분의 워크플로우에 If 노드를 적용하여, 더 똑똑하고 효율적인 자동화를 만들어보세요! 궁금한 점이 있다면 언제든지 n8n 커뮤니티나 공식 문서를 참고하시면 큰 도움이 될 거예요.
행복한 자동화 여정 되시길 바랍니다! 🌟