한 가지 얘기를 해주겠다. 도로에서 보낸 이 많은 세월 동안 내가 가장 두려워하는 것은 교통체증이 아니다. 잘못된 주문이다. 특히 작은 고객의 엑셀이 WMS에 잘못 들어갈 때 말이다.

지난 10월, 나는 온타리오에 있는 3PL 창고 줄에서 서서 하역을 기다리고 있었다. 롱비치 항 근처에서 싣고 라스베이거스의 배송 거점으로 향하는 소형 가전제품, 400카톤 정도를 싣고 있었다. 화주는 작은 사업주였고, 직원이 전부 7명이었으며, 그 자신이 곧 IT 부서였다. 가진 것은 엑셀뿐이었다. 매일 오후 그는 그날의 주문을 엑셀로 내보내 창고에 이메일로 보내면, 창고의 젊은 직원이 매 줄을 WMS에 손으로 입력했다.

그날 일이 터졌다. 스프레드시트의 SKU 하나가 HD-2204B였다. 젊은 직원의 손가락이 미끄러져 HD-2204D를 입력했다. 한 글자 차이였다. 라스베이거스에 도착하자 수취인이 모델 번호를 확인하고 화물 전체를 거부했다. 나는 400카톤을 그대로 싣고 돌아왔다. 왕복 500마일이 넘고, 이틀이 날아갔으며, 디젤 연료비로만 1000달러 가까이를 헛되이 태웠다. 사업주는 전화로 창고 매니저에게 소리쳤다. 매니저는 인력이 부족하고 실수는 생긴다고 했다. 사업주는 하루에 수십 건밖에 보내지 않는데 그것도 제대로 입력하지 못하느냐고 했다. 운송사가 운임의 절반을 떠안았다. 우리는 그것을 삼켰다.

핵심은 이렇다. IT가 없는 작은 고객은 게으른 것이 아니다. 정말로 아무도 없는 것이다. 3PL이 그를 귀찮은 존재로 대하면 그는 길 건너 다른 창고로 가버릴 것이다. 하지만 잘 돌봐주면 그는 매년 수만 카톤을 시계처럼 꾸준히 가져다줄 것이다.

IT 직원이 없다고요? 이 CSV/SFTP 연동 플레이북이 통합니다

점심을 함께 먹으면서 나는 그 창고 매니저와 꽤 친해졌다. 그는 스무 명이 넘는 고객 중 절반이 "엑셀 고객"이었다고 말했다. 큰 고객들은 EDI와 API를 갖고 있다. 한 번 연동하면 1년은 잊고 지낸다. 작은 고객들은? 오늘은 엑셀, 내일은 채팅 스크린샷, 모레는 전화다. 그는 그들을 API 연동으로 옮기려 했다. 절반은 API가 무엇인지조차 몰랐다.

그래서 그들은 로우테크 방식들을 정리했다. IT 직원이 없는 고객을 위한 쉬운 말로 된 CSV SFTP WMS 연동 플레이북이었다. 솔직히 훌륭하다고 생각했다. 자, 여러분의 IT 용어는 내 수준을 넘어선다. 운전기사 식으로 설명해 보겠다.

방법 하나: 잠긴 CSV 템플릿.

CSV를 엑셀의 "다른 이름으로 저장"이라고 생각하면 된다. 창고는 작은 고객 한 명 한 명에게 고정된 주문 템플릿을 보낸다. 어떤 열을, 어떤 순서로, 날짜는 어떤 형식으로, 수량은 반드시 숫자로. 모두 고정이다. 쉼표 하나도 바꿀 수 없다. 고객은 매일 그 시트를 채워 보낸다.

그 창고에는 내가 정말 좋아한 비법이 있었다. 첫 행이 헤더가 아니라 이미 채워진 샘플인 것이다. 사업주는 패턴을 그대로 베끼기만 하면 된다. 틀리기 어렵다. 파일이 도착하면 WMS가 먼저 자동으로 검사한다. 수량 열에 문자가 있거나, 날짜가 "2026-10-05" 대신 "10/5"로 되어 있으면 파일 전체가 반려되고, 깨진 행을 쉬운 말로 알려주는 메모가 붙는다.

손으로 입력하던 시절에는 젊은 직원이 하루에 수백 줄을 입력했고, 점심 이후에는 매 시간 오류가 늘어났다. 이제 CSV 가져오기는 5분이면 끝나고, 실수가 있어도 그것은 고객의 오타이다. 책임 소재가 명백하다.

방법 둘: 예약된 SFTP 수거. 파일이 스스로 날아가게 하라.

매일 이메일을 보내는 것조차 귀찮아하는 고객도 있다. SFTP를 잠긴 파일 보관함이라고 생각하면 된다. 창고가 고객에게 계정을 주고, 고객은 매일 밤 CSV를 보관함에 넣어두면, WMS가 정해진 시간 — 예를 들어 새벽 2시 — 에 가져가 검사하고 가져온다. 아침 교대 근무가 시작될 때쯤이면 주문은 이미 시스템에 들어와 있다.

이 방법은 매일 오후 4시에 시계처럼 업로드하는 사무실 매니저에게 딱 맞다. 아무도 지켜보지 않는다. 파일은 스스로 날아가고, 하나라도 빠지면 시스템이 경고를 울린다. 나는 란초쿠카몽가의 작은 자동차 부품 고객 사무실 매니저가 오후 4시 업로드를 한 번도 거른 적이 없다는 것을 안다. 3개월 연속, 오류 제로였다. 그녀는 이제 4:05에 퇴근해 아이를 데리러 간다고 말했다.

방법 셋: 이메일 첨부파일 파싱, 최후의 수단.

매주 SFTP 비밀번호를 잊어버리고 그래도 템플릿을 제대로 채우지 못하는 고객이 항상 한두 명 있다. 그들과 싸우지 마라. 전용 받은편지함을 만들고, 제목에 "주문 + 날짜"를 요구하고, WMS가 타이머로 그 받은편지함을 훑어 첨부파일을 가져와 파싱하고 가져오게 하라. 이메일을 보낼 수 있으면 연동된 것이다.

솔직한 비교는 이렇다.

방법 고객이 알아야 할 것 창고의 노력 오류율 적합한 규모
이메일 CSV 템플릿 엑셀 채우기, 이메일 보내기 템플릿 + 검증 규칙 만들기, 반나절 낮음; 불량 파일은 반려됨 하루 수십 건
예약된 SFTP 수거 폴더에 파일 두기 계정 + 일정 설정 매우 낮음; 스스로 돌아감 하루 수십 건에서 100건
이메일 첨부파일 파싱 이메일 보내기 받은편지함 규칙 설정 중간; 제목이 틀리면 파일 누락 하루 열댓 건

그리고 역발상 의견을 말하겠다. 작은 고객에게는 API를 건너뛰어라. 고정된 CSV 템플릿이 마음의 평화 면에서는 API를 이긴다. API는 멋지게 들리지만 고객 쪽에는 유지할 사람이 없다. 오늘은 된다. 다음 달 그가 이메일을 바꾸고 비밀번호를 재설정하면 연결이 끊기고, 누군가를 보내 고쳐야 한다. CSV는 못생겼지만 저쪽 누구에게도 의존하지 않는다. 파일 형식이 맞으면 들어간다. 틀리면 반려된다. 책임이 깔끔하다. 이렇게 오래 운전해 오면서 나는 한 가지를 믿는다. 부품이 적을수록 고장이 적다.

CSV 필드 매핑의 함정: 매일 바뀌는 열 이름

로우테크라고 해서 함정이 없는 것은 아니다. 가장 큰 함정은 필드 매핑이다. 쉽게 말해 고객 시트의 열 이름이 WMS의 필드 이름과 맞지 않는 것이다.

내가 본 최악의 고객은 이랬다. 월요일에는 열이 "Item#"이었고, 수요일에는 "SKU", 금요일에는 "제품 번호"를 뜻하는 중국어 단어였다. 가져오기는 열 이름으로 매칭했기 때문에 이름 하나만 바뀌어도 파일 전체가 공백이 되어버렸다. 수십 건의 주문이 시스템 밖에 갇혔고, 트럭들이 게이트에서 공회전하고 있었다. 나는 한 번 이 때문에 4시간을 앉아 기다린 적이 있다.

매니저는 세 가지 해결책을 가르쳐주었고, 하나하나가 모두 탄탄했다.

첫째, 변환 테이블. 시스템에 매핑을 보관하라. 고객의 "Item#", "SKU", "제품 번호"는 모두 시스템의 sku_code로 변환된다. 고객이 뭐라고 부르든 테이블에 있기만 하면 된다. 새 고객이 오면 반나절을 들여 오래된 파일의 모든 열 이름을 기록하라.

둘째, 엄격한 검증 규칙. 수량 열은 반드시 숫자여야 한다. 날짜 열은 2026-10-05처럼 생겨야 한다. SKU 열은 비어 있으면 안 된다. 하나라도 실패하면 파일 전체가 반려된다. 한 줄도 들어가지 않는다. 건물 안에 더러운 데이터를 들이는 것보다 30분 늦는 편이 낫다. 더러운 데이터가 일단 안에 들어오면 출하 전체가 틀어진다.

셋째, 새 템플릿에는 3일간의 수동 검토. 고객이 새 템플릿을 처음 사용하거나 열 이름을 바꿀 때는 3일 동안 사람이 매 줄을 확인한다. 매핑이 맞는지 확인한 뒤 자동 가져오기를 켠다. 이 단계를 건너뛰지 마라. 이 3일이 3개월간의 불 끄기를 아껴준다.

컴퓨터에서 고객 주문 스프레드시트를 확인하는 창고 사무원

하루에 한 번 대조하라. 하룻밤 묵히지 마라.

마지막 비법 하나, 매니저의 비밀 무기다. 퇴근 15분 전에 그날을 대조하라.

WMS의 출고 주문 수를 고객 파일의 주문 수와 맞춰 세어라. 숫자가 맞지 않으면 이유를 알 때까지 아무도 집에 가지 못한다. 파일이 가져와지지 않았나? 가져왔는데 출고되지 않았나? 고객이 파일을 두 번 보냈나? 15분, 매일, 예외 없이.

이 15분을 과소평가하지 마라. 나는 월말 다툼을 너무 많이 봤다. 고객은 100건이라 하고 창고는 98건이라 하며, 나머지 2건이 출고되었다는 것을 아무도 증명하지 못하고 손실을 나눈다. 매일 대조하면 문제는 생긴 당일에 드러난다. 월말은 형식이 된다.

3PL 동료들에게 한마디 조언을 하겠다. 작은 고객을 골칫거리로 대하지 마라. 큰 고객은 좋지만 계약이 3년마다 갱신되고, 하나를 잃으면 뼈가 부러진다. 작은 고객은 하나하나 보면 대수롭지 않아 보이지만, 쌓이면 여러분의 기반이다. CSV 템플릿, SFTP 수거, 매일의 대조를 제대로 해내면 작은 고객이 큰 고객보다 더 매끄럽게 돌아간다. 저쪽은 한 사람, 여러분 쪽은 거의 아무도 필요 없으니까.

옛말이 있다. 머리카락 한 올 빗나가면 1마일 빗나간다. SKU 한 글자 실수가 나에게 500마일의 빈 운행을 안겼다. 서류를 제대로 갖추면 트럭도 제대로 달린다. 그 진리는 고속도로에서도, 창고 안에서도 통한다.

Shifu Zhao, 트럭 운송 베테랑 (15년) 지음

영어판 번역본입니다. 내용이 다를 경우 영어판을 우선합니다.