쇼핑몰 옵션 재고가 틀려도 SKU를 늘릴 필요 없는 이유
고객은 분명 ‘블랙·M’을 주문했는데 창고에는 ‘블랙·L’만 남아 있고, 관리자 화면에는 두 옵션 모두 재고가 있다고 표시됩니다. 이런 문제가 반복되면 옵션마다 SKU를 새로 만들거나 상품을 전부 다시 등록해야 한다고 생각하기 쉽지만, 실제 원인은 대개 SKU 개수 부족이 아니라 옵션 연결 구조와 재고 차감 규칙의 불일치에 있습니다.
특히 자사몰, 오픈마켓, 풀필먼트 센터를 함께 운영하는 쇼핑몰은 같은 상품을 서로 다른 코드로 부르는 경우가 많습니다. 코드를 무작정 늘리면 당장은 구분하기 쉬워 보여도 중복 재고, 품절 지연, 송장 오출력 같은 문제가 더 커질 수 있습니다. 먼저 어디에서 값이 어긋나는지 확인하고 하나의 기준 SKU로 연결해야 합니다.
옵션 재고 오류는 SKU 수보다 연결 관계에서 시작됩니다
판매 옵션과 재고 단위는 같은 개념이 아닙니다
상품 페이지에 보이는 색상과 사이즈는 고객이 선택하는 판매 옵션이고, 창고에서 실제로 수량을 관리하는 단위는 재고 SKU입니다. 판매 옵션 하나가 재고 SKU 하나에 연결되는 단순한 구조도 있지만, 세트 상품이나 사은품 구성처럼 판매 옵션 하나가 여러 SKU를 동시에 차감하는 구조도 있습니다. 이 차이를 구분하지 않으면 재고가 틀릴 때마다 새 코드를 만드는 악순환에 빠집니다.
예를 들어 ‘티셔츠 2장 세트’를 별도 SKU로 만들어 재고 30개를 입력했는데, 낱장 티셔츠에도 재고 60개가 입력돼 있다면 실제 보유량 60장이 화면에서는 최대 120장처럼 보일 수 있습니다. 세트 주문 시 낱장 SKU 두 개가 차감되도록 연결했다면 세트 전용 실물 SKU는 필요하지 않습니다. 반대로 포장까지 완료된 세트가 창고에서 독립된 제품으로 보관된다면 별도 SKU가 맞습니다.
재고의 기본 개념과 기업 운영에서의 역할은 재고에 관한 지식백과 설명에서도 확인할 수 있습니다. 중요한 점은 화면에 노출되는 옵션 수가 아니라, 실제로 식별하고 이동시키며 수량을 세야 하는 단위가 몇 개인지입니다.
- 판매 옵션: 고객이 고르는 색상, 크기, 구성, 추가 상품입니다.
- 재고 SKU: 입고·보관·피킹·출고 과정에서 독립적으로 수량을 세는 단위입니다.
- 채널 상품 코드: 오픈마켓이나 자사몰이 상품을 식별하기 위해 발급한 코드입니다.
- 바코드: 작업자가 스캔하는 식별 수단이며 SKU 자체와 항상 같지는 않습니다.
옵션 하나를 추가하기 전에 “이 물건을 창고에서 따로 셀 수 있는가?”라고 물어보세요. 답이 아니면 신규 SKU보다 기존 SKU와의 연결 규칙이 먼저입니다.
가장 흔한 고장 원인을 네 구간으로 나눠 찾습니다
주문부터 출고까지 차감 시점을 따라가세요
옵션 재고 오류를 조사할 때 관리자 페이지의 현재 수량만 바라보면 원인을 찾기 어렵습니다. 주문 생성, 결제 완료, 출고 지시, 출고 확정, 주문 취소라는 사건이 발생할 때 어느 시스템이 몇 개를 더하거나 빼는지 시간순으로 확인해야 합니다. 같은 주문을 쇼핑몰과 ERP가 각각 차감하면 이중 차감이 생기고, 결제 단계에서는 예약만 했는데 취소 시 실재고를 더하면 수량이 오히려 늘어납니다.
첫 번째 원인은 옵션 매핑 누락입니다. 채널의 ‘아이보리·FREE’ 옵션이 내부의 IV-FREE SKU가 아니라 기본 상품 코드에 연결되면 모든 옵션 주문이 한 재고에서 빠질 수 있습니다. 두 번째는 동기화 지연이며, 짧은 시간에 주문이 몰릴 때 채널별 갱신 주기가 길수록 이미 팔린 수량이 다시 판매됩니다.
세 번째는 취소·반품 상태값의 해석 차이입니다. 고객이 취소 버튼을 눌렀다는 이유만으로 재고를 복구하면, 이미 택배사로 넘어간 상품까지 판매 가능 수량에 포함될 수 있습니다. 네 번째는 묶음상품의 구성 수량 오류입니다. ‘양말 3족 세트’가 낱장 SKU를 1개만 차감하도록 설정되어 있다면 주문이 한 건 생길 때마다 실물과 시스템의 차이가 2개씩 커집니다.
- 오류가 발생한 주문번호 한 건을 정하고 생성부터 취소 또는 출고까지 상태 변경 시간을 기록합니다.
- 채널 옵션 코드, 내부 SKU, 바코드, 물류센터 품목 코드를 한 줄에 놓고 연결값을 비교합니다.
- 각 상태에서 주문 가능 수량, 예약 수량, 실재고가 어떻게 변했는지 적습니다.
- 수동 보정이나 엑셀 업로드 기록이 같은 시간대에 있었는지 확인합니다.
- 오류 주문과 정상 주문을 한 건씩 비교해 처음 달라진 지점을 원인 후보로 지정합니다.
증상만으로도 원인 범위를 줄일 수 있습니다
- 특정 옵션만 계속 틀리면 옵션-SKU 매핑을 먼저 확인합니다.
- 행사 시간에만 품절 초과 주문이 생기면 동기화 주기와 재고 버퍼를 살펴봅니다.
- 취소가 많은 날 수량이 늘어나면 복구 조건과 중복 웹훅을 점검합니다.
- 세트 판매량에 비례해 오차가 커지면 구성품 차감 배수를 확인합니다.
SKU를 추가하기 전에 기준 상품표부터 바로잡아야 합니다
하나의 기준 SKU에 채널 코드를 모읍니다
여러 판매처를 운영할수록 필요한 것은 더 많은 SKU가 아니라 단일 기준 상품표입니다. 기준 상품표는 내부 SKU 한 개를 중심으로 자사몰 옵션 코드, 오픈마켓 상품 코드, 물류센터 코드, 바코드와 공급처 코드를 연결한 표입니다. 각 채널의 코드가 달라도 실제 재고가 같은 물건이라면 기준 SKU 열에서는 한 행으로 모여야 합니다.
‘화이트’를 자사몰에서는 WH, 오픈마켓에서는 WHITE, 물류센터에서는 01로 사용해도 괜찮습니다. 문제는 이름 차이가 아니라 세 값이 같은 기준 SKU를 가리키는지 여부입니다. 코드 체계를 한꺼번에 바꾸면 기존 주문과 송장 이력의 연결이 끊길 수 있으므로, 과거 코드는 별칭으로 남기고 신규 주문부터 기준 SKU로 변환하는 방식이 안전합니다.
상품 생성부터 변경, 단종까지 정보를 일관되게 관리한다는 관점은 제품수명주기관리의 개념과도 맞닿아 있습니다. 상품 데이터는 한 번 등록하고 끝나는 문서가 아니라 구성 변경과 판매 종료까지 추적해야 하는 운영 자산입니다.
| 필드 | 기록 예시 | 오류 방지 목적 |
|---|---|---|
| 기준 SKU | TS-BLK-M | 모든 채널 재고의 기준점 지정 |
| 채널 옵션 코드 | NVM-8821-03 | 주문 옵션을 내부 SKU로 변환 |
| 바코드 | 8801234567890 | 입고와 피킹 시 실물 확인 |
| 구성 수량 | TS-BLK-M × 2 | 세트 주문의 정확한 차감 |
| 판매 상태 | 판매·중지·소진 예정 | 폐기 없이 상품 수명 추적 |
| 변경 일시 | 08-25 14:30 | 오류 발생 전후 설정 비교 |
상품표를 수정할 때 지켜야 할 순서
- 최근 30일 주문이 있는 옵션부터 중복 코드와 빈 연결값을 찾습니다.
- 실물이 같은 옵션에는 하나의 기준 SKU를 부여하고 채널 코드는 별칭 열로 이동합니다.
- 세트와 증정품에는 구성 SKU와 차감 수량을 각각 기록합니다.
- 기존 주문 조회가 가능한지 테스트한 뒤 신규 매핑을 적용합니다.
- 수정자, 수정 이유, 적용 시간을 남겨 되돌릴 기준점을 확보합니다.
재고 수량은 실재고·예약재고·판매가능재고로 분리합니다
관리 화면의 숫자 하나만 믿으면 품절 사고가 납니다
창고 선반에 20개가 있다고 해서 고객에게 20개를 모두 판매할 수 있는 것은 아닙니다. 결제는 끝났지만 아직 출고되지 않은 주문 4개, 불량 판정 대기 2개, 교환용으로 확보한 1개가 있다면 실제 판매 가능 수량은 13개입니다. 시스템이 이 상태들을 ‘재고’라는 한 칸에 합쳐 보여주면 담당자마다 숫자를 다르게 해석하게 됩니다.
운영 기준은 판매가능재고 = 실재고 - 예약재고 - 판매불가재고 - 안전 버퍼처럼 명확해야 합니다. 여기서 실재고는 물리적으로 보유한 수량, 예약재고는 주문에 할당됐지만 출고 전인 수량, 판매불가재고는 검수·파손·분실 조사 중인 수량입니다. 안전 버퍼는 동기화 지연과 작업 오차를 흡수하기 위한 값이지 장부 오차를 숨기는 숫자가 아닙니다.
인벤토리 용어의 배경을 참고하면 재고가 단순히 창고에 놓인 물건만을 뜻하지 않는다는 점을 이해하기 쉽습니다. 쇼핑몰에서는 수량뿐 아니라 위치, 상태, 주문 할당 여부가 함께 관리되어야 실제 판매 판단에 쓸 수 있습니다.
- 결제 대기: 짧은 예약 시간을 두되 미결제 만료 시 자동 해제합니다.
- 결제 완료: 판매가능재고에서 즉시 제외하고 예약재고로 이동합니다.
- 출고 완료: 예약재고와 실재고에서 각각 차감해 중복 반영을 막습니다.
- 취소 요청: 출고 중지 여부를 확인한 뒤 복구하며 요청 즉시 더하지 않습니다.
- 반품 도착: 입고 검수가 끝난 정상 상품만 판매가능재고로 전환합니다.
재고 오류를 줄이려면 숫자를 맞추는 것보다 상태가 이동하는 조건을 맞춰야 합니다. ‘언제 차감하고 언제 복구하는가’를 한 문장으로 설명할 수 있어야 자동화도 정확해집니다.
채널별 버퍼는 일률적으로 두지 않습니다
모든 SKU에 5개씩 버퍼를 설정하면 판매량이 적은 상품은 불필요하게 품절 처리되고, 빠르게 팔리는 상품은 여전히 초과 판매될 수 있습니다. 최근 주문 속도, 연동 주기, 입출고 정확도를 기준으로 SKU별 또는 판매 채널별 버퍼를 달리해야 합니다. 예를 들어 10분 동안 최대 8개가 팔리는데 연동이 15분마다 실행된다면 버퍼 1개로는 부족합니다.
- 주문이 드문 상품은 0~1개부터 시작해 품절 취소 발생 여부를 봅니다.
- 행사 상품은 연동 주기 동안 예상되는 최대 주문량을 버퍼 후보로 둡니다.
- 한정 수량 상품은 여러 채널에 균등 배분하지 말고 우선 채널에 재고를 집중합니다.
- 버퍼 때문에 장기 미판매가 생기면 주 1회 숨은 수량을 점검해 해제합니다.
수정 후에는 소량 주문으로 차감과 복구를 검증합니다
정상 주문만 테스트하면 절반만 확인한 셈입니다
매핑을 수정한 뒤 재고 숫자가 맞아 보인다고 바로 전체 채널을 열면 안 됩니다. 실제 오류는 취소, 부분 출고, 세트 구성 변경처럼 예외 상황에서 다시 나타납니다. 재고가 넉넉한 테스트 SKU를 정해 각 채널에서 소량 주문을 만들고, 상태를 단계별로 바꾸며 판매가능재고와 실재고의 변화를 기록해야 합니다.
예를 들어 시작 수량을 10개로 맞춘 뒤 단품 1개를 결제하면 판매 가능 수량이 9개가 되는지 확인합니다. 이어 2개 묶음상품을 주문했을 때 7개가 되어야 하며, 주문 한 건을 취소하면 설정된 복구 조건에 따라 다시 8개 또는 9개가 되어야 합니다. 숫자가 예상과 다르면 신규 SKU를 만들지 말고 해당 사건을 처리한 로그와 구성 수량을 조사합니다.
테스트 중에는 관리자 화면 새로고침만 반복하지 말고 각 시스템의 반영 시각도 적어 두세요. 자사몰은 즉시 바뀌었는데 오픈마켓이 12분 뒤 갱신됐다면 매핑 오류가 아니라 연동 지연일 가능성이 큽니다. 반면 기다린 뒤에도 특정 옵션만 변하지 않는다면 옵션 코드 누락이나 비활성 연결을 의심할 수 있습니다.
- 단품 주문: 1개 주문 후 예약재고와 판매가능재고 변화를 확인합니다.
- 복수 수량 주문: 같은 옵션 3개가 주문 수량만큼 차감되는지 봅니다.
- 세트 주문: 구성품별 차감 배수가 정확한지 비교합니다.
- 전체 취소: 출고 전 취소가 한 번만 복구되는지 확인합니다.
- 부분 취소: 취소한 옵션만 복구되고 나머지는 유지되는지 봅니다.
- 반품 검수: 반품 접수 시점이 아니라 정상 입고 확정 시 복구되는지 확인합니다.
오류가 재발하면 로그에서 세 값을 찾습니다
- 이벤트 ID가 중복 수신됐는지 확인해 동일 주문의 이중 차감을 찾습니다.
- 변경 전 수량과 변경 후 수량을 비교해 어느 시스템이 값을 덮어썼는지 확인합니다.
- 채널 코드가 어떤 기준 SKU로 변환됐는지 매핑 결과를 확인합니다.
- 작업 주체가 API, 예약 작업, 관리자 수동 수정 중 무엇이었는지 구분합니다.
로그에 주문번호만 있고 변경 전후 수량이나 처리 주체가 없다면 다음 오류도 원인을 추측할 수밖에 없습니다. 최소한 주문번호, 기준 SKU, 수량 변화, 이벤트 종류, 처리 시각, 처리 시스템이라는 여섯 필드는 남겨야 담당자가 화면을 오가며 수작업으로 맞추는 시간을 줄일 수 있습니다.
옵션 100개를 고치는 데 필요한 시간과 비용을 계산합니다
전면 재등록보다 오류 빈도 순으로 손보는 편이 현실적입니다
옵션 재고가 틀렸다고 판매 상품 전체를 다시 등록하면 상세페이지 연결, 광고 상품 ID, 리뷰, 검색 노출 이력까지 영향을 받을 수 있습니다. 먼저 최근 30일 주문량과 오류 건수를 기준으로 상위 옵션을 추리면 훨씬 적은 작업으로 취소율을 낮출 수 있습니다. 주문의 80%를 만드는 옵션 20~30개부터 매핑과 차감 규칙을 수정하고 나머지는 관찰 대상으로 두는 방식이 현실적입니다.
담당자가 옵션 100개의 채널 코드와 내부 SKU를 대조하는 데 건당 2분이 걸린다면 200분, 약 3시간 20분이 필요합니다. 세트 구성 확인과 테스트 주문까지 옵션당 평균 3분을 더 잡으면 총 500분, 약 8시간 20분입니다. 오류 주문을 찾기 위한 로그가 없으면 조사 시간이 두 배 이상 늘어날 수 있으므로, 개발 비용을 판단할 때도 연동 기능 수보다 로그 조회 기능을 먼저 평가해야 합니다.
외부 재고관리 도구를 검토한다면 월 사용료만 비교하지 마세요. 초기 상품표 정리에 6~12시간, 채널 연결과 검증에 4~8시간, 담당자 교육에 1~2시간이 추가될 수 있습니다. 반대로 수작업으로 계속 운영하면 하루 20분의 재고 보정도 한 달 22영업일 기준 440분, 약 7시간 20분이 됩니다. 담당자의 시간당 비용이 2만5000원이라면 보정 업무에만 월 약 18만원이 들어갑니다.
- 1일차 60분: 오류 주문 10건을 모아 증상과 발생 채널을 분류합니다.
- 2일차 120분: 판매량 상위 30개 옵션의 기준 SKU와 채널 코드를 대조합니다.
- 3일차 90분: 세트 구성 수량, 취소 복구 조건, 재고 상태값을 수정합니다.
- 4일차 60분: 단품·세트·부분 취소 테스트 주문을 실행합니다.
- 이후 하루 10분: 품절 취소 건수와 수동 보정 횟수를 2주 동안 기록합니다.
수정 효과도 숫자로 판정합니다
적용 전후 2주씩 품절 취소율, 수동 재고 보정 횟수, 옵션 오배송 건수, 동기화 지연 시간을 비교하세요. 품절 취소가 주 12건에서 3건으로 줄고 수동 보정이 하루 5회에서 1회로 줄었다면 SKU를 늘리지 않아도 연결 구조를 고친 효과가 확인됩니다. 반대로 오차가 그대로라면 실사 차이, 입고 누락, 피킹 오류처럼 시스템 밖의 원인을 조사할 차례입니다.
- 품절 취소율 목표는 기존 대비 50% 이상 감소로 잡습니다.
- 수동 보정은 하루 1회 이하 또는 주 5회 이하를 첫 기준으로 둡니다.
- 채널 재고 반영 시간은 평시 10분 이내, 행사 시 3분 이내인지 측정합니다.
- 매핑 미등록 옵션은 전체 활성 옵션의 0%가 되도록 주 1회 검사합니다.
옵션 100개 기준으로 초기 진단과 수정에 하루 6~9시간, 이후 관찰에 2주가량을 배정하면 무리 없이 효과를 판단할 수 있습니다. 월 10만원대 도구를 추가하기 전에 수동 보정 비용, 품절 취소 손실, 담당자 작업 시간을 합산해 보세요. 신규 SKU는 실물이 독립적으로 보관되고 출고될 때만 추가하고, 그 외에는 매핑·상태·차감 규칙을 고치는 편이 비용과 시간을 모두 줄입니다.

- 다음글쇼핑몰 안전재고는 SKU마다 몇 개로 설정해야 할까? 26.08.24
등록된 댓글이 없습니다.
