가이드
WooCommerce 상품을 대량 등록하는 방법
WooCommerce는 CSV 파일로 수백 개의 상품을 한 번에 가져올 수 있습니다. 이 가이드는 내장 가져오기 도구, 플러그인이나 REST API가 더 적합한 경우, 그리고 처음부터 CSV에 깨끗한 데이터를 담는 방법을 설명합니다.
WooCommerce 관리자 화면에서 상품을 하나씩 추가하는 방식은 작은 쇼핑몰에는 괜찮지만, 공급업체 카탈로그를 이렇게 등록하면 며칠이 걸릴 수 있습니다. WooCommerce에는 상품 CSV 가져오기 도구가 포함되어 있으며, 대규모 또는 반복 작업을 위한 가져오기 플러그인과 API도 있습니다.
가져오기 자체는 어려운 부분이 아닙니다. 어려운 것은 올바른 CSV를 만드는 일입니다. 상품 또는 변형당 하나의 행, 올바른 열, 일관된 속성, 게시할 만한 가치가 있는 설명이 필요합니다.
방법 1: WooCommerce 내장 CSV 가져오기
WooCommerce에는 상품 CSV 가져오기 및 내보내기 도구가 포함되어 있습니다. WordPress 관리자 화면에서 “Products → All Products”로 이동해 “Import”를 선택합니다. CSV를 업로드하고, 열을 WooCommerce 필드에 매핑한 뒤 가져오기를 실행합니다. “Update existing products” 옵션을 선택하면 중복 생성 대신 ID 또는 SKU가 일치하는 상품을 업데이트합니다.
- 먼저 기존 상품 하나를 내보내고 그 파일을 템플릿으로 사용하세요. 스토어가 기대하는 정확한 열 이름을 보여 줍니다.
- 일반적인 열에는 Type, SKU, Name, Published, Short description, Description, Regular price, Categories, Tags, Images, Attribute 1 name / Attribute 1 value(s)가 있습니다.
- 이미지는 URL에서 가져오므로, 가져오기를 실행하는 시점에 공개적으로 접근할 수 있어야 합니다.
- 가변 상품(variable product)에는 “variable” 유형의 부모 행과, 부모를 참조하는 변형당 하나의 행이 필요합니다.
- 매우 큰 파일은 공유 호스팅에서 시간 초과가 날 수 있으므로 수백 행 단위로 나누어 가져오세요.
방법 2: 가져오기 플러그인
서드파티 가져오기 플러그인은 기본 가져오기 도구에 없는 기능을 추가합니다. 공급업체 피드에서 예약 또는 반복 가져오기, XML 지원, 필드 변환 규칙, 매우 큰 파일의 더 나은 처리 등이 그 예입니다. 공급업체가 가격과 재고 파일을 정기적으로 업데이트해서 보낼 때 유용합니다.
플러그인도 구조화된 입력을 전제로 합니다. 공급업체가 피드가 아니라 PDF를 제공한다면, 플러그인이 있어도 PDF를 행으로 바꾸는 작업은 사라지지 않습니다.
방법 3: WooCommerce REST API
개발자와 연동 도구는 한 번의 요청으로 여러 상품을 생성하거나 업데이트하는 배치 엔드포인트를 포함해 WooCommerce REST API로 상품을 생성할 수 있습니다. CSV 단계 없이 상품을 직접 생성하는 자동화 파이프라인과 앱에 적합합니다.
Doc2Shelf가 이 방식을 사용합니다. 검토 후 상세 설명과 요약 설명이 포함된 단순 임시 저장(draft) 상품으로 WooCommerce에 전송하므로, 공개하기 전에 WooCommerce에서 확인할 수 있습니다. 글로벌 필터 속성과 가변 상품은 WooCommerce에서 별도로 설정합니다.
대량 업로드를 위한 제품 데이터 준비
어떤 가져오기 방법을 쓰든 데이터 품질이 결과를 좌우합니다. 가져오기 전에 다음을 확인하세요.
- 모든 상품에 고유한 SKU를 지정하세요. 나중에 업데이트할 때 올바른 상품을 찾는 기준이 됩니다.
- WooCommerce에서 카테고리와 글로벌 속성을 먼저 만든 다음 일관되게 참조하세요.
- 사양을 정규화하세요. 같은 단위, 같은 속성명, 셀당 하나의 값을 사용합니다.
- 공급업체 텍스트를 붙여 넣는 대신 직접 설명을 작성하세요. 마켓플레이스와 검색 엔진은 고유한 문구를 높게 평가합니다.
- 첫 실행은 초안으로 가져오세요. Published를 -1로 설정하고(0으로 설정하면 비공개 상품이 됩니다), 전체를 게시하기 전에 샘플을 검토하세요.
공급업체가 PDF만 보내는 경우
많은 공급업체가 CSV 피드가 아니라 PDF 형태의 데이터 시트와 카탈로그를 제공합니다. 이 경우 병목은 추출입니다. 누군가가 각 PDF를 읽고, 열을 채우고, 설명을 작성해야 합니다.
수동으로 하거나, 도구로 데이터를 추출한 뒤 검토할 수 있습니다. Doc2Shelf는 공급업체 PDF를 읽고 검토용 사양을 추출하며, WooCommerce 상세 설명과 요약 설명 초안을 작성하고, REST API를 통해 상품을 임시 저장 상태로 생성합니다. PDF에서 가져오는 카탈로그의 스프레드시트 단계를 대체합니다.
WooCommerce 가져오기 시 흔한 오류
가져오기가 실패하거나 예상과 다른 결과가 나온다면 먼저 다음을 확인하세요.
- SKU가 중복되거나 누락되어 행이 건너뛰어지거나 상품이 중복 생성되는 경우.
- 잘못된 파일 인코딩: 악센트가 있는 문자가 올바르게 가져와지도록 CSV를 UTF-8로 저장하세요.
- 리디렉션되거나, 로그인이 필요하거나, 용량이 매우 큰 파일을 가리키는 이미지 URL.
- 일관되지 않게 작성된 카테고리 경로(중첩 카테고리는 “Parent > Child” 형식 사용).
- 속성 값이 부모 상품의 속성 값과 일치하지 않는 변형.
WooCommerce 상품 CSV 열 참조
기본 가져오기 도구는 정해진 열 이름 세트를 읽습니다. 자신의 스토어에서 상품 하나를 내보내면 사용 중인 WooCommerce 버전이 요구하는 정확한 헤더를 확인할 수 있으며, 아래 표는 대량 업로드에서 가장 중요한 열을 설명합니다. 필수 열은 Name뿐이며 나머지는 모두 선택 사항이지만, Type, SKU, 가격, 카테고리 없이 카탈로그를 가져오면 나중에 수작업이 많이 남습니다.
Weight와 세 개의 치수 열처럼 헤더에 단위가 있는 열은 스토어 설정에 지정된 단위를 표시하므로, 직접 입력하지 말고 내보낸 파일에서 헤더를 복사하세요. 전용 열이 없는 사용자 지정 데이터는 헤더가 meta:로 시작하고 그 뒤에 필드 키가 오는 열에 넣습니다.
| 열 | 담는 내용 | 예시 | 비고 |
|---|---|---|---|
| ID | 기존 WooCommerce 상품 ID | — | 새 상품은 비워 두세요. 업데이트 가져오기는 ID를 먼저 기준으로 대조합니다. |
| Type | 상품 유형 | simple | variable, variation, grouped, external도 있습니다. 가상 상품과 다운로드 상품은 별도 유형이 아니라 상품에 추가되는 속성입니다. |
| SKU | 고유 상품 코드 | ACME-KTL-17 | 업데이트 시 ID 다음의 두 번째 대조 키입니다. 스토어 내에서 고유해야 합니다. |
| GTIN, UPC, EAN 또는 ISBN | 글로벌 상품 식별자 | 4006381333931 | 기본 필드입니다. WooCommerce 11.2부터 ID와 SKU가 모두 비어 있을 때의 대체 대조 키입니다. |
| Name | 상품 제목 | 스테인리스 스틸 주전자 1.7 L | 유일한 필수 열입니다. |
| Published | 가져온 후의 상태 | -1 | 1 = 게시됨, 0 = 비공개, -1 = 초안, 2 = 검토 대기 중. |
| Regular price / Sale price | 가격 | 49.90 | 통화 기호 없이 숫자만 입력합니다. |
| Stock | 재고 수량 | 25 | 필요에 따라 In stock?, Backorders allowed?와 함께 사용합니다. |
| Weight (unit), Length (unit), Width (unit), Height (unit) | 배송용 무게와 치수 | 1.2 | 헤더에는 kg, cm 등 스토어에 설정된 단위가 표시됩니다. |
| Categories | 상품 카테고리 | Kitchen > Kettles, Gifts | 쉼표로 구분하며 “>”는 하위 카테고리를 나타냅니다. |
| Images | 이미지 URL | https://cdn.example.com/ktl-front.jpg | 쉼표로 구분하며 첫 번째 이미지가 대표 이미지가 됩니다. |
| Parent | 변형(variation) 행의 상위 상품 | ACME-KTL | 상위 상품의 SKU, 또는 id: 뒤에 상위 상품의 ID. |
| Attribute 1 name / Attribute 1 value(s) | 속성과 그 값 | Color / Red, Blue | 속성이 더 있으면 Attribute 2, Attribute 3 등을 추가합니다. |
| Attribute 1 visible / Attribute 1 global | 해당 속성의 플래그 | 1 / 1 | visible은 상품 페이지에 표시하고, global은 스토어 전체 속성을 사용합니다. |
| Attribute 1 default | 옵션 상품의 기본 선택 값 | Red | 상위 상품 행에 설정하세요. |
| meta:supplier_code | 사용자 지정 메타 필드 | D-4471 | meta:로 시작하는 헤더는 모두 사용자 지정 메타로 저장됩니다. |
CSV의 옵션 상품: 상위 행과 변형 행
옵션 상품은 여러 행에 걸쳐 작성합니다. 상품과 제공하는 속성 값을 정의하는 상위 행 하나와, 하나의 조합에 대한 가격, SKU, 재고를 담는 변형 행이 조합마다 하나씩 필요합니다. 상위 행의 Type은 “variable”이고, 각 변형 행의 Type은 “variation”이며 Parent 열에 상위 상품의 SKU 또는 id: 뒤에 ID를 적어 상위 상품을 가리킵니다.
속성 열이 행들을 서로 연결합니다. 상위 행에서는 Attribute 1 value(s)에 상품이 제공하는 모든 값을 쉼표로 구분해 나열합니다. 각 변형 행에는 같은 Attribute 1 name과 그중 정확히 하나의 값이 들어갑니다. 철자와 대소문자가 일치해야 합니다. 상위 상품이 “Red”를 제공하는데 변형이 “red”라고 적으면 사용 가능한 속성 값을 갖지 못할 수 있습니다.
상품 → 속성에서 만든 스토어 전체 속성을 사용하는 경우에는 상위 상품과 그 변형 행의 Attribute 1 global을 1로 설정하세요. 레이어드 내비게이션과 필터 위젯은 이 속성을 기준으로 동작합니다. WooCommerce 11.1부터는 업데이트 가져오기로 이미 존재하는 옵션 상품에 새 변형을 추가할 수도 있으므로, 상위 상품을 다시 만들지 않고 제품군을 확장할 수 있습니다.
- 파일을 확인하기 쉽고 변형이 참조할 때 상위 상품이 이미 존재하도록, 각 상위 행을 해당 변형 행들보다 위에 두세요.
- 모든 변형에 고유한 SKU와 가격을 지정하세요. 가격이 없는 변형은 구매할 수 없습니다.
- 상위 행의 Attribute 1 default를 사용해 기본으로 선택될 옵션을 지정하세요.
| 행 | Type | SKU | Parent | Attribute 1 name | Attribute 1 value(s) |
|---|---|---|---|---|---|
| 상위 상품 | variable | ACME-KTL | — | Color | Red, Blue |
| 변형 1 | variation | ACME-KTL-RED | ACME-KTL | Color | Red |
| 변형 2 | variation | ACME-KTL-BLU | ACME-KTL | Color | Blue |
CSV로 상품 이미지 추가하기
Images 열에는 쉼표로 구분한 이미지 URL을 하나 이상 넣을 수 있습니다. 첫 번째 URL은 대표 이미지가 되고 나머지는 나열한 순서대로 상품 갤러리를 구성합니다. 가져오는 동안 WordPress가 각 파일을 미디어 라이브러리로 다운로드하므로, 모든 URL은 그 시점에 공개적으로 접근할 수 있어야 합니다. 로그인이 필요하거나, 만료되는 공유 링크이거나, 파일 대신 웹 페이지로 리디렉션되어서는 안 됩니다.
이미지는 보통 가져오기에서 가장 오래 걸리는 부분입니다. 이미지 5장씩인 상품 수백 개를 가져오면 다운로드가 천 건이 넘습니다. 이미지는 호스팅하기 전에 크기를 줄이고, IMG_0042.jpg 대신 kettle-red-front.jpg처럼 내용을 알 수 있는 파일명을 쓰며, 큰 카탈로그는 더 작은 파일로 나누세요.
기본 가져오기 도구는 이미지 대체 텍스트(alt text)를 설정할 수 없습니다. 나중에 미디어 라이브러리, REST API, 또는 이를 지원하는 가져오기 확장 기능으로 대체 텍스트를 추가하세요. 변형은 이미지를 하나만 가질 수 있으므로 각 변형 행에는 URL을 최대 하나만 넣으세요.
WooCommerce REST API로 상품 대량 생성하기
가져오기를 반복하거나, 상품 데이터가 이미 다른 시스템에 있거나, 아무도 CSV를 다루지 않아도 되게 하려면 REST API가 더 나은 방법입니다. 상품 배치 엔드포인트(POST /wp-json/wc/v3/products/batch)는 생성, 업데이트, 삭제 작업을 하나의 요청으로 받습니다.
기본적으로 배치 요청 하나는 생성, 업데이트, 삭제를 합쳐 최대 100개 객체로 제한됩니다. 변형, 카테고리, 속성, 속성 용어의 배치 엔드포인트에도 같은 제한이 적용됩니다. 따라서 상품 1,000개 카탈로그는 최소 10번의 요청이 필요하며, 변형을 추가하면 더 늘어납니다.
- WooCommerce → 설정 → 고급 → REST API에서 읽기/쓰기 권한이 있는 REST API 키를 만들거나, 앱이 WooCommerce 인증 화면을 통해 키를 요청하도록 하세요.
- 카테고리, 전역 속성, 속성 용어를 먼저 만들고 각 ID를 기록해 두세요.
- 단순 상품과 상위 상품을 상태를 draft로 설정하여 최대 100개씩 배치로 전송하세요.
- 각 옵션 상품의 변형은 해당 상품의 변형 배치 엔드포인트로 생성하세요.
- 응답에서 항목별 결과를 확인하고 실패한 항목만 다시 시도하세요.
- 관리자 화면에서 초안 샘플을 점검한 뒤 게시하세요.
WooCommerce 상품 대량 업로드 플러그인 또는 방식 선택하기
기본 가져오기 도구로 부족하다면, 기능 목록의 길이가 아니라 내 데이터를 어떻게 처리하는지를 기준으로 가져오기 플러그인이나 확장 기능을 평가하고, 도입하기 전에 스토어의 스테이징 복사본에서 실제 공급업체 파일로 테스트하세요. 아래 표는 네 가지 방식을 비교하며, 이어서 어떤 플러그인에든 물어볼 만한 질문을 정리했습니다.
- 소스 형식: CSV만 지원하는지, XML, 스프레드시트 파일, URL로 가져오는 원격 피드도 지원하는지.
- 예약 실행: 새로운 가격과 재고를 반영하도록 가져오기를 일정에 따라 다시 실행할 수 있는지.
- 매핑과 변환: 가져오는 동안 열 이름 변경, 값 분할, 단위 변환, 가격 규칙 적용이 가능한지.
- 옵션 상품: 상위 상품, 변형, 전역 속성을 안정적으로 만들어 주는지.
- 이미지: 다운로드 방식, 중복 감지 여부, 대체 텍스트 설정 여부.
- 대용량 파일: 긴 가져오기가 시간 초과되지 않도록 백그라운드 또는 분할 처리를 지원하는지.
- 업데이트 규칙: 어떤 키(ID, SKU 또는 GTIN)로 대조하는지, 어떤 필드를 덮어쓸 수 있는지.
| 방식 | 적합한 경우 | 유의할 점 |
|---|---|---|
| 기본 CSV 가져오기 도구 | 스토어 직원이 하는 일회성 가져오기와 대량 업데이트 | 서버 업로드 및 시간 제한, 이미지 대체 텍스트 설정 불가 |
| 가져오기 플러그인 또는 확장 기능 | 반복되는 공급업체 피드, XML 또는 스프레드시트 소스, 예약 업데이트 | 유지 관리하고 호환성을 지켜야 할 플러그인이 하나 더 늘어남 |
| REST API 배치 요청 | 자동화된 파이프라인과 다른 시스템에서의 동기화 | 개발 인력 필요, 기본적으로 배치 요청당 100개 객체 |
| 상품을 대신 만들어 주는 앱 | 공급업체 문서처럼 스프레드시트 밖에서 시작되는 상품 데이터 | 앱이 실제로 설정하는 상품 유형과 필드가 무엇인지 확인 |
가져오기 전 체크리스트와 오류 해결
실패한 가져오기는 대부분 준비 단계를 건너뛴 데서 비롯됩니다. 대규모 가져오기 전에는 매번 체크리스트를 따라 점검하고, 그래도 발생하는 문제는 표를 참고해 진단하세요.
- 데이터베이스를 백업하거나 스토어의 스테이징 복사본에서 가져오기를 실행하세요.
- 기존 상품 하나를 내보내 그 헤더 행을 내 파일에 복사하세요.
- 파일에서 참조하는 카테고리, 전역 속성, 속성 용어를 먼저 만드세요.
- 모든 SKU가 고유한지, 모든 변형의 Parent 값이 존재하는 상위 상품의 SKU와 일치하는지 확인하세요.
- 가격, 재고, 무게, 치수 열에는 숫자만 입력하세요.
- 이미지 URL 몇 개를 시크릿 브라우저 창에서 열어 로그인 없이 불러와지는지 확인하세요.
- Published를 -1로 설정해 상품이 초안으로 들어오게 하세요.
- 파일을 UTF-8 CSV로 저장하세요.
- 10행짜리 테스트 파일을 먼저 가져와 결과를 검토한 뒤, 나머지는 배치로 나누어 가져오세요.
| 문제 | 추정 원인 | 해결 방법 |
|---|---|---|
| 상품이 업데이트되지 않고 중복 생성됨 | “기존 상품 업데이트”가 선택되지 않았거나, ID와 SKU가 스토어와 일치하지 않음 | 옵션을 선택하고, 새로 내보낸 파일에서 ID 또는 SKU를 복사 |
| 업데이트 가져오기에서 일부 행을 건너뜀 | ID 또는 SKU로 일치하는 상품이 없음(11.2부터 GTIN은 둘 다 비어 있을 때만 사용) | 각 행에 기존 상품의 SKU 또는 ID를 추가 |
| 변형이 별도 상품으로 가져와짐 | Type이 variation으로 설정되지 않았거나 Parent 열이 비어 있거나 철자가 틀림 | Type을 “variation”으로 하고 상위 상품의 SKU를 정확히 입력 |
| 이미지가 누락됨 | URL에 로그인이 필요하거나, 리디렉션되거나, 호스트가 다운로드를 차단함 | 이미지를 공개된 직접 URL에 호스팅하고 가져오기를 다시 실행 |
| 업로드 시 파일이 거부됨 | 서버의 최대 업로드 크기보다 큰 파일 | 파일을 나누거나 호스팅 업체에 제한 상향을 요청 |
| 가져오기가 중간에 멈춤 | 서버 시간 또는 메모리 제한에 도달 | 더 작은 파일로 가져오기 |
실제 가져오기 전에 더미 상품으로 테스트하기
작은 더미 파일로 테스트하면 수백 개 상품에 영향을 주기 전에 매핑 실수를 찾아낼 수 있습니다. 헤더가 동일하도록 실제 템플릿으로 만들고, 나중에 찾아서 삭제할 수 있도록 모든 테스트 상품에 “TEST-” SKU 접두사와 “test” 태그 같은 눈에 띄는 표시를 붙이세요.
쉬운 경우만이 아니라 실제 파일에 있는 모든 경우를 포함하세요. 대개 10행 정도면 충분합니다.
- 사용할 예정인 모든 열을 채운 단순 상품 하나.
- 속성 2개와 변형 3개 이상을 가진 옵션 상품 하나.
- 이미지 여러 장의 갤러리가 있는 상품 하나와 이미지가 없는 상품 하나.
- 아직 존재하지 않는 중첩 카테고리에 속한 상품 하나.
- 설명에 악센트 문자, 따옴표, 쉼표가 들어 있는 상품 하나.
- SKU로 기존 상품을 업데이트하는 행 하나.
- 관리자 화면과 스토어 프런트에서 가격, 변형 드롭다운, 이미지 순서, 카테고리 페이지를 확인한 다음, 실제 가져오기 전에 테스트 상품을 삭제하세요.
자주 묻는 질문
- WooCommerce에 상품 대량 업로드 기능이 내장되어 있나요?
- 네. WooCommerce에는 “Products → All Products → Import”에 상품 CSV 가져오기 도구와 이에 대응하는 내보내기 도구가 포함되어 있습니다. 표준 CSV 가져오기에는 플러그인이 필요하지 않습니다.
- WooCommerce에 한 번에 몇 개의 상품을 가져올 수 있나요?
- 가져오기 도구에는 고정된 상품 수 제한이 없지만, 호스팅의 서버 시간 제한과 메모리 한도가 실제로 가능한 범위를 결정합니다. 큰 카탈로그를 수백 행 단위로 나누어 가져오는 것이 일반적인 해결 방법입니다.
- CSV 가져오기로 기존 상품을 업데이트할 수 있나요?
- 네. 가져오기 도구에서 “Update existing products”를 활성화하면 ID 또는 SKU로 기존 상품과 행이 매칭되고, 포함한 열만 업데이트됩니다.
- PDF에서 WooCommerce로 상품을 바로 가져올 수 있나요?
- 기본 가져오기 도구는 CSV를 전제로 하므로 불가능합니다. 먼저 수동으로 또는 추출 도구로 PDF에서 제품 데이터를 추출한 다음, CSV로 가져오거나 REST API로 상품을 생성해야 합니다.
- WooCommerce 상품 CSV에는 어떤 열이 필요한가요?
- 기본 가져오기 도구에서 필수인 열은 Name뿐입니다. 쓸 만한 카탈로그를 만들려면 최소한 Type, SKU, Published, Regular price, Categories, Images, Description을 포함하세요. 사용 중인 버전이 요구하는 정확한 헤더 이름은 스토어에서 상품 하나를 내보내면 알 수 있습니다.
- CSV로 옵션 상품을 가져오려면 어떻게 하나요?
- 모든 속성 값을 나열한 Type이 “variable”인 상위 행을 하나 추가한 다음, 변형마다 Type이 “variation”이고 Parent 열에 상위 상품의 SKU가 있으며 속성 값이 하나이고 고유한 SKU와 가격을 가진 행을 하나씩 추가하세요.
- CSV 가져오기 도구로 상품 이미지와 대체 텍스트도 가져올 수 있나요?
- 이미지는 가능합니다. Images 열에 공개 이미지 URL을 쉼표로 구분해 나열하고 대표 이미지를 맨 앞에 두세요. 대체 텍스트는 불가능합니다. 기본 가져오기 도구는 이를 설정할 수 없으므로 나중에 추가하거나 REST API 또는 확장 기능을 사용하세요.
- WooCommerce REST API 요청 한 번으로 몇 개의 상품을 만들 수 있나요?
- 배치 엔드포인트는 기본적으로 요청당 생성, 업데이트, 삭제를 합쳐 최대 100개 객체를 받습니다. 더 큰 카탈로그는 여러 번의 배치 요청으로 나누어 보냅니다.