안녕하세요 n8n 사용자 여러분! 💡
워크플로우 자동화를 하다 보면, 단순히 순서대로 작업을 처리하는 것만으로는 부족할 때가 많습니다. 특정 조건에 따라 다른 작업을 수행해야 하거나, 데이터의 내용에 따라 흐름을 변경해야 할 때가 그렇죠. 예를 들어, “이메일 제목에 ‘긴급’이 포함되어 있으면 슬랙으로 알림을 보내고, 그렇지 않으면 일반 메일함으로 이동”과 같은 로직이 필요할 때 말이죠.
이럴 때 n8n의 핵심적인 노드 중 하나인 Condition 노드가 빛을 발합니다. 오늘은 Condition 노드가 무엇인지, 어떻게 사용하는지, 그리고 다양한 활용 예시와 팁을 자세히 알아보겠습니다. 이 노드를 마스터하면 여러분의 n8n 워크플로우는 한 단계 더 진화할 것입니다! ✨
1. Condition 노드란 무엇인가요? 🤔
Condition 노드는 이름 그대로 ‘조건’을 평가하여 워크플로우의 흐름을 분기(branch)시키는 역할을 합니다. 마치 프로그래밍 언어의 if-else
문과 같다고 생각하시면 됩니다.
들어오는 데이터를 특정 조건(예: 값 일치, 포함 여부, 숫자 크기 비교 등)에 따라 평가한 후, 그 결과가 참(True)
이면 특정 경로로 워크플로우를 진행하고, 거짓(False)
이면 다른 경로로 진행하도록 만들어 줍니다.
- 입력 (Input): 이전 노드로부터 전달받은 데이터
- 설정 (Configuration):
- Value 1: 비교할 대상이 되는 값 (주로 이전 노드의 데이터에서 가져옴)
- Operation: 어떤 방식으로 비교할지 (같음, 다름, 포함, 크다, 작다 등)
- Value 2: 비교 기준이 되는 값 (고정 값, 또는 다른 데이터에서 가져옴)
- 출력 (Output):
- True (또는 Success): 조건이 참일 때 연결된 노드
- False (또는 Failure): 조건이 거짓일 때 연결된 노드
2. Condition 노드 사용법 (단계별 가이드) 🛠️
Condition 노드를 워크플로우에 적용하는 것은 매우 직관적입니다. 다음 단계를 따라해 보세요.
1단계: Condition 노드 추가 ➕
워크플로우 편집기에서 +
버튼을 클릭한 후, Condition
을 검색하여 워크플로우에 추가합니다.
2단계: 입력 데이터 연결 ➡️
조건을 평가할 데이터가 들어오는 노드(예: Webhook, HTTP Request, Notion 등)에서 Condition 노드로 연결합니다.
3단계: 조건 설정하기 ⚙️
Condition 노드를 클릭하여 설정 패널을 엽니다.
-
Value 1 설정:
- 어떤 값을 기준으로 판단할지 지정합니다.
- 주로 이전 노드에서 넘어온 JSON 데이터의 특정 필드를 선택하게 됩니다.
Expressions
(표현식) 기능을 사용하여{{ $json.field_name }}
와 같이 데이터를 동적으로 가져올 수 있습니다.- 예시:
{{ $json.order_status }}
(주문 상태 필드),{{ $json.email_subject }}
(이메일 제목 필드)
-
Operation 선택:
- Value 1과 Value 2를 어떻게 비교할 것인지 드롭다운 메뉴에서 선택합니다.
- 주요 옵션은 아래 ‘주요 Operation 유형’에서 자세히 설명합니다.
- 예시:
Equals
(같음),Contains
(포함),Greater Than
(보다 큼)
-
Value 2 설정:
- Value 1과 비교할 기준 값을 입력합니다.
- 고정된 문자열, 숫자 등을 직접 입력할 수 있고, Value 1과 마찬가지로
Expressions
을 사용하여 동적으로 다른 데이터에서 가져올 수도 있습니다. - 예시:
"completed"
(문자열),100000
(숫자),{{ $node["Settings"].json.minimum_amount }}
(다른 노드에서 가져온 설정값)
4단계: 출력 노드 연결 🔗
- 조건이 참(True)일 때 실행할 다음 노드를 Condition 노드의 위쪽 출력 (True)에 연결합니다.
- 조건이 거짓(False)일 때 실행할 다음 노드를 Condition 노드의 아래쪽 출력 (False)에 연결합니다.
3. 주요 Operation 유형 (예시와 함께) 🎯
Condition 노드에서 가장 중요한 부분은 어떤 ‘Operation’을 선택하느냐에 따라 다양한 로직을 구현할 수 있다는 점입니다. 몇 가지 자주 사용되는 Operation을 살펴보겠습니다.
-
Equals
(=
) – 같음:- Value 1이 Value 2와 정확히 같은지 확인합니다.
- 예시:
{{ $json.user_type }}
Equals
"admin"
- (사용자 유형이 ‘admin’과 같으면 참)
-
Not Equals
(!=
) – 다름:- Value 1이 Value 2와 다른지 확인합니다.
- 예시:
{{ $json.country }}
Not Equals
"KR"
- (국가가 ‘KR’이 아니면 참)
-
Contains
– 포함:- Value 1 안에 Value 2가 포함되어 있는지 확인합니다. (대소문자 구분 없음)
- 예시:
{{ $json.email_subject }}
Contains
"알림"
🔔- (이메일 제목에 ‘알림’이라는 단어가 포함되어 있으면 참)
-
Not Contains
– 포함되지 않음:- Value 1 안에 Value 2가 포함되어 있지 않은지 확인합니다.
- 예시:
{{ $json.product_description }}
Not Contains
"재고 없음"
📦- (상품 설명에 ‘재고 없음’이 없으면 참)
-
Starts With
/Ends With
– 시작/끝 문자열:- Value 1이 특정 문자열로 시작하거나 끝나는지 확인합니다.
- 예시:
{{ $json.file_name }}
Ends With
".pdf"
📄- (파일 이름이 ‘.pdf’로 끝나면 참)
-
Greater Than
(>
) /Less Than
(<
) – 보다 크거나 작음:- 숫자 값을 비교할 때 사용합니다.
- 예시:
{{ $json.total_amount }}
Greater Than
50000
💰- (총 금액이 50,000보다 크면 참)
-
Is Empty
/Is Not Empty
– 비어있음/비어있지 않음:- Value 1이 null, undefined, 빈 문자열(
""
), 빈 배열([]
) 등 비어있는 상태인지 확인합니다. - 예시:
{{ $json.phone_number }}
Is Not Empty
📞- (전화번호 필드가 비어있지 않으면 참)
- Value 1이 null, undefined, 빈 문자열(
-
Regex
(정규표현식) – 고급 패턴 매칭:- 복잡한 문자열 패턴을 매칭할 때 사용합니다. 정규표현식 지식이 필요합니다.
- 예시:
{{ $json.input_string }}
Regex
^\d{3}-\d{4}-\d{4}$
- (입력 문자열이 '000-0000-0000' 형식의 전화번호이면 참)
4. 고급 활용 🌟
Condition 노드는 단독으로도 강력하지만, 다른 기능과 조합하면 더욱 복잡하고 유연한 로직을 구현할 수 있습니다.
1) 다중 조건 처리 (AND/OR)
하나의 Condition 노드 안에서 여러 개의 조건을 동시에 평가할 수 있습니다.
All True
(AND 로직): 추가된 모든 조건이 참일 때만 Condition 노드의 최종 결과가True
가 됩니다. (Condition Mode
를All True
로 설정)- 예시:
(주문상태가 '결제 완료' AND 상품 코드가 'VIP')
- 예시:
Any True
(OR 로직): 추가된 조건 중 하나라도 참이면 Condition 노드의 최종 결과가True
가 됩니다. (Condition Mode
를Any True
로 설정)- 예시:
(이메일 제목에 '긴급' OR 발신자가 '대표님')
- 예시:
2) Condition 노드 체이닝 🌳
더 복잡한 계층적 조건이 필요할 때는 여러 개의 Condition 노드를 연속으로 연결할 수 있습니다.
- 예시:
- 1단계 Condition:
{{ $json.user_type }}
Equals
"admin"
- True:
(다음 Condition 노드로 이동)
- False:
(일반 사용자 처리)
- True:
- 2단계 Condition (1단계 True에서 연결):
{{ $json.admin_level }}
Greater Than
5
- True:
(최고 관리자 권한 작업)
- False:
(일반 관리자 권한 작업)
- True:
- 1단계 Condition:
3) Value 2에 표현식 사용하기
Value 2에 고정된 값 대신 Expressions
을 사용하여 다른 노드의 결과를 동적으로 참조할 수 있습니다.
- 예시:
{{ $json.item_count }}
Greater Than
{{ $node["Threshold Settings"].json.minimum_order }}
- (주문 항목 수가 'Threshold Settings' 노드에서 가져온 최소 주문량보다 많으면 참)
5. 실전 예시 워크플로우 아이디어 💡
Condition 노드를 활용할 수 있는 실제 시나리오를 몇 가지 살펴보겠습니다.
시나리오 1: 이메일 자동 분류 및 알림 📧
새로운 이메일이 도착했을 때, 특정 키워드에 따라 슬랙으로 알림을 보내거나 특정 라벨을 붙이는 워크플로우입니다.
- 1. IMAP Email 또는 Gmail Trigger 노드: 새 이메일 도착 감지
- 2. Condition 노드 설정:
- Value 1:
{{ $json.subject }}
(이메일 제목) - Operation:
Contains
- Value 2:
"긴급"
또는"URGENT"
- Value 1:
- 3. True Output (조건 만족 시):
- Slack 노드: “긴급 이메일이 도착했습니다: {{$json.subject}}” 메시지 전송 🔔
- 4. False Output (조건 불만족 시):
- Gmail 노드: 이메일에 “일반” 라벨 추가 또는 특정 폴더로 이동 ➡️
시나리오 2: 고객 등급별 주문 처리 💳
쇼핑몰에서 주문이 들어왔을 때, 고객 등급에 따라 다른 할인율을 적용하거나 처리 우선순위를 변경하는 워크플로우입니다.
- 1. Webhook 노드: 새로운 주문 데이터 수신
- 2. Condition 노드 설정:
- Value 1:
{{ $json.customer_level }}
(고객 등급) - Operation:
Equals
- Value 2:
"VIP"
- Value 1:
- 3. True Output (VIP 고객):
- HTTP Request 노드: “VIP 전용 할인” API 호출 💸
- Email Send 노드: “VIP 고객님, 주문 감사합니다!” 메시지 발송 💌
- 4. False Output (일반 고객):
- HTTP Request 노드: “일반 할인” API 호출
- Email Send 노드: “고객님, 주문 감사합니다!” 메시지 발송
시나리오 3: 소셜 미디어 키워드 모니터링 📢
트위터나 다른 소셜 미디어에서 특정 키워드가 언급되었을 때, 긍정/부정 여부를 판단하여 담당자에게 알림을 보내는 워크플로우입니다.
- 1. Twitter Trigger 또는 RSS Feed 노드: 특정 키워드 트윗/포스트 감지
- 2. Condition 노드 설정:
- Value 1:
{{ $json.text }}
(트윗/포스트 내용) - Operation:
Contains
- Value 2:
"n8n"
또는"자동화"
- Value 1:
- 3. True Output (키워드 언급):
- (새로운) Sentiment Analysis 노드 (커스텀 또는 외부 API): 텍스트 감성 분석 📈
- Condition 노드 (중첩): 감성 분석 결과가 '부정적'인지 확인
- True (부정적): Slack/Email 노드: “부정적인 언급 발생: {{$json.text}}” 긴급 알림 🚨
- False (긍정/중립): Slack/Email 노드: “긍정/중립 언급 발생: {{$json.text}}” 일반 알림 ✅
- 4. False Output (키워드 미 언급):
- (아무것도 하지 않거나, 다른 로깅 노드 연결)
6. 팁 & 베스트 프랙티스 ✨
- 데이터 형식 이해하기:
Value 1
과Value 2
의 데이터 형식(문자열, 숫자, 불리언)이 올바른지 확인하세요. 예를 들어, 숫자를 문자열로 비교하면 예상치 못한 결과가 나올 수 있습니다. - 테스트는 필수!: Condition 노드를 설정한 후에는 반드시
Test Workflow
기능을 사용하여 조건이 제대로 작동하는지 확인해야 합니다. 예상치 못한 데이터가 들어왔을 때 어떻게 동작하는지도 테스트해보세요. - 정확한 경로 지정: JSON 데이터에서 값을 가져올 때는
{{ $json.field_name }}
또는{{ $node["NodeName"].json.field_name }}
과 같이 정확한 경로를 사용하는 것이 중요합니다. - 복잡하면 분리: 하나의 Condition 노드에 너무 많은
AND
나OR
조건을 넣기보다는, 여러 개의 Condition 노드를 연속으로 연결하여 가독성을 높이고 디버깅을 쉽게 만드는 것을 고려해 보세요. - 에러 처리도 고려: 조건에 맞지 않아
False
경로로 흐르거나, 예상치 못한 데이터가 들어와 아예 노드 자체가 실패할 경우에 대한 에러 처리 로직도 함께 구성하면 좋습니다. 🐛
결론 🎉
n8n의 Condition 노드는 워크플로우에 지능을 부여하고, 단순한 자동화를 넘어선 복잡하고 유연한 비즈니스 로직을 구현할 수 있게 해주는 핵심 도구입니다. 이 노드를 잘 활용하면 여러분의 워크플로우는 훨씬 더 강력하고 효율적으로 변모할 것입니다.
오늘 배운 내용을 바탕으로 여러분의 워크플로우에 Condition 노드를 적용하고, 데이터의 흐름을 원하는 대로 제어해 보세요! 궁금한 점이 있다면 언제든지 n8n 커뮤니티나 공식 문서를 참고해 주시고요.
Happy Automation! 💪 D