n8n으로 주간 판매 보고서 자동화한 실제 사례
n8n으로 레거시 API 데이터를 가져와 Discord 공지와 Google Sheets 보고서로 나누는 주간 판매 보고서 자동화 사례를 다룬다.
2026-08-12 · 최초 발행 2025-06-11
ABCorp의 분석 관리자 Nathan은 매주 같은 실수를 반복했다. 레거시 데이터 웨어하우스에서 판매 데이터를 내려받아 'Processing'과 'Booked' 상태로 나누고, Booked 주문의 합계를 계산해 회사 Discord에 월요일마다 공지하고, Processing 주문은 스프레드시트로 만들어 영업 관리자에게 넘기는 일이었다. 다재다능한 만큼 부수 업무도 많이 떠안고 있던 그는 이 반복 작업 중에 숫자를 잘못 입력하거나 기한을 놓치는 일이 잦았고, 데이터 오계산으로 관리자에게 지적을 받은 적도 있었다.
자동화할 수 있었던 이유
레거시 데이터 웨어하우스에는 CSV 내보내기 기능이 없었지만, 최근 같은 데이터를 제공하는 API 엔드포인트가 새로 생겼다. 이 API 하나가 n8n으로 전체 과정을 자동화할 수 있는 출발점이 됐다.
요구사항은 네 가지로 정리됐다. API로 판매 데이터를 가져오고, 주문 상태('Processing'/'Booked')에 따라 분류해 Booked 합계를 계산하고, Discord로 합계를 공지하고, Processing 주문은 스프레드시트로 만들고, 이 전체를 매주 월요일 자동으로 돌린다.
스케줄부터 조건 분기까지, 노드로 옮기기
| 노드 | 용도 | 주요 설정 |
|---|---|---|
| Schedule Trigger | 매주 월요일 워크플로우 시작 | Trigger Interval: Week, Day: Monday |
| HTTP Request | 데이터 웨어하우스 API 호출 | Method: GET, URL: API 엔드포인트 |
| Function | 데이터 파싱 및 처리 | JavaScript를 활용한 데이터 변환 |
| IF | 주문 상태에 따른 조건부 처리 | Condition: status === 'Booked' |
| Discord | Booked 주문 합계 공지 | Webhook URL, 메시지 구성 |
| Google Sheets | Processing 주문 스프레드시트 | Spreadsheet ID, 데이터 구성 |
Schedule Trigger는 Trigger Interval을 Weeks로, Weeks Between Triggers는 1로, Trigger on Weekdays는 Monday로, 실행 시각은 Trigger at Hour 9 AM · Trigger at Minute 0으로 맞춘다.
HTTP Request는 필요시 API 키로 인증하고, Request Method GET, URL은 데이터 웨어하우스 API 엔드포인트, Headers에 Content-Type: application/json을 지정한다.
Function 노드에서 응답을 필요한 형태로 다듬는다.
// 판매 데이터 파싱 및 가공
return items.map((item) => {
const salesData = item.json;
// 필요한 필드 추출 및 가공
return {
json: {
id: salesData.id,
customer: salesData.customer_name,
amount: parseFloat(salesData.amount),
status: salesData.status,
date: salesData.date,
},
};
});
IF 노드는 Value 1에 {{$json["status"]}}, Operation은 Equal, Value 2는 Booked로 설정해 상태별로 흐름을 가른다.
Discord와 Google Sheets로 갈라지는 출력
Discord 노드는 채널 웹훅 URL을 받아, Content에 주간 Booked 판매 합계: ${{$json["total"]}}을 넣어 공지한다. Google Sheets 노드는 Operation을 Append로, Spreadsheet ID와 Range(A:D), Columns(ID, Customer, Amount, Date)를 지정해 Processing 주문을 계속 쌓는다.
자동화 이후 달라진 것
수동으로 데이터를 모아 계산하던 작업이 사라지면서 주당 3-4시간이 절약됐고, 인적 오류가 줄어 데이터 정확도가 올라갔다. 보고서 형식과 전달 시각도 항상 일정해졌다. Nathan 입장에서는 반복적이고 단순한 작업에서 벗어나 고부가가치 분석 업무에 쓸 시간이 늘었고, 기한을 지키고 정확한 숫자를 내놓으면서 관리자의 신뢰도 회복됐다. 영업 관리자 쪽에서는 Processing 주문 정보를 시의적절하게 받아보게 됐고, 일관된 형식 덕분에 트렌드 분석도 쉬워졌다.
더 다듬을 수 있는 지점들
Google Sheets 대신 Tableau나 Power BI 같은 시각화 도구를 연동해 자동 차트·대시보드를 만들 수 있고, Discord 외에 이메일이나 Slack 채널을 추가해 임계값 초과 시 즉시 알리는 식으로 알림을 다양화할 수 있다. 판매 추세·예측 분석이나 고객별·제품별·지역별 성과 분석, 이상치 자동 감지로 데이터 분석을 더 심화할 수도 있고, API 연결 실패 시 대체 소스를 쓰거나 오류를 로깅하고 자동 재시도하는 식으로 복원력을 높일 수도 있다.
실무에 넣기 전에 점검할 것
API 키와 자격 증명은 안전하게 저장하고, 민감한 판매 데이터는 접근을 제한하며 처리 과정을 암호화하는 등 보안 조치가 먼저다. 워크플로우 실행 기록과 성능을 모니터링하고, 연결 테스트와 유효성 검사를 정기적으로 돌리고, API가 바뀔 때의 대응 계획도 세워둬야 한다. 워크플로우가 어떻게 동작하고 무엇을 만들어내는지, 오류가 났을 때 어떻게 대처하고 언제 수동으로 개입해야 하는지도 문서로 남겨야 나중에 다른 사람이 유지보수할 수 있다.