09. n8n에서 데이터는 어떻게 이동할까? 입력값과 출력값 이해하기
Set 노드에서 task_1 값을 만들었는데 Google Sheets 노드에서 그 값이 안 보여서 한참 찾았어요. 알고 보니 Output을 확인하는 법을 몰라서, 어떤 필드 이름으로 데이터가 넘어오는지 파악을 못 한 거였어요.
n8n을 배우다 보면 노드 연결은 어느 정도 됐는데, 값이 제대로 넘어가지 않거나 엉뚱한 데이터가 저장되는 상황을 만나요. 이때 막히는 이유는 대부분 하나예요. 데이터가 어떻게 이동하는지 감이 없는 거예요.
이번 글에서는 n8n에서 데이터가 노드 사이를 어떻게 흐르는지 정리해볼게요. Input·Output·item·JSON·Data Mapping, 처음엔 낯선 단어들이지만 실제로 Output 탭을 보면서 이해하면 어렵지 않아요.
데이터 흐름, 먼저 전체 그림 보기
n8n에서 자동화는 "데이터를 가져오고, 가공하고, 전달하는 과정"이에요. 노드를 연결하면 앞 노드의 Output이 다음 노드의 Input이 돼요.
Gmail Trigger가 이메일 데이터를 가져오면 → IF 노드가 조건을 확인하고 → Set 노드가 필요한 값만 정리하고 → Google Sheets가 그 값을 저장해요. 각 단계에서 "어떤 데이터가 들어오고, 어떤 데이터가 나가는가"가 핵심이에요.
Input과 Output — 데이터가 들어오고 나가는 구조
Input은 노드로 들어오는 데이터, Output은 노드가 처리 후 내보내는 데이터예요.
이 노드가 처리할 재료예요.
다음 노드의 Input이 돼요.
n8n 편집 화면에서 노드를 클릭하면 Input 탭과 Output 탭이 보여요. 노드를 실행한 뒤 Output 탭을 누르면 이 노드가 다음 노드로 넘기는 데이터가 뭔지 확인할 수 있어요.
노드를 하나 추가할 때마다 실행하고 Output을 확인하는 습관. 이게 n8n을 익히는 가장 빠른 방법이에요. 오류가 생겼을 때도 "어느 노드까지 데이터가 정상적으로 왔는가"를 Output으로 추적하면 원인을 찾기 쉬워요.
item — 데이터 하나의 단위
n8n에서 데이터는 item이라는 단위로 이동해요. item 하나는 데이터 한 건이에요. 이메일 자동화라면 이메일 한 통이 item 하나예요.
이메일 3개가 있는 상태에서 워크플로우를 실행했더니 구글시트에 행이 3개 생겼어요. 처음엔 당황했는데, 이메일 하나가 item 하나라서 3개가 한 번에 처리된 거였어요. n8n은 여러 item을 받으면 각각을 처리해서 내보내요.
| item 번호 | 이메일 제목 | 보낸 사람 |
|---|---|---|
| item 1 | 견적 문의드립니다 | customer1@example.com |
| item 2 | 서비스 사용 문의 | customer2@example.com |
| item 3 | 제휴 제안드립니다 | partner@example.com |
JSON — Output 탭에서 자주 보이는 데이터 형태
Output 탭을 처음 열었을 때 중괄호와 따옴표가 잔뜩 나와서 "이게 뭐지?" 했어요. 알고 보니 그냥 필드 이름과 값을 나열한 구조더라고요. 엑셀의 열 이름과 셀 값이라고 생각하니까 바로 이해됐어요.
예를 들어 문의 이메일 정보를 사람이 보기 쉽게 표로 쓰면 이렇게 돼요.
| 필드 이름 | 값 |
|---|---|
| name | 김민수 |
| minsu@example.com | |
| subject | 견적 문의드립니다 |
n8n Output 탭에서는 이게 아래처럼 보여요.
"name": "김민수",
"email": "minsu@example.com",
"subject": "견적 문의드립니다"
}
이게 JSON이에요. 초보자가 JSON 문법을 외울 필요는 없어요. 중요한 건 "필드 이름"이 뭔지 확인하는 거예요. 다음 노드에서 이 필드 이름으로 값을 참조하거든요.
Data Mapping — 이전 노드 값을 다음 노드에 연결하기
Data Mapping은 이전 노드의 Output 값을 다음 노드의 특정 위치에 연결하는 작업이에요.
Gmail 노드 Output에 subject라는 필드가 있는 걸 확인하고, Google Sheets 노드의 "제목" 칸에 이걸 연결했어요. 그 전에는 어떤 값을 어디에 넣는지 몰라서 "제목" 칸이 빈 채로 저장됐어요. Output을 확인하고 나서야 연결이 됐어요.
| 이전 노드 Output 필드 | Google Sheets 열 | 의미 |
|---|---|---|
| from (발신자) | 이메일 열 | 문의자 이메일 저장 |
| subject (제목) | 제목 열 | 문의 제목 저장 |
| text (본문) | 내용 열 | 문의 내용 저장 |
| date (수신일) | 접수일 열 | 문의 시간 저장 |
실제 흐름으로 이해하기 — 문의 메일을 시트에 저장하는 경우
개념을 따로 이해하는 것보다, 하나의 자동화 안에서 전체 흐름을 보는 게 더 빨리 이해돼요.
상황: "새로운 문의 이메일이 오면 제목·발신자·본문을 구글시트에 저장한다"
| 단계 | 노드 | Input | Output |
|---|---|---|---|
| 1단계 | Gmail Trigger | 새 이메일 도착 조건 | from, subject, text, date 등 이메일 데이터 |
| 2단계 | IF 노드 | Gmail의 subject 값 | "문의" 포함 여부에 따라 true/false 경로 분기 |
| 3단계 | Set 노드 | IF 노드 통과 데이터 | 필요한 값만 정리한 sender_email, title, body, received_at |
| 4단계 | Google Sheets | Set 노드 Output | 시트 각 열에 저장된 결과 |
각 단계에서 Output을 확인하는 게 핵심이에요. Gmail 노드를 실행한 뒤 Output에 subject 값이 있는지, Set 노드 Output에 정리된 값들이 제대로 있는지 순서대로 확인하면 어디서 막혔는지 찾을 수 있어요.
Set 노드 — 데이터를 정리하고 이름을 바꾸는 노드
Gmail 노드에서 넘어오는 데이터는 필드가 많고 이름도 복잡해요. Set 노드를 쓰면 필요한 값만 남기고, 필드 이름도 내가 원하는 대로 바꿀 수 있어요.
예를 들어 Gmail 노드의 from 필드를 Set 노드에서 sender_email로 이름을 바꿔서 내보내면, Google Sheets 노드에서 "sender_email 값을 이메일 열에 저장해"라고 명확하게 연결할 수 있어요.
필드 이름: sender_email ← Gmail의 from 값 참조
필드 이름: title ← Gmail의 subject 값 참조
필드 이름: body ← Gmail의 text 값 참조
필드 이름: received_at ← Gmail의 date 값 참조
이렇게 정리하면 Google Sheets 노드에서 연결이 훨씬 명확해지고, 나중에 워크플로우를 다시 봤을 때도 어떤 값이 어디로 가는지 바로 보여요.
데이터가 이상할 때 — 순서대로 Output 추적하기
구글시트에 이메일 주소가 비어서 저장됐어요. Google Sheets 노드만 보다가 시간을 낭비했는데, 원인은 Set 노드 Output에 있었어요. email이라고 연결하려 했는데 실제 필드 이름은 sender_email이었던 거예요.
데이터 문제는 항상 마지막 노드가 아니라 데이터가 지나온 경로를 따라가면서 찾아야 해요.
- 1번 노드 Output 확인 — 이 노드가 실제로 실행됐는가, 원하는 필드가 있는가
- 2번 노드 Output 확인 — 이전 값이 정상적으로 넘어왔는가
- IF 노드가 있다면 — true 경로로 갔는가, false 경로로 갔는가
- 최종 노드 직전 Output 확인 — 연결하려는 필드 이름이 Output과 일치하는가
n8n 디버깅의 기본은 "어느 노드까지 데이터가 정상적으로 왔는가"를 순서대로 확인하는 거예요. 마지막 노드만 봐서는 원인을 찾기 어려워요.
데이터 흐름에서 초보자가 자주 막히는 4가지
1. 노드를 연결하면 값이 자동으로 매칭된다고 생각한다
연결선은 데이터가 이동하는 길을 만들 뿐이에요. Google Sheets 노드에서 어떤 열에 어떤 값을 넣을지는 설정 패널에서 직접 연결(Data Mapping)해야 해요.
2. 필드 이름이 다른데 같다고 가정한다
이전 노드의 Output에서 "subject"라고 나왔는데 다음 노드에서 "title"로 연결하면 빈 값이 저장돼요. 항상 Output 탭에서 실제 필드 이름을 확인한 뒤 연결해야 해요.
3. item이 여러 개인 상황을 예상 못 한다
이메일이 3개면 구글시트에 행이 3개 생겨요. 처음엔 오류 같지만 이건 정상 동작이에요. 1개만 처리하고 싶다면 조건으로 필터링하면 돼요.
4. Output을 확인하지 않고 설정을 바꿔나간다
값이 안 넘어갈 때 설정을 이것저것 바꾸다 보면 원인을 찾기 더 어려워져요. 먼저 이전 노드 Output을 확인하고, 거기서 원인을 찾은 다음 설정을 바꾸는 게 훨씬 빠르게 해결돼요.
데이터 흐름에서 놓치기 쉬운 보안 포인트
Output 탭에는 이메일 주소, 이름, 문의 내용, API 응답값 등이 그대로 표시돼요. Execution 기록에도 처리된 데이터가 남을 수 있어요.
- 실습 중에는 실제 고객 데이터 대신 샘플 데이터 사용하기
- Output 화면 캡처 시 이메일 주소·개인정보가 보이지 않게 가리기
- API 키·토큰은 Output에 표시되더라도 블로그·공유 문서에 노출하지 않기
- Execution 기록에 민감한 데이터가 남을 수 있다는 점 인식하기
마무리: Output을 보는 습관이 데이터 흐름의 핵심
이번 글에서 다룬 개념을 한 번 더 정리할게요.
- Input — 노드로 들어오는 데이터 (이전 노드의 Output)
- Output — 노드가 처리 후 내보내는 데이터 (다음 노드의 Input이 됨)
- item — 데이터 한 건. 이메일 3개면 item 3개
- JSON — 필드 이름과 값으로 데이터를 표현하는 구조. Output 탭에서 자주 보임
- Data Mapping — 이전 노드의 Output 필드를 다음 노드의 특정 위치에 연결하는 작업
이 중에서 가장 중요한 건 Output을 보는 습관이에요. 노드 하나를 실행할 때마다 Output 탭을 눌러서 어떤 값이 나왔는지 확인하는 것, 이게 데이터 흐름을 이해하고 오류를 찾는 핵심이에요.
다음 글에서는 Set 노드 사용법을 더 자세히 살펴볼게요. 필요한 값만 골라 정리하고, 다음 노드에서 쓰기 좋게 데이터를 다듬는 방법을 초보자 기준으로 정리해볼게요.
※ 이 글은 n8n 비개발자 자동화 시리즈 9화입니다. n8n의 기능과 인터페이스는 버전에 따라 달라질 수 있으며, 실제 사용 전에 공식 문서를 함께 확인해주세요.
참고자료
- n8n Docs, How n8n structures data
- n8n Docs, Understanding the data structure
- n8n Docs, How items link through workflows
- n8n Docs, Referencing data
- n8n Docs, Referencing previous nodes
- n8n Docs, Expressions
- n8n Docs, Expression Reference
- n8n Docs, Edit Fields (Set) node
- n8n Docs, Google Sheets node
- n8n Docs, Google Sheets Sheet Within Document operations
- n8n Docs, Google Sheets common issues
- n8n Docs, Executions
- n8n Docs, Execution data redaction