G: 안녕하세요, 자동화와 노코드/로우코드에 관심 많으신 여러분! 🚀 복잡한 비즈니스 프로세스를 자동화할 때, 단순히 순차적으로 작업을 처리하는 것을 넘어, 특정 조건에 따라 워크플로우의 흐름을 다르게 가져가야 할 때가 많습니다. 마치 교통 신호등처럼, 데이터의 내용에 따라 워크플로우를 “분기” 시키는 것이죠.
이러한 지능적인 의사결정의 핵심에 바로 n8n의 Switch 노드가 있습니다. 오늘은 n8n Switch 노드가 무엇인지부터, 어떻게 설정하는지, 그리고 실생활에서 바로 적용할 수 있는 10가지 활용 예시까지, 모든 것을 자세히 파헤쳐 보겠습니다! 💡
🧠 n8n Switch 노드란 무엇인가요?
n8n Switch 노드는 워크플로우 내에서 “조건부 로직”을 구현할 때 사용하는 필수 노드입니다. 쉽게 말해, 특정 값이나 조건에 따라 워크플로우를 여러 개의 다른 경로로 분기시키는 역할을 합니다. 마치 우리 뇌가 다양한 정보를 분석하여 다음 행동을 결정하는 것처럼, Switch 노드는 들어오는 데이터를 분석하여 어떤 경로로 워크플로우를 진행할지 결정하는 “워크플로우의 두뇌”라고 할 수 있습니다.
🤔 왜 중요한가요?
- 유연성 증가: 단일 워크플로우로 다양한 시나리오를 처리할 수 있게 해줍니다.
- 효율성 향상: 불필요한 작업이 실행되는 것을 방지하고, 필요한 작업만 선택적으로 수행합니다.
- 복잡한 로직 구현: if/else if/else 와 같은 복잡한 조건문을 코딩 없이 시각적으로 구현할 수 있습니다.
- 오류 처리: 특정 조건에 따라 오류 처리 로직을 분기하여 안정성을 높일 수 있습니다.
✨ Switch 노드의 주요 기능 및 설정 살펴보기
Switch 노드는 직관적이지만 강력한 기능을 제공합니다. 핵심 설정 요소들을 하나씩 살펴보겠습니다.
1. 첫 번째 값 (Value 1) 🎯
이것은 Switch 노드가 평가할 “기준이 되는 값”입니다. 이전 노드에서 넘어온 데이터(JSON)에서 특정 필드의 값을 선택하거나, 복잡한 표현식(Expression)을 사용하여 값을 만들 수 있습니다.
- 예시:
{{ $json.orderStatus }}
(이전 노드에서 넘어온 데이터 중orderStatus
필드의 값) - 예시:
{{ $json.items.length }}
(주문 상품 개수) - 예시:
{{ parseInt($json.amount) + 100 }}
(금액에 100을 더한 값)
2. 모드 (Mode) 🚦
Switch 노드가 조건을 평가하는 방식을 정의합니다. 두 가지 주요 모드가 있습니다.
-
값을 비교할 값 정의 (Define values to compare against):
- 가장 일반적인 모드입니다.
첫 번째 값
이 미리 정의된두 번째 값
과 일치하는지 또는 특정 관계(같음, 포함, 시작 등)에 있는지 확인합니다. - 예를 들어,
첫 번째 값
이{{ $json.status }}
이고,두 번째 값
으로"Completed"
를 정의한 후equals
연산자를 사용하면,status
가 “Completed”인 경우를 걸러낼 수 있습니다. - 여러 조건을 추가하여
Case 1
,Case 2
등으로 분기할 수 있습니다.
- 가장 일반적인 모드입니다.
-
평가할 표현식 정의 (Define expressions to evaluate):
- 더 복잡한 논리를 구현할 때 사용합니다.
첫 번째 값
을 입력하는 대신, 직접 자바스크립트 표현식을 입력하여 평가합니다. 이 표현식이true
또는false
를 반환해야 합니다. - 예를 들어,
{{ $json.amount > 10000 && $json.currency == "KRW" }}
와 같이 두 가지 조건을 동시에 만족하는 경우를 만들 수 있습니다. - 이 모드에서는
첫 번째 값
과두 번째 값
이 사라지고, 오직표현식 (Expression)
만 남습니다. 표현식이true
이면 해당 출력으로 연결됩니다.
- 더 복잡한 논리를 구현할 때 사용합니다.
3. 조건 (Conditions) 📜
값을 비교할 값 정의
모드에서 사용하며, 첫 번째 값
과 두 번째 값
을 어떤 연산자로 비교할지 정의합니다.
- 두 번째 값 (Value 2):
첫 번째 값
과 비교할 대상입니다. 직접 입력하거나, 다른 데이터 표현식을 사용할 수 있습니다. - 연산자 (Operator):
==
(같음): 두 값이 정확히 같을 때.!=
(같지 않음): 두 값이 다를 때.contains
(포함):첫 번째 값
이두 번째 값
을 포함할 때 (문자열).starts with
(시작):첫 번째 값
이두 번째 값
으로 시작할 때 (문자열).ends with
(끝):첫 번째 값
이두 번째 값
으로 끝날 때 (문자열).>
(보다 큼):첫 번째 값
이두 번째 값
보다 클 때 (숫자).=
(크거나 같음), “ (보다 큼)- 출력:
(👉 VIP 고객 처리 워크플로우)
- 출력:
- 조건 2:
- 두 번째 값:
50000
(숫자) - 연산자:
>=
(크거나 같음) - 출력:
1
(👉 일반 할인 적용 워크플로우)
- 두 번째 값:
- 기본 출력: (👉 기본 주문 처리)
- 팁/주의사항: 숫자를 비교할 때는 문자열로 인식되지 않도록 주의하세요.
totalAmount
가 문자열이라면{{ parseInt($json.totalAmount) }}
와 같이parseInt()
를 사용하여 숫자로 변환해야 합니다.
3. 고객 문의 유형별 담당자 자동 배정 📞
- 시나리오: 고객 지원 폼을 통해 접수된 문의를 유형에 따라 적절한 담당 팀에 자동 배정하고 싶습니다.
- Switch 노드 설정:
- 첫 번째 값:
{{ $json.queryType }}
(예: “결제”, “배송”, “기술”) - 모드: 값을 비교할 값 정의
- 조건 1:
- 두 번째 값:
"결제"
- 연산자:
==
(같음) - 출력:
(👉 재무/결제팀 알림)
- 두 번째 값:
- 조건 2:
- 두 번째 값:
"배송"
- 연산자:
==
(같음) - 출력:
1
(👉 물류/배송팀 알림)
- 두 번째 값:
- 조건 3:
- 두 번째 값:
"기술"
- 연산자:
==
(같음) - 출력:
2
(👉 기술 지원팀 알림)
- 두 번째 값:
- 기본 출력: (👉 일반 고객 지원팀 알림)
- 첫 번째 값:
- 팁/주의사항: 미리 정의된 드롭다운 선택지에서 오는 데이터인 경우
==
연산자가 가장 효과적입니다.
4. 파일 확장자에 따른 저장 경로 분류 📁
- 시나리오: 특정 폴더에 업로드되는 파일을 확장자에 따라 다른 클라우드 스토리지 또는 폴더에 자동으로 분류하여 저장하고 싶습니다.
- Switch 노드 설정:
- 첫 번째 값:
{{ $json.fileName }}
(파일 이름, 예:document.pdf
) - 모드: 값을 비교할 값 정의
- 조건 1:
- 두 번째 값:
".pdf"
- 연산자:
ends with
- 출력:
(👉 PDF 아카이브 폴더)
- 두 번째 값:
- 조건 2:
- 두 번째 값:
".jpg"
- 연산자:
ends with
- 출력:
1
(👉 이미지 갤러리 폴더)
- 두 번째 값:
- 조건 3:
- 두 번째 값:
".xlsx"
- 연산자:
ends with
- 출력:
2
(👉 스프레드시트 폴더)
- 두 번째 값:
- 기본 출력: (👉 기타 파일 저장 폴더)
- 첫 번째 값:
- 팁/주의사항:
ends with
를 사용하면 파일 이름이 길어도 확장자만으로 정확히 분류할 수 있습니다.
5. 결제 수단에 따른 추가 처리 💳
- 시나리오: 고객이 선택한 결제 수단(신용카드, 계좌이체, 간편결제)에 따라 결제 완료 후 추가적인 이벤트를 발생시키고 싶습니다.
- Switch 노드 설정:
- 첫 번째 값:
{{ $json.paymentMethod }}
- 모드: 값을 비교할 값 정의
- 조건 1:
- 두 번째 값:
"Credit Card"
- 연산자:
==
(같음) - 출력:
(👉 카드사 포인트 적립 API 호출)
- 두 번째 값:
- 조건 2:
- 두 번째 값:
"Bank Transfer"
- 연산자:
==
(같음) - 출력:
1
(👉 현금 영수증 발급 워크플로우)
- 두 번째 값:
- 조건 3:
- 두 번째 값:
"KakaoPay"
- 연산자:
==
(같음) - 출력:
2
(👉 카카오페이 알림톡 발송)
- 두 번째 값:
- 기본 출력: (👉 기본 결제 완료 알림)
- 첫 번째 값:
- 팁/주의사항: 특정 결제 수단이 예상되는 값이 여러 개일 경우
contains
를 고려하거나, 여러==
조건을 조합할 수도 있습니다.
6. 뉴스레터 구독자 세분화 📰
- 시나리오: 신규 뉴스레터 구독자를 설문조사 응답(예: 관심 분야)에 따라 다른 메일링 리스트에 추가하고 싶습니다.
- Switch 노드 설정:
- 첫 번째 값:
{{ $json.interestField }}
(예: “마케팅”, “개발”, “디자인”) - 모드: 값을 비교할 값 정의
- 조건 1:
- 두 번째 값:
"마케팅"
- 연산자:
==
(같음) - 출력:
(👉 마케팅 뉴스레터 리스트 추가)
- 두 번째 값:
- 조건 2:
- 두 번째 값:
"개발"
- 연산자:
==
(같음) - 출력:
1
(👉 개발 뉴스레터 리스트 추가)
- 두 번째 값:
- 기본 출력: (👉 전체 뉴스레터 리스트 추가)
- 첫 번째 값:
- 팁/주의사항:
is empty
연산자를 활용하여 관심 분야를 선택하지 않은 구독자도 별도로 처리할 수 있습니다.
7. 소셜 미디어 게시물 키워드 필터링 💬
- 시나리오: 특정 해시태그나 키워드가 포함된 소셜 미디어 게시물만 수집하여 분석하거나 알림을 받고 싶습니다.
- Switch 노드 설정:
- 첫 번째 값:
{{ $json.postContent }}
(게시물 내용) - 모드: 값을 비교할 값 정의
- 조건 1:
- 두 번째 값:
"#n8n"
- 연산자:
contains
- 출력:
(👉 n8n 관련 게시물 DB 저장)
- 두 번째 값:
- 조건 2:
- 두 번째 값:
"자동화"
- 연산자:
contains
- 출력:
1
(👉 자동화 관련 게시물 분석)
- 두 번째 값:
- 기본 출력: (👉 무시)
- 첫 번째 값:
- 팁/주의사항: 여러 키워드를 하나의 조건으로 묶고 싶다면
Define expressions to evaluate
모드에서{{ $json.postContent.includes("키워드1") || $json.postContent.includes("키워드2") }}
와 같이 OR (||
) 연산자를 사용할 수 있습니다.
8. HTTP 요청 응답 코드에 따른 분기 처리 🌐
- 시나리오: 외부 API 호출 후 반환되는 HTTP 응답 코드에 따라 성공, 클라이언트 오류, 서버 오류 등으로 워크플로우를 분기하여 적절히 처리하고 싶습니다.
- Switch 노드 설정:
- 첫 번째 값:
{{ $json.statusCode }}
(HTTP Request 노드의 응답 코드) - 모드: 값을 비교할 값 정의
- 조건 1:
- 두 번째 값:
200
- 연산자:
==
(같음) - 출력:
(👉 성공 처리 로직)
- 두 번째 값:
- 조건 2:
- 두 번째 값:
400
- 연산자:
>=
(크거나 같음) - 두 번째 값 (또 다른 조건 추가):
499
- 연산자:
= 400 && $json.statusCode <= 499 }}
와 같이 숫자 범위를 명확히 지정하여 클라이언트 오류를 잡을 수 있습니다.
- 두 번째 값:
- 첫 번째 값:
9. 데이터 유효성 검사 및 오류 처리 ❌
- 시나리오: 들어오는 데이터에 필수 필드가 누락되었는지 확인하고, 누락된 경우 오류를 발생시키거나 알림을 보냅니다.
- Switch 노드 설정:
- 첫 번째 값:
{{ $json.requiredField }}
- 모드: 값을 비교할 값 정의
- 조건 1:
- 두 번째 값: (비워 둠)
- 연산자:
is empty
- 출력:
(👉 데이터 누락 오류 알림)
- 기본 출력: (👉 정상 데이터 처리)
- 첫 번째 값:
- 팁/주의사항: 여러 필드를 동시에 검사하려면
Define expressions to evaluate
모드에서{{ $json.field1 != null && $json.field2 != null && $json.field3 != null }}
와 같이&&
연산자로 연결할 수 있습니다.
10. 사용자 역할에 따른 권한 부여 🧑💻
- 시나리오: 로그인 시스템에서 사용자 역할(관리자, 일반 사용자, 게스트)에 따라 접근 가능한 기능이나 페이지를 다르게 설정합니다.
- Switch 노드 설정:
- 첫 번째 값:
{{ $json.userRole }}
- 모드: 값을 비교할 값 정의
- 조건 1:
- 두 번째 값:
"Admin"
- 연산자:
==
(같음) - 출력:
(👉 관리자 대시보드 접근 허용)
- 두 번째 값:
- 조건 2:
- 두 번째 값:
"User"
- 연산자:
==
(같음) - 출력:
1
(👉 일반 사용자 대시보드 접근 허용)
- 두 번째 값:
- 기본 출력: (👉 게스트 페이지 또는 접근 거부)
- 첫 번째 값:
- 팁/주의사항: 대소문자 구분이 중요할 수 있으므로
Ignore Case
옵션을 적절히 활용하세요. 사용자 역할이 여러 개 부여될 수 있다면, 배열에 특정 역할이contains
되는지 확인하는 복합적인 로직이 필요할 수 있습니다.
✅ Switch 노드 사용 팁!
- 출력 라벨링: 각 조건에 해당하는 출력 포트에 마우스를 올리면 라벨을 변경할 수 있습니다. (예:
0: VIP 주문
,1: 일반 주문
) 이렇게 하면 워크플로우를 이해하기 훨씬 쉬워집니다. - 우선순위: Switch 노드는 위에서부터 아래로 조건을 평가합니다. 즉, 첫 번째 조건이 충족되면 그 경로로 진행되고, 아래의 다른 조건들은 더 이상 평가되지 않습니다. 따라서 더 구체적이거나 중요한 조건을 위에 배치하는 것이 좋습니다.
- 복합 조건:
Define expressions to evaluate
모드에서는AND (&&)
,OR (||)
,NOT (!)
등의 논리 연산자를 사용하여 매우 복잡한 조건식을 만들 수 있습니다. - 기본 출력의 중요성: 위에서 강조했듯이,
Default
출력은 워크플로우의 안정성을 보장하는 중요한 안전망입니다. 항상 연결하여 예측 불가능한 상황에 대비하세요. - 테스트 또 테스트! 워크플로우를 실제 데이터로 여러 번 실행하여 모든 조건이 예상대로 작동하는지 꼼꼼히 확인하는 것이 중요합니다.
마무리하며 🌟
n8n Switch 노드는 단순한 자동화를 넘어, 여러분의 워크플로우에 진정한 “지능”을 부여하는 강력한 도구입니다. 이 노드를 마스터하면 비즈니스 프로세스를 훨씬 더 유연하고 효율적으로 만들 수 있습니다. 오늘 소개해 드린 10가지 예시를 바탕으로 여러분의 워크플로우에 Switch 노드를 적극적으로 적용해 보세요.
자동화의 세계는 무궁무진합니다. n8n Switch 노드와 함께라면 여러분의 아이디어를 현실로 만드는 것이 더욱 쉬워질 것입니다! 🚀
궁금한 점이나 더 알고 싶은 활용 팁이 있다면 언제든지 댓글로 남겨주세요! 😊